Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- import copy
- from Zdarzenie import Zdarzenie
- from matplotlib import pyplot as plt
- def losuj(czas):
- return random.uniform(20,30) + czas
- def main():
- czasy = []
- wartosci_bufora = []
- wartosci_pasma = []
- przebieg = open("przebieg.txt", "w")
- high = 10
- low = 1
- wielkosc_paczki = 4.5
- czas_chwilowy = 0
- calkowity_czas = 100
- czas_rozpoczecia = 0
- bufor = 0
- pasmo = high
- zdarzenia = []
- zdarzenia_strumien = Zdarzenie(losuj(czas_chwilowy), "Zmiana strumienia")
- zdarzenia.append(zdarzenia_strumien)
- zdarzenie_zmien = Zdarzenie(czas_chwilowy + (wielkosc_paczki/pasmo), "Zmiana bufora")
- zdarzenia.append(zdarzenie_zmien)
- przebieg.write(str(int(czas_chwilowy * 100)) + " " + str(pasmo) + " " + str(int(bufor*100)) + "\n")
- czasy.append(int(czas_chwilowy * 100))
- wartosci_pasma.append(pasmo)
- wartosci_bufora.append(bufor)
- while czas_chwilowy < calkowity_czas:
- zdarzenia.sort(key=lambda x: x.czas, reverse=False)
- zdarzenie = Zdarzenie(zdarzenia[0].czas, zdarzenia[0].typ)
- if zdarzenie.typ == "Zmiana bufora":
- czas_rozpoczecia = czas_chwilowy
- czas_chwilowy = zdarzenie.czas
- if zdarzenie.typ == "Zmiana strumienia":
- if pasmo == high:
- pasmo = low
- else:
- pasmo = high
- zdarzenia_strumien = Zdarzenie(losuj(czas_chwilowy), "Zmiana strumienia")
- zdarzenia.append(zdarzenia_strumien)
- elif zdarzenie.typ == "Zmiana bufora":
- zdarzenie_zmien = Zdarzenie(czas_chwilowy + (wielkosc_paczki/pasmo), "Zmiana bufora")
- zdarzenia.append(zdarzenie_zmien)
- bufor = bufor + 1
- bufor = bufor - (czas_chwilowy - czas_rozpoczecia)
- if bufor > 30: bufor = 30
- if bufor < 0: bufor = 0
- przebieg.write(str(int(czas_chwilowy * 100)) + " " + str(pasmo) + " " + str(int(bufor*100)) + "\n")
- czasy.append(int(czas_chwilowy * 100))
- wartosci_pasma.append(pasmo)
- wartosci_bufora.append(bufor)
- zdarzenia.pop(0)
- plt.plot(czasy, wartosci_pasma, "-b", label="Pasmo")
- plt.plot(czasy, wartosci_bufora, "-r", label="Bufor")
- plt.xlabel('Czas')
- plt.ylabel('Wartosc')
- plt.legend(loc="upper left")
- plt.show()
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement