Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.80 KB | None | 0 0
  1. import random
  2. from random import shuffle
  3. from math import exp
  4. import datetime
  5.  
  6. start = datetime.datetime.now()
  7.  
  8.  
  9. def czytanie_z_pliku(plik):
  10. mega_maszyna = []
  11.  
  12. file_handle = open(plik, 'r')
  13.  
  14. lines_list = file_handle.readlines()
  15.  
  16. zadania, maszyna = (int(val) for val in lines_list[0].split())
  17. globals()['zadania'] = zadania
  18. globals()['maszyna'] = maszyna
  19.  
  20. mega_kursor = [0] * maszyna
  21. globals()['mega_kursor'] = mega_kursor
  22.  
  23. dane = [[int(val) for val in line.split()] for line in lines_list[1:]]
  24. globals()['dane'] = dane
  25.  
  26. for i in range(1, maszyna + 1):
  27. mini_maszyna = [0] * zadania
  28. globals()['M%s' % i] = [0] * zadania
  29. globals()['K%s' % i] = 0
  30. j = i
  31. for i in range(0, zadania):
  32. mini_maszyna[i] = dane[i][j - 1]
  33. globals()['M%s' % j][i] = dane[i][j - 1]
  34. mega_maszyna.append(mini_maszyna)
  35. globals()['mega_maszyna'] = mega_maszyna
  36.  
  37.  
  38. def liczenie_mega_kursora(dane):
  39. mega_kursor = [0] * maszyna
  40.  
  41. for i in range(0, len(dane)):
  42. mega_kursor[0] = mega_maszyna[0][dane[i]] + mega_kursor[0]
  43.  
  44. for j in range(0, maszyna):
  45. if j != (maszyna - 1):
  46. if mega_kursor[j] >= mega_kursor[j + 1]:
  47. mega_kursor[j + 1] = mega_kursor[j] + mega_maszyna[j + 1][dane[i]]
  48. else:
  49. mega_kursor[j + 1] = mega_kursor[j + 1] + mega_maszyna[j + 1][dane[i]]
  50.  
  51. c_max = max(mega_kursor)
  52. globals()['c_max'] = c_max
  53.  
  54. globals()['c_max'] = c_max
  55.  
  56.  
  57. def inicjalizacja():
  58. T = 40
  59. kolejnosc = [5 , 2, 16, 7 , 18 , 14, 11, 8 , 9 ,15 , 0 , 1 ,12 , 4 , 6 ,17, 3 , 10, 19, 13 ]
  60.  
  61. #list(range(0, zadania))
  62. #shuffle(kolejnosc)
  63. print("----------Inicjalizacja ----------")
  64. print(kolejnosc)
  65. print("Temperatura to: ", T)
  66. globals()['kolejnosc'] = kolejnosc
  67. globals()['T'] = T
  68.  
  69.  
  70. def generowanie_ruchu():
  71. print("----------Stary Ruch----------")
  72. r = random.randint(2, zadania) - 1
  73. kolejnosc_temp1 = kolejnosc[::]
  74. kolejnosc_temp1[0], kolejnosc_temp1[r] = kolejnosc_temp1[r], kolejnosc_temp1[0]
  75. print(kolejnosc_temp1) # 1111
  76. print("Losowy numer zamiany to", r)
  77. liczenie_mega_kursora(kolejnosc_temp1)
  78. print("cmax to:", c_max)
  79. c_max_stare = c_max
  80.  
  81. print("----------Nowy Ruch----------")
  82. r = random.randint(2, zadania) - 1
  83. kolejnosc_temp2 = kolejnosc[::]
  84. kolejnosc_temp2[0], kolejnosc_temp2[r] = kolejnosc_temp2[r], kolejnosc_temp2[0]
  85. print(kolejnosc_temp2) # 1111
  86. print("Losowy numer zamiany to", r)
  87. liczenie_mega_kursora(kolejnosc_temp2)
  88. print("cmax to:", c_max)
  89. c_max_nowe = c_max
  90.  
  91. globals()['kolejnosc_temp1'] = kolejnosc_temp1
  92. globals()['kolejnosc_temp2'] = kolejnosc_temp2
  93. globals()['c_max_nowe'] = c_max_nowe
  94. globals()['c_max_stare'] = c_max_stare
  95.  
  96.  
  97. def wykonanie_lub_nie_ruchu(kolejnosc, T):
  98. if c_max_nowe < c_max_stare:
  99. p1 = 1
  100. p2 = 0
  101. else:
  102. p1 = 0
  103. p2 = exp((c_max_stare - c_max_nowe) / T)
  104.  
  105. if p1 >= 1:
  106. kolejnosc = kolejnosc_temp2[::]
  107.  
  108. elif p2 >= 1:
  109. kolejnosc = kolejnosc_temp1[::]
  110.  
  111. T = T * 0.95
  112.  
  113. print("----------Wykonanie Ruchu----------")
  114.  
  115. liczenie_mega_kursora(kolejnosc)
  116. print("cmax to:", c_max)
  117.  
  118. print("Temperatura to: ", T)
  119. print("Po wykonaniu ruchu kolejnosc to:", kolejnosc)
  120.  
  121. globals()['kolejnosc'] = kolejnosc
  122. globals()['T'] = T
  123.  
  124.  
  125. # ----------------------------------DEFINICJE----------------------------------
  126.  
  127.  
  128. czytanie_z_pliku("data.txt")
  129.  
  130. inicjalizacja()
  131.  
  132. for i in range(0, 20):
  133. generowanie_ruchu()
  134. wykonanie_lub_nie_ruchu(kolejnosc, T)
  135.  
  136. duration = datetime.datetime.now() - start
  137. print("Czas obliczen to:", duration)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement