Advertisement
Guest User

Untitled

a guest
Nov 27th, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.74 KB | None | 0 0
  1. import random
  2.  
  3. class RealTimeProcess:
  4. def __init__(self, deadline, polozenie):
  5. self.deadline = deadline
  6. self.polozenie = polozenie
  7. def __str__(self):
  8. return str(self.deadline)
  9.  
  10. class FCFS:
  11. pamiec = []
  12. suma = 0
  13. iterator = 0
  14. next = 0
  15.  
  16. def __init__(self, Lista):
  17.  
  18. self.pamiec = Lista[:]
  19. self.next = self.pamiec[0]
  20.  
  21.  
  22. def Symulacja(self, start):
  23.  
  24. ilosc = random.randint(5,20)
  25. # ilosc = 5
  26.  
  27. real_time = []
  28.  
  29. l = str(start)
  30. prev = start
  31.  
  32. isEmpty = lambda List: len(List) is 0
  33. print 'Pozycja startowa: ' + str(start)
  34. while True:
  35. try:
  36. if(ilosc > 0):
  37. if((self.iterator % random.randint(1,1)) == 0): ### if((self.iterator % random.randint(2,5)) == 0):
  38. real_time.append(RealTimeProcess(random.randint(1,4), random.randint(1,179)))
  39. #real_time.sort(key=lambda app: app.deadline)
  40. ilosc -= 1
  41. if(not isEmpty(real_time)):
  42. self.pamiec.insert(self.iterator, real_time[0].polozenie)
  43. #print str(real_time[0].polozenie) + " " + str( real_time[0].deadline)
  44. l += " --real time-"
  45. prev = self.next
  46. self.next = self.pamiec[self.iterator]
  47. del real_time[0]
  48.  
  49. self.suma += abs(self.next - prev)
  50. l += "---> " + str(self.pamiec[self.iterator])
  51. prev = self.next
  52. self.next = self.pamiec[self.iterator]
  53. self.iterator += 1
  54.  
  55.  
  56.  
  57.  
  58. except IndexError:
  59. print l
  60. print self.suma
  61. break
  62.  
  63.  
  64.  
  65. class SSTF:
  66.  
  67. Lista_blokow = []
  68. Sciezka = 0
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76. def NajkrotszaSciezka(self, Lista, elem):
  77.  
  78. najkrotsza = 361
  79. elem_min = Lista[0]
  80. odleglosc = 0
  81.  
  82. for e in Lista:
  83. wynik = abs(elem-e)
  84. if(wynik < najkrotsza):
  85. najkrotsza = wynik
  86. elem_min = e
  87. self.Sciezka = najkrotsza
  88. return elem_min
  89.  
  90.  
  91. def __init__(self, Lista):
  92. self.Lista_blokow = Lista
  93.  
  94. def Symulacja(self, start):
  95. wynik = 0
  96. l = str(start)
  97. prev = start
  98. ilosc = random.randint(5,20)
  99. isEmpty = lambda List: len(List) is 0
  100.  
  101. real_time = []
  102.  
  103. while True:
  104. try:
  105. if(ilosc > 0):
  106. if((1 % random.randint(1,1)) == 0): ### if((self.iterator % random.randint(2,5)) == 0):
  107. real_time.append(RealTimeProcess(random.randint(1,4), random.randint(1,179)))
  108. #real_time.sort(key=lambda app: app.deadline)
  109. ilosc -= 1
  110. if(not isEmpty(real_time)):
  111. self.Lista_blokow.insert(0, real_time[0].polozenie)
  112. #print str(real_time[0].polozenie) + " " + str( real_time[0].deadline)
  113. l += " --real time-"
  114. prev = self.NajkrotszaSciezka(self.Lista_blokow, start)
  115. del real_time[0]
  116. wynik += abs(start - self.NajkrotszaSciezka(self.Lista_blokow, start))
  117. prev = self.NajkrotszaSciezka(self.Lista_blokow, start)
  118. l += "--" + str(self.Sciezka) + "--> " + str(self.NajkrotszaSciezka(self.Lista_blokow, start))
  119. start = self.NajkrotszaSciezka(self.Lista_blokow, start)
  120. del self.Lista_blokow[self.Lista_blokow.index(start)]
  121.  
  122. except IndexError:
  123. print l
  124. print "Wynik: " + str(wynik)
  125. break
  126.  
  127.  
  128.  
  129. class SCAN:
  130.  
  131. def CzyRealTime(self):
  132. if random.choice(True, False):
  133. return random.randint(1,180)
  134.  
  135. def Symulacja(self, start, Lista):
  136.  
  137. Bloki_malejace = [bl for bl in Lista if bl < start]
  138. Bloki_rosnace = [bl for bl in Lista if bl > start]
  139.  
  140.  
  141.  
  142.  
  143.  
  144. prev1 = 0
  145. prev2 = 0
  146.  
  147. wynik = 0
  148.  
  149. odrzucone = []
  150.  
  151. l = str(start)
  152. l2 = str(0)
  153.  
  154. Posortuj = lambda Lista : Lista.sort()
  155. ZwrocElem = lambda (Lista, x) : Lista[Lista.indeks(x)]
  156.  
  157. poczatek = 0
  158.  
  159. for bl in reversed(Bloki_malejace[poczatek:]):
  160. wynik += abs(prev1 - bl)
  161. if self.CzyRealTime:
  162. if self.CzyRealTime < prev1:
  163. Bloki_malejace.append(self.CzyRealTime)
  164. Posortuj(Bloki_malejace)
  165. else:
  166. odrzucone.append(CzyRealTime)
  167. l += "---> " + str(bl)
  168. prev1 = bl
  169. del Bloki_malejace[Zwroc
  170. for bl in Bloki_rosnace:
  171. wynik += abs(prev2 - bl)
  172. if self.CzyRealTime:
  173. if self.CzyRealTime < prev2:
  174. Bloki_rosnace.append(self.CzyRealTime)
  175. Posortuj(Bloki_malejace)
  176. else:
  177. odrzucone.append(CzyRealTime)
  178. l2 += "---> " + str(bl)
  179. prev2 = bl
  180. print l + "---> " + l2
  181. print wynik
  182.  
  183. class C_SCAN:
  184. def Symulacja(self, start, Lista):
  185. Bloki = Lista
  186. Bloki.sort()
  187. Bloki.reverse()
  188. l = str(start)
  189. l2 = ""
  190. prev = start
  191. prev1 = Bloki[0]
  192. wynik = 0
  193.  
  194. for bl in Bloki:
  195. if(bl < start):
  196. wynik += abs(prev - bl)
  197. l += "---> " + str(bl)
  198. prev = bl
  199. if(bl > start):
  200. wynik += abs(prev1 - bl)
  201. l2 += "---> " + str(bl)
  202. prev1 = bl
  203. print l + l2
  204. print wynik
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213. Lista = []
  214. start = 54
  215. for i in range(10):
  216. liczba = random.randint(1,179)
  217. if liczba not in Lista and liczba != start:
  218. Lista.append(liczba)
  219. else:
  220. i -= 1
  221.  
  222. print "Lista: ", Lista
  223.  
  224. #
  225. x = SSTF(Lista)
  226. x.Symulacja(start)
  227.  
  228. #x = FCFS(Lista)
  229. #x.Symulacja(25)
  230.  
  231. #y = SCAN()
  232. #y.Symulacja(start, Lista)
  233.  
  234. #y = C_SCAN()
  235. #y.Symulacja(start, Lista)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement