Advertisement
Guest User

Untitled

a guest
Nov 24th, 2014
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.82 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.          
  8. class FCFS:
  9.         pamiec = []
  10.         suma = 0
  11.         iterator = 0
  12.         next = 0
  13.  
  14.         def __init__(self, Lista):
  15.  
  16.             self.pamiec = Lista[:]
  17.             self.next = self.pamiec[0]
  18.              
  19.  
  20.         def Symulacja(self, start):
  21.  
  22.                 ilosc = random.randint(5,20)
  23.                # ilosc = 5
  24.  
  25.                 real_time = []
  26.  
  27.                 l = str(start)
  28.                 prev = start
  29.                
  30.                 print 'Pozycja startowa: ' + str(start)
  31.                 while True:
  32.                         try:  
  33.                             if(ilosc > 0):
  34.                                if((self.iterator % random.randint(1,1)) == 0): ### if((self.iterator % random.randint(2,5)) == 0):
  35.                                    real_time.append(random.randint(1,180))
  36.                                    ilosc -= 1
  37.                             if(len(real_time) > 0):
  38.                                self.pamiec.insert(self.iterator, real_time[0])
  39.                                print real_time[0]
  40.                                l += " --real time-"
  41.                                prev = self.next
  42.                                self.next = self.pamiec[self.iterator]
  43.                                del real_time[0]
  44.  
  45.                             self.suma += abs(self.next - prev)                            
  46.                             l += "---> " + str(self.pamiec[self.iterator])
  47.                             prev = self.next
  48.                             self.next = self.pamiec[self.iterator]
  49.                             self.iterator += 1
  50.  
  51.                                
  52.                                
  53.  
  54.                         except IndexError:
  55.                                 print l
  56.                                 print self.suma
  57.                                 break
  58.  
  59.  
  60.  
  61. class SSTF:
  62.  
  63.     Lista_blokow = []
  64.     Sciezka = 0
  65.  
  66.     def NajkrotszaSciezka(self, Lista, elem):
  67.  
  68.         najkrotsza = 361
  69.         elem_min = Lista[0]
  70.         odleglosc = 0
  71.  
  72.         for e in Lista:
  73.             wynik = abs(elem-e)
  74.             if(wynik < najkrotsza):
  75.                 najkrotsza = wynik
  76.                 elem_min = e
  77.         self.Sciezka = najkrotsza
  78.         return elem_min
  79.  
  80.    
  81.     def __init__(self, Lista):
  82.         self.Lista_blokow = Lista
  83.  
  84.     def Symulacja(self, start):
  85.         wynik = 0
  86.         l = str(start)
  87.         prev = start
  88.  
  89.         while True:
  90.             try:
  91.                 wynik += abs(start - self.NajkrotszaSciezka(self.Lista_blokow, start))
  92.                 prev = self.NajkrotszaSciezka(self.Lista_blokow, start)
  93.                 l += "--" + str(self.Sciezka) + "--> " + str(self.NajkrotszaSciezka(self.Lista_blokow, start))
  94.                 start = self.NajkrotszaSciezka(self.Lista_blokow, start)
  95.                 del self.Lista_blokow[self.Lista_blokow.index(start)]
  96.                
  97.             except IndexError:
  98.                 print l
  99.                 print "Wynik: " + str(wynik)
  100.                 break
  101.  
  102.  
  103.  
  104. class SCAN:
  105.  
  106.     def Symulacja(self, start, Lista):
  107.  
  108.         Bloki_malejace = [bl for bl in Lista if bl < start]
  109.         Bloki_rosnace = [bl for bl in Lista if bl > start]
  110.  
  111.         prev1 = 0
  112.         prev2 = 0
  113.  
  114.         wynik = 0
  115.  
  116.         l = str(start)
  117.         l2 = str(0)
  118.  
  119.         Bloki_malejace.sort()
  120.         Bloki_rosnace.sort()
  121.  
  122.         for bl in reversed(Bloki_malejace):
  123.             wynik += abs(prev1 - bl)
  124.             l += "---> " + str(bl)
  125.             prev1 = bl
  126.         for bl in Bloki_rosnace:
  127.             wynik += abs(prev2 - bl)
  128.             l2 += "---> " + str(bl)
  129.             prev2 = bl
  130.         print l + "---> " + l2
  131.         print wynik
  132.  
  133. class C_SCAN:
  134.      def Symulacja(self, start, Lista):
  135.         Bloki = Lista
  136.         Bloki.sort()
  137.         Bloki.reverse()
  138.         l = str(start)
  139.         l2 = ""
  140.         prev = start
  141.         prev1 = Bloki[0]
  142.         wynik = 0
  143.  
  144.         for bl in Bloki:
  145.             if(bl < start):
  146.                 wynik += abs(prev - bl)
  147.                 l += "---> " + str(bl)
  148.                 prev = bl
  149.             if(bl > start):
  150.                 wynik += abs(prev1 - bl)
  151.                 l2 += "---> " + str(bl)
  152.                 prev1 = bl
  153.         print l + l2
  154.         print wynik
  155.  
  156.  
  157.        
  158.  
  159.  
  160.  
  161.  
  162.  
  163. Lista = []
  164. start = 54
  165. for i in range(10):
  166.     liczba = random.randint(1,179)
  167.     if liczba not in Lista and liczba != start:
  168.         Lista.append(liczba)
  169.     else:
  170.         i -= 1
  171.  
  172. print "Lista: ", Lista
  173.  
  174. #
  175. #x = SSTF(Lista)
  176. #x.Symulacja(91)
  177.  
  178. x = FCFS(Lista)
  179. x.Symulacja(25)
  180.  
  181. #y = SCAN()
  182. #y.Symulacja(start, Lista)
  183.  
  184. #y = C_SCAN()
  185. #y.Symulacja(start, Lista)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement