Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.33 KB | None | 0 0
  1. K2MIN = 9999999
  2. K1 = 0
  3. K2 = 0
  4.  
  5. """ Dane dla dwoch maszyn"""
  6. #M1 = [5, 6, 4, 2, 1]
  7. #M2 = [1, 2, 3, 6, 7]
  8.  
  9.  
  10.  
  11. #pobieranie danych z pliku
  12. file_handle = open('data.txt', 'r')
  13.  
  14. lines_list = file_handle.readlines()
  15.  
  16. pakiet, maszyna = (int(val) for val in lines_list[0].split())
  17.  
  18. dane = [[int(val) for val in line.split()] for line in lines_list[1:]]
  19.  
  20.  
  21.  
  22. for i in range(1, maszyna+1):
  23. globals()['M%s' % i] = [None]*pakiet
  24. j=i
  25. for i in range(0, pakiet):
  26. globals()['M%s' % j][i]=dane[i][j-1]
  27.  
  28.  
  29. johnson = [None]*len(M1)
  30. koniec=(len(M1)-1)
  31. poczatek=0
  32.  
  33. """
  34. ########### Permutacje ##############
  35.  
  36. # definicja funkcji permutacji
  37. def permute(xs, low=0):
  38. if low + 1 >= len(xs):
  39. yield xs
  40. else:
  41. for M1 in permute(xs, low + 1):
  42. yield M1
  43. for i in range(low + 1, len(xs)):
  44. xs[low], xs[i] = xs[i], xs[low]
  45. for M1 in permute(xs, low + 1):
  46. yield M1
  47. xs[low], xs[i] = xs[i], xs[low]
  48. # koniec definicji funkcji permutacji
  49.  
  50.  
  51. for p in permute([0, 1, 2, 3, 4]):
  52. K2 = 0
  53. K1 = 0
  54. M11 = [M1[p[0]], M1[p[1]], M1[p[2]], M1[p[3]], M1[p[4]]]
  55. M21 = [M2[p[0]], M2[p[1]], M2[p[2]], M2[p[3]], M2[p[4]]]
  56.  
  57. for i in range(0, 5):
  58. K1 = M11[i] + K1
  59. if K1 >= K2:
  60. K2 = K1 + M21[i]
  61. else:
  62. K2 = K2 + M21[i]
  63. if K2MIN > K2:
  64. K2MIN = K2
  65. #print("UWAGA NOWE NAJMNIEJSZE K2:", K2 )
  66. #print(p)
  67. print("Dla permutacji ",p, "czas calkowity to ", K2)
  68. print("Najkrotszy czas ", K2MIN)
  69.  
  70. """
  71.  
  72.  
  73. """
  74. ########### Algorytm Johnsona ##############
  75.  
  76.  
  77. for i in range(0,5):
  78. min1 = min(M1)
  79. min2 = min(M2)
  80.  
  81. minA=min(min1,min2)
  82.  
  83. for i in range(0,len(M1)):
  84. if M1[i] == minA:
  85. johnson[poczatek]=i
  86. poczatek+=1
  87. break
  88.  
  89. elif M2[i] == minA and min1 != min2:
  90. johnson[koniec]=i
  91. koniec-=1
  92. break
  93.  
  94. M1[i] = 999999
  95. M2[i] = 999999
  96.  
  97. print(M1)
  98. print(M2)
  99. print("-----------")
  100.  
  101. print("Tabela dla algorytmu Johnsona ", johnson)
  102.  
  103. M1 = [5, 6, 4, 2, 1]
  104. M2 = [1, 2, 3, 6, 7]
  105.  
  106. M1k = [M1[johnson[0]], M1[johnson[1]], M1[johnson[2]], M1[johnson[3]], M1[johnson[4]]]
  107. M2k = [M2[johnson[0]], M2[johnson[1]], M2[johnson[2]], M2[johnson[3]], M2[johnson[4]]]
  108.  
  109. for i in range(0, 5):
  110. K1 = M1k[i] + K1
  111. if K1 >= K2:
  112. K2 = K1 + M2k[i]
  113. else:
  114. K2 = K2 + M2k[i]
  115. if K2MIN > K2:
  116. K2MIN = K2
  117.  
  118. print("-------------------------------------")
  119. print("Czas rozwiazania optymalnego", K2MIN)
  120.  
  121. """
  122.  
  123. ########## Algorytm Johnsona dla 3 maszyn ##########
  124.  
  125. K3MIN = 9999999
  126. K1 = 0
  127. K2 = 0
  128. K3 = 0
  129.  
  130.  
  131. johnson = [None]*len(M1)
  132. koniec=(len(M1)-1)
  133. poczatek=0
  134.  
  135. M12 = [None]*len(M1)
  136. M23 = [None]*len(M1)
  137.  
  138. for i in range(0, len(M1)):
  139. M12[i] = M1[i]+M2[i]
  140. M23[i] = M2[i]+M3[i]
  141. print(M12)
  142. print(M23)
  143.  
  144.  
  145. for i in range(0,len(M1)):
  146. min1 = min(M12)
  147. min2 = min(M23)
  148.  
  149. minA=min(min1,min2)
  150.  
  151. for i in range(0,len(M12)):
  152. if M12[i] == minA:
  153. johnson[poczatek]=i
  154. poczatek+=1
  155. break
  156.  
  157. elif M23[i] == minA and min1 != min2:
  158. johnson[koniec]=i
  159. koniec-=1
  160. break
  161.  
  162. M12[i] = 999998
  163. M23[i] = 999998
  164. print(M12)
  165. print(M23)
  166. print("---------------------")
  167.  
  168.  
  169. file_handle = open('data.txt', 'r')
  170. lines_list = file_handle.readlines()
  171. pakiet, maszyna = (int(val) for val in lines_list[0].split())
  172. dane = [[int(val) for val in line.split()] for line in lines_list[1:]]
  173.  
  174.  
  175. for i in range(1, maszyna+1):
  176. globals()['M%s' % i] = [None]*pakiet
  177. j=i
  178. for i in range(0, pakiet):
  179. globals()['M%s' % j][i]=dane[i][j-1]
  180.  
  181.  
  182. print("Tabela dla algorytmu Johnsona ", johnson)
  183.  
  184. M1k = [M1[johnson[0]], M1[johnson[1]], M1[johnson[2]], M1[johnson[3]]]
  185. M2k = [M2[johnson[0]], M2[johnson[1]], M2[johnson[2]], M2[johnson[3]]]
  186. M3k = [M3[johnson[0]], M3[johnson[1]], M3[johnson[2]], M3[johnson[3]]]
  187.  
  188. for i in range(0, len(M1)):
  189. K1 = M1k[i] + K1
  190. if K1 >= K2:
  191. K2 = K1 + M2k[i]
  192. else:
  193. K2 = K2 + M2k[i]
  194. if K2 >= K3:
  195. K3 = K2 + M3k[i]
  196. else:
  197. K3 = K3 + M3k[i]
  198. if K3MIN > K3:
  199. K3MIN = K3
  200.  
  201. print("-------------------------------------")
  202. print("Czas rozwiazania optymalnego", K3MIN)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement