background image

 

Wojskowa Akademia Techniczna 

im. Jarosława Dąbrowskiego 

 

 

Sprawozdanie z projektu 

 

Temat: Symulacja działania sieci SMO 

 

 

 

Przedmiot: Podstawy symulacji 

Prowadzący: dr inż. Jarosław Rulka 

Wykonał: Zachwieja Cezary 

Grupa: I7G2S1 

 

background image

Napisać program symulujący działanie sieci SMO jak na rysunku: 

 
Przy realizacji zadania należy przyjąć następujące dane z listy przedstawionej poniżej: 
a)

 

rozkład zmiennych T

j

: (nrDz + i) mod 6 + 1; 

b)

 

rozkład zmiennych O

i

: (nrDz + i + 1) mod 6 + 1; 

c)

 

L

i

: (nrDz + i) mod 2 + 1; 

d)

 

AL

i

: (nrDz + i + 2) mod 3 + 1; 

e)

 

R

j

 = (nrDz + i + 5) mod 3 + 1; 

f)

 

M

i

 = (nrDz + i + 2) mod 4 + 1; 

g)

 

Blokowanie zgłoszeń 1. SMO; 

h)

 

Klienci niecierpliwi w SMO

i

 : N

i

 = (nrDz + i)  mod 4 (ograniczony czas oczekiwania na rozpoczęcie obsługi); 

gdzie: 

i – numer SMO; 

j – numer strumienia; 

T

j

 – zmienna losowa oznaczająca czas pomiędzy kolejnymi napływami zgłoszeń do systemu; 

O

i

 – zmienna losowa oznaczająca czas obsługi pojedynczego zgłoszenia w gnieździe; 

N

i

 – zmienna losowa oznaczająca czas niecierpliwości zgłoszenia (gdy i = 0 => zgłoszenia cierpliwe); 

R

j

 – zmienna losowa oznaczająca wielkość paczki zgłoszeń (wchodzących w tej samej chwili) j-tego strumienia; 

p

k

 – prawdopodobieństwa przemieszczenia się zgłoszenia po danym łuku; 

L

i

 – długość kolejki i-tego SMO; 

AL.

i

 – algorytmy kolejek (w przypadku istnienia kolejki z priorytetami należy przyjąć, że zgłoszenia posiadają 

priorytety); 

1.

 

Rozkłady zmiennych losowych: 
1.1.

 

Wykładniczy 

1.2.

 

Erlanga 

1.3.

 

Normalny 

1.4.

 

Jednostajny 

1.5.

 

Trókątny 

1.6.

 

Weibulla 

2.

 

Długości kolejek pojedynczych SMO 
2.1.

 

ograniczone (możliwe straty) 

2.2.

 

nieograniczone 

3.

 

Algorytm kolejek: 
3.1.

 

FIFO 

3.2.

 

LIFO 

3.3.

 

Z priorytetami 

4.

 

Liczba stanowisk obsługi w gniazdach (1-M) 

5.

 

Ilość zgłoszeń jednocześnie napływających do systemu (1-R) 

Pozostałe dane należy określać na początku symulacji. 

SMO 

SMO 

O

O

SMO 

O

T

p

1-p

p

p

background image

Zgodnie z moim numerem (20) na liście  studentów grupy wyliczyłem moje 
parametry zadania: 

 

Generator z rozkładem: jednostajnym 

 

Gniazdo1 z rozkładem: trójkątnym, 4 kanały 
Gniazdo2 z rozkładem: Weibulla, 1 kanały 
Gniazdo3 z rozkładem: wykładniczym, 2 kanał 

 

Kolejka1: z priorytetami, nieograniczona (możliwe straty) 
Kolejka2: FIFO, ograniczona (możliwe straty) 
Kolejka3: LIFO, nieograniczona 
 

 

Charakterystyki użytych rozkładów: 
- rozkład trójkątny: 

Gęstość: 

 

 

 

 

- rozkład Weibulla: 

Gęstość: 

 

 

Dystrybuanta: 

 

 
 
 

P(x)= 

background image

- rozkład wykładniczy: 

Gęstość: 

 

 

Dystrybuanta: 

 

 

- rozkład jednostajny: 

Gęstość: 

 

 

Dystrybuanta: 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

background image

Wynik działania programu 

 

0.085306 [*] Stworzono nowego Studenta Nr 1. 
0.085306 [+] Student Nr 1 zostal zakolejkowany do kolejki 1 
0.085306 [@] Rozpoczeto obsluge Studenta Nr 1 w okienku 1, stan stanowiska:1 
0.189884 [*] Stworzono nowego Studenta Nr 2. 
0.189884 [+] Student Nr 2 zostal zakolejkowany do kolejki 1 
0.189884 [@] Rozpoczeto obsluge Studenta Nr 2 w okienku 1, stan stanowiska:2 
0.286458 [*] Stworzono nowego Studenta Nr 3. 
0.286458 [+] Student Nr 3 zostal zakolejkowany do kolejki 1 
0.286458 [@] Rozpoczeto obsluge Studenta Nr 3 w okienku 1, stan stanowiska:3 
0.381661 [*] Stworzono nowego Studenta Nr 4. 
0.381661 [+] Student Nr 4 zostal zakolejkowany do kolejki 1 
0.492278 [*] Stworzono nowego Studenta Nr 5. 
0.492278 [+] Student Nr 5 zostal zakolejkowany do kolejki 1 
0.612886 [*] Stworzono nowego Studenta Nr 6. 
0.612886 [+] Student Nr 6 zostal zakolejkowany do kolejki 1 
0.713008 [*] Stworzono nowego Studenta Nr 7. 
0.713008 [+] Student Nr 7 zostal zakolejkowany do kolejki 1 
0.817772 [*] Stworzono nowego Studenta Nr 8. 
0.817772 [+] Student Nr 8 zostal zakolejkowany do kolejki 1 
0.924585 [*] Stworzono nowego Studenta Nr 9. 
0.924585 [+] Student Nr 9 zostal zakolejkowany do kolejki 1 
1.026869 [*] Stworzono nowego Studenta Nr 10. 
1.026869 [+] Student Nr 10 zostal zakolejkowany do kolejki 1 
21.972832 [V] Student: 2 Obsluzony w okienku1 
21.972832 [>>] Okienko 1 przekierowuje Studenta Nr 2 do kolejki 2, zmlos=0.924530 
21.972832 [+] Student Nr 2 zostaal zakolejkowany do kolejki 2 
21.972832 [@] Rozpoczeto obsluge Studenta Nr 10 w okienku 1, stan stanowiska:3 
21.972832 [@] Rozpoczeto obsluge studenta nr 2 w okienku 2, stan stanowiska:1 
22.713968 [V] Student: 3 Obsluzony w okienku1 
22.713968 [>>] Okienko 1 przekierowuje Studenta Nr 3 do kolejki 3, zmlos=0.178295 
22.713968 [+] Student Nr 3 zostaal zakolejkowany do kolejki 3 
22.713968 [@] Rozpoczeto obsluge Studenta Nr 9 w okienku 1, stan stanowiska:3 
22.713968 [@] Rozpoczeto obsluge studenta nr 3 w okienku 3, stan stanowiska:TRUE 
29.330609 [V] Student: 1 Obsluzony w okienku1 
29.330609 [>>] Okienko 1 przekierowuje Studenta Nr 1 do kolejki 3, zmlos=0.242751 
29.330609 [+] Student Nr 1 zostaal zakolejkowany do kolejki 3 
29.330609 [@] Rozpoczeto obsluge Studenta Nr 8 w okienku 1, stan stanowiska:3 
32.614995 [V] Student: 3 Obsluzony w okienku3 
32.614995 [>>] Okienko 3 przekierowuje Studenta Nr 3 do kolejki 1, zmlos=0.924530 
32.614995 [+] Student Nr 3 zostal zakolejkowany do kolejki 1 
32.614995 [@] Rozpoczeto obsluge studenta nr 1 w okienku 3, stan stanowiska:TRUE 
44.489526 [V] Student: 1 Obsluzony w okienku3 
44.489526 [X] Student Nr 1 OPUSCIL SYSTEM, zmlos=0.178295 
45.179325 [V] Student: 9 Obsluzony w okienku1 
45.179325 [>>] Okienko 1 przekierowuje Studenta Nr 9 do kolejki 2, zmlos=0.976369 
45.179325 [+] Student Nr 9 zostaal zakolejkowany do kolejki 2 
45.179325 [@] Rozpoczeto obsluge Studenta Nr 3 w okienku 1, stan stanowiska:3 
45.179325 [@] Rozpoczeto obsluge studenta nr 9 w okienku 2, stan stanowiska:2 
48.087740 [V] Student: 2 Obsluzony w okienku2 

background image

48.087740 [>>] Okienko 2 przekierowuje Studenta Nr 2 do kolejki 2, zmlos=0.924530 
48.087740 [+] Student Nr 2 zostaal zakolejkowany do kolejki 2 
48.087740 [@] Rozpoczeto obsluge studenta nr 2 w okienku 2, stan stanowiska:2 
51.736523 [V] Student: 10 Obsluzony w okienku1 
51.736523 [>>] Okienko 1 przekierowuje Studenta Nr 10 do kolejki 3, zmlos=0.246536 
51.736523 [+] Student Nr 10 zostaal zakolejkowany do kolejki 3 
51.736523 [@] Rozpoczeto obsluge Studenta Nr 7 w okienku 1, stan stanowiska:3 
51.736523 [@] Rozpoczeto obsluge studenta nr 10 w okienku 3, stan stanowiska:TRUE 
57.846655 [V] Student: 8 Obsluzony w okienku1 
57.846655 [>>] Okienko 1 przekierowuje Studenta Nr 8 do kolejki 2, zmlos=0.851605 
57.846655 [+] Student Nr 8 zostaal zakolejkowany do kolejki 2 
57.846655 [@] Rozpoczeto obsluge Studenta Nr 6 w okienku 1, stan stanowiska:3 
57.846655 [@] Rozpoczeto obsluge studenta nr 8 w okienku 2, stan stanowiska:3 
61.150838 [V] Student: 9 Obsluzony w okienku2 
61.150838 [X] Student Nr 9 OPUSCIL SYSTEM, zmlos=0.178295 
63.474110 [V] Student: 10 Obsluzony w okienku3 
63.474110 [X] Student Nr 10 OPUSCIL SYSTEM, zmlos=0.242751 
65.055537 [V] Student: 2 Obsluzony w okienku2 
65.055537 [X] Student Nr 2 OPUSCIL SYSTEM, zmlos=0.242751 
71.758893 [V] Student: 3 Obsluzony w okienku1 
71.758893 [>>] Okienko 1 przekierowuje Studenta Nr 3 do kolejki 3, zmlos=0.657957 
71.758893 [+] Student Nr 3 zostaal zakolejkowany do kolejki 3 
71.758893 [@] Rozpoczeto obsluge Studenta Nr 5 w okienku 1, stan stanowiska:3 
71.758893 [@] Rozpoczeto obsluge studenta nr 3 w okienku 3, stan stanowiska:TRUE 
80.069530 [V] Student: 7 Obsluzony w okienku1 
80.069530 [>>] Okienko 1 przekierowuje Studenta Nr 7 do kolejki 2, zmlos=0.833301 
80.069530 [+] Student Nr 7 zostaal zakolejkowany do kolejki 2 
80.069530 [@] Rozpoczeto obsluge Studenta Nr 4 w okienku 1, stan stanowiska:3 
80.069530 [@] Rozpoczeto obsluge studenta nr 7 w okienku 2, stan stanowiska:2 
80.991516 [V] Student: 3 Obsluzony w okienku3 
80.991516 [>>] Okienko 3 przekierowuje Studenta Nr 3 do kolejki 1, zmlos=0.976369 
80.991516 [+] Student Nr 3 zostal zakolejkowany do kolejki 1 
81.870385 [V] Student: 6 Obsluzony w okienku1 
81.870385 [>>] Okienko 1 przekierowuje Studenta Nr 6 do kolejki 3, zmlos=0.402373 
81.870385 [+] Student Nr 6 zostaal zakolejkowany do kolejki 3 
81.870385 [@] Rozpoczeto obsluge Studenta Nr 3 w okienku 1, stan stanowiska:3 
81.870385 [@] Rozpoczeto obsluge studenta nr 6 w okienku 3, stan stanowiska:TRUE 
85.672674 [V] Student: 8 Obsluzony w okienku2 
85.672674 [>>] Okienko 2 przekierowuje Studenta Nr 8 do kolejki 2, zmlos=0.976369 
85.672674 [+] Student Nr 8 zostaal zakolejkowany do kolejki 2 
85.672674 [@] Rozpoczeto obsluge studenta nr 8 w okienku 2, stan stanowiska:2 
93.600388 [V] Student: 6 Obsluzony w okienku3 
93.600388 [X] Student Nr 6 OPUSCIL SYSTEM, zmlos=0.246536 
94.103978 [V] Student: 5 Obsluzony w okienku1 
94.103978 [>>] Okienko 1 przekierowuje Studenta Nr 5 do kolejki 3, zmlos=0.234509 
94.103978 [+] Student Nr 5 zostaal zakolejkowany do kolejki 3 
94.103978 [@] Rozpoczeto obsluge studenta nr 5 w okienku 3, stan stanowiska:TRUE 
97.091435 [V] Student: 7 Obsluzony w okienku2 
97.091435 [X] Student Nr 7 OPUSCIL SYSTEM, zmlos=0.246536 
104.358175 [V] Student: 3 Obsluzony w okienku1 
104.358175 [>>] Okienko 1 przekierowuje Studenta Nr 3 do kolejki 3, zmlos=0.448372 

background image

104.358175 [+] Student Nr 3 zostaal zakolejkowany do kolejki 3 
104.431169 [V] Student: 5 Obsluzony w okienku3 
104.431169 [>>] Okienko 3 przekierowuje Studenta Nr 5 do kolejki 1, zmlos=0.851605 
104.431169 [+] Student Nr 5 zostal zakolejkowany do kolejki 1 
104.431169 [@] Rozpoczeto obsluge studenta nr 3 w okienku 3, stan stanowiska:TRUE 
104.431169 [@] Rozpoczeto obsluge Studenta Nr 5 w okienku 1, stan stanowiska:2 
104.553247 [V] Student: 4 Obsluzony w okienku1 
104.553247 [>>] Okienko 1 przekierowuje Studenta Nr 4 do kolejki 3, zmlos=0.248779 
104.553247 [+] Student Nr 4 zostaal zakolejkowany do kolejki 3 
110.224824 [V] Student: 8 Obsluzony w okienku2 
110.224824 [>>] Okienko 2 przekierowuje Studenta Nr 8 do kolejki 2, zmlos=0.851605 
110.224824 [+] Student Nr 8 zostaal zakolejkowany do kolejki 2 
110.224824 [@] Rozpoczeto obsluge studenta nr 8 w okienku 2, stan stanowiska:1 
115.356931 [V] Student: 3 Obsluzony w okienku3 
115.356931 [>>] Okienko 3 przekierowuje Studenta Nr 3 do kolejki 1, zmlos=0.657957 
115.356931 [+] Student Nr 3 zostal zakolejkowany do kolejki 1 
115.356931 [@] Rozpoczeto obsluge studenta nr 4 w okienku 3, stan stanowiska:TRUE 
115.356931 [@] Rozpoczeto obsluge Studenta Nr 3 w okienku 1, stan stanowiska:2 
125.761478 [V] Student: 4 Obsluzony w okienku3 
125.761478 [>>] Okienko 3 przekierowuje Studenta Nr 4 do kolejki 1, zmlos=0.833301 
125.761478 [+] Student Nr 4 zostal zakolejkowany do kolejki 1 
125.761478 [@] Rozpoczeto obsluge Studenta Nr 4 w okienku 1, stan stanowiska:3 
131.953872 [V] Student: 8 Obsluzony w okienku2 
131.953872 [>>] Okienko 2 przekierowuje Studenta Nr 8 do kolejki 2, zmlos=0.657957 
131.953872 [+] Student Nr 8 zostaal zakolejkowany do kolejki 2 
131.953872 [@] Rozpoczeto obsluge studenta nr 8 w okienku 2, stan stanowiska:1 
132.675515 [V] Student: 5 Obsluzony w okienku1 
132.675515 [>>] Okienko 1 przekierowuje Studenta Nr 5 do kolejki 2, zmlos=0.824435 
132.675515 [+] Student Nr 5 zostaal zakolejkowany do kolejki 2 
132.675515 [@] Rozpoczeto obsluge studenta nr 5 w okienku 2, stan stanowiska:2 
143.478549 [V] Student: 3 Obsluzony w okienku1 
143.478549 [>>] Okienko 1 przekierowuje Studenta Nr 3 do kolejki 2, zmlos=0.812162 
143.478549 [+] Student Nr 3 zostaal zakolejkowany do kolejki 2 
143.478549 [@] Rozpoczeto obsluge studenta nr 3 w okienku 2, stan stanowiska:3 
151.646278 [V] Student: 5 Obsluzony w okienku2 
151.646278 [>>] Okienko 2 przekierowuje Studenta Nr 5 do kolejki 2, zmlos=0.833301 
151.646278 [+] Student Nr 5 zostaal zakolejkowany do kolejki 2 
151.646278 [@] Rozpoczeto obsluge studenta nr 5 w okienku 2, stan stanowiska:3 
154.465034 [V] Student: 4 Obsluzony w okienku1 
154.465034 [>>] Okienko 1 przekierowuje Studenta Nr 4 do kolejki 2, zmlos=0.870356 
154.465034 [+] Student Nr 4 zostaal zakolejkowany do kolejki 2 
154.465034 [@] Rozpoczeto obsluge studenta nr 4 w okienku 2, stan stanowiska:4 
156.179805 [V] Student: 8 Obsluzony w okienku2 
156.179805 [>>] Okienko 2 przekierowuje Studenta Nr 8 do kolejki 2, zmlos=0.402373 
156.179805 [+] Student Nr 8 zostaal zakolejkowany do kolejki 2 
156.179805 [@] Rozpoczeto obsluge studenta nr 8 w okienku 2, stan stanowiska:4 
160.327031 [V] Student: 3 Obsluzony w okienku2 
160.327031 [X] Student Nr 3 OPUSCIL SYSTEM, zmlos=0.234509 
171.115931 [V] Student: 5 Obsluzony w okienku2 
171.115931 [>>] Okienko 2 przekierowuje Studenta Nr 5 do kolejki 2, zmlos=0.448372 
171.115931 [+] Student Nr 5 zostaal zakolejkowany do kolejki 2 

background image

171.115931 [@] Rozpoczeto obsluge studenta nr 5 w okienku 2, stan stanowiska:3 
171.518813 [V] Student: 4 Obsluzony w okienku2 
171.518813 [X] Student Nr 4 OPUSCIL SYSTEM, zmlos=0.248779 
180.254175 [V] Student: 8 Obsluzony w okienku2 
180.254175 [>>] Okienko 2 przekierowuje Studenta Nr 8 do kolejki 2, zmlos=0.824435 
180.254175 [+] Student Nr 8 zostaal zakolejkowany do kolejki 2 
180.254175 [@] Rozpoczeto obsluge studenta nr 8 w okienku 2, stan stanowiska:2 
194.986687 [V] Student: 5 Obsluzony w okienku2 
194.986687 [>>] Okienko 2 przekierowuje Studenta Nr 5 do kolejki 2, zmlos=0.812162 
194.986687 [+] Student Nr 5 zostaal zakolejkowany do kolejki 2 
194.986687 [@] Rozpoczeto obsluge studenta nr 5 w okienku 2, stan stanowiska:2 
205.162134 [V] Student: 8 Obsluzony w okienku2 
205.162134 [>>] Okienko 2 przekierowuje Studenta Nr 8 do kolejki 2, zmlos=0.870356 
205.162134 [+] Student Nr 8 zostaal zakolejkowany do kolejki 2 
205.162134 [@] Rozpoczeto obsluge studenta nr 8 w okienku 2, stan stanowiska:2 
220.186838 [V] Student: 5 Obsluzony w okienku2 
220.186838 [>>] Okienko 2 przekierowuje Studenta Nr 5 do kolejki 2, zmlos=0.884807 
220.186838 [+] Student Nr 5 zostaal zakolejkowany do kolejki 2 
220.186838 [@] Rozpoczeto obsluge studenta nr 5 w okienku 2, stan stanowiska:2 
224.489329 [V] Student: 8 Obsluzony w okienku2 
224.489329 [>>] Okienko 2 przekierowuje Studenta Nr 8 do kolejki 2, zmlos=0.434983 
224.489329 [+] Student Nr 8 zostaal zakolejkowany do kolejki 2 
224.489329 [@] Rozpoczeto obsluge studenta nr 8 w okienku 2, stan stanowiska:2 
240.184832 [V] Student: 5 Obsluzony w okienku2 
240.184832 [>>] Okienko 2 przekierowuje Studenta Nr 5 do kolejki 2, zmlos=0.499799 
240.184832 [+] Student Nr 5 zostaal zakolejkowany do kolejki 2 
240.184832 [@] Rozpoczeto obsluge studenta nr 5 w okienku 2, stan stanowiska:2 
245.206711 [V] Student: 8 Obsluzony w okienku2 
245.206711 [>>] Okienko 2 przekierowuje Studenta Nr 8 do kolejki 2, zmlos=0.569165 
245.206711 [+] Student Nr 8 zostaal zakolejkowany do kolejki 2 
245.206711 [@] Rozpoczeto obsluge studenta nr 8 w okienku 2, stan stanowiska:2 
262.932928 [V] Student: 5 Obsluzony w okienku2 
262.932928 [>>] Okienko 2 przekierowuje Studenta Nr 5 do kolejki 2, zmlos=0.737049 
262.932928 [+] Student Nr 5 zostaal zakolejkowany do kolejki 2 
262.932928 [@] Rozpoczeto obsluge studenta nr 5 w okienku 2, stan stanowiska:2 
264.808090 [V] Student: 8 Obsluzony w okienku2 
264.808090 [>>] Okienko 2 przekierowuje Studenta Nr 8 do kolejki 2, zmlos=0.460932 
264.808090 [+] Student Nr 8 zostaal zakolejkowany do kolejki 2 
264.808090 [@] Rozpoczeto obsluge studenta nr 8 w okienku 2, stan stanowiska:2 
277.591058 [V] Student: 5 Obsluzony w okienku2 
277.591058 [X] Student Nr 5 OPUSCIL SYSTEM, zmlos=0.108491 
282.978982 [V] Student: 8 Obsluzony w okienku2 
282.978982 [>>] Okienko 2 przekierowuje Studenta Nr 8 do kolejki 2, zmlos=0.333817 
282.978982 [+] Student Nr 8 zostaal zakolejkowany do kolejki 2 
282.978982 [@] Rozpoczeto obsluge studenta nr 8 w okienku 2, stan stanowiska:1 
301.215815 [V] Student: 8 Obsluzony w okienku2 
301.215815 [>>] Okienko 2 przekierowuje Studenta Nr 8 do kolejki 2, zmlos=0.339227 
301.215815 [+] Student Nr 8 zostaal zakolejkowany do kolejki 2 
301.215815 [@] Rozpoczeto obsluge studenta nr 8 w okienku 2, stan stanowiska:1 
328.000819 [V] Student: 8 Obsluzony w okienku2 
328.000819 [>>] Okienko 2 przekierowuje Studenta Nr 8 do kolejki 2, zmlos=0.948319 

background image

328.000819 [+] Student Nr 8 zostaal zakolejkowany do kolejki 2 
328.000819 [@] Rozpoczeto obsluge studenta nr 8 w okienku 2, stan stanowiska:1 
349.531647 [V] Student: 8 Obsluzony w okienku2 
349.531647 [>>] Okienko 2 przekierowuje Studenta Nr 8 do kolejki 2, zmlos=0.641366 
349.531647 [+] Student Nr 8 zostaal zakolejkowany do kolejki 2 
349.531647 [@] Rozpoczeto obsluge studenta nr 8 w okienku 2, stan stanowiska:1 
361.824879 [V] Student: 8 Obsluzony w okienku2 
361.824879 [X] Student Nr 8 OPUSCIL SYSTEM, zmlos=0.026295 
========================================================================= 
SREDNIA DLUGOSC KOLEJKI1: 2.062733 ODCHYLENIE: 2.041758 
SREDNIA DLUGOSC KOLEJKI2: 0.939272 ODCHYLENIE: 0.238830 
SREDNIA DLUGOSC KOLEJKI3: 0.937224 ODCHYLENIE: 0.242560 
SREDNI CZASOBSLUGI: 66.612988 ODCHYLENIE: 20.051582 
SREDNIA LICZBA ZAJETYCH KANALOW W OKIENKU1: 1.071024 ODCHYLENIE: 1.330202 
SREDNIA LICZBA ZAJETYCH KANALOW W OKIENKU2: 1.544593 ODCHYLENIE: 0.779442 
PRAWDOPODOBIENSTWO OBSLUZENIA PRZEZ OKIENKO1: 0.600000 
PRAWDOPODOBIENSTWO OBSLUZENIA PRZEZ OKIENKO2: 0.037037 
PRAWDOPODOBIENSTWO OBSLUZENIA PRZEZ OKIENKO3: 0.375000 
Nacisnij dowolny klawisz... 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

background image

Kod programu: 

MAIN MODULE zadanie; 
FROM RandMod IMPORT RandomObj, Random; 
FROM IOMod IMPORT ReadKey; 
FROM ListMod IMPORT QueueList; 
FROM GrpMod IMPORT QueueObj, StackObj, RankedObj; 
FROM SimMod IMPORT SimTime, StartSimulation, TriggerObj; 
FROM StatMod IMPORT SREAL, RStatObj,ITimedStatObj, TSINTEGER; 
FROM IOMod IMPORT StreamObj, ALL FileUseType; 
 
TYPE 
GeneratorObj = OBJECT; FORWARD; 
Kolejka1Obj = OBJECT; FORWARD; 
Kolejka2Obj = OBJECT; FORWARD; 
Kolejka3Obj = OBJECT; FORWARD; 
Okienko1Obj = OBJECT; FORWARD; 
Okienko2Obj = OBJECT; FORWARD; 
Okienko3Obj = OBJECT; FORWARD; 
StudentObj = OBJECT; FORWARD; 
 
GeneratorObj = OBJECT(RandomObj); 
 

srednia: REAL; 

 

odchylenie: REAL; 

 

GenLos: RandomObj; 

 

Kolejka1: Kolejka1Obj; 

 

showst: INTEGER; 

 

TELL METHOD Generuj(IN LiczbaOsob:INTEGER); 

 

ASK METHOD Ustaw(IN sred: REAL; IN odch: REAL; IN Kol:Kolejka1Obj; IN showst2:INTEGER); 

 
END OBJECT; 
 
Kolejka1Obj = OBJECT(StackObj); 
 

ograniczenie: INTEGER; 

 

dlugosc: TSINTEGER; 

 

okienko1: Okienko1Obj; 

 

przyjete: INTEGER; 

 

odrzucone: INTEGER; 

 

ASK METHOD Wstaw(IN Kl:StudentObj); 

 

ASK METHOD Ustaw(IN okien: Okienko1Obj; IN ogr: INTEGER); 

END OBJECT; 
 
Kolejka2Obj = OBJECT(RankedObj); 
 

okienko2: Okienko2Obj; 

 

dlugosc: TSINTEGER; 

 

przyjete: INTEGER; 

 

odrzucone: INTEGER; 

 

ASK METHOD Wstaw(IN Kl:StudentObj); 

 

ASK METHOD Ustaw(IN okien: Okienko2Obj); 

END OBJECT; 

background image

 
Kolejka3Obj = OBJECT(QueueObj); 
 

ograniczenie: INTEGER; 

 

dlugosc: TSINTEGER; 

 

przyjete: INTEGER; 

 

odrzucone: INTEGER; 

 

okienko3: Okienko3Obj; 

 

ASK METHOD Wstaw(IN Kl:StudentObj); 

 

ASK METHOD Ustaw(IN okien: Okienko3Obj; IN ogr: INTEGER); 

END OBJECT; 
 
Okienko1Obj = OBJECT(RandomObj); 
 

lo: REAL; 

 

hi: REAL; 

 

Kolejka1: Kolejka1Obj; 

 

Kolejka2: Kolejka2Obj; 

 

Kolejka3: Kolejka3Obj; 

 

los:RandomObj; 

 

stanowiska: TSINTEGER; 

 

TELL METHOD Obsluguj(); 

 

ASK METHOD Ustaw(IN l: REAL; IN h: REAL; IN Kol1: Kolejka1Obj; IN Kol2:Kolejka2Obj; IN 

Kol3:Kolejka3Obj); 
END OBJECT; 
 
Okienko2Obj = OBJECT(RandomObj); 
 

min: REAL; 

 

mode: REAL; 

 

max: REAL; 

 

czasprzebywania:SREAL; 

 

los:RandomObj; 

 

Kolejka2: Kolejka2Obj; 

 

stanowiska: TSINTEGER; 

 

TELL METHOD Obsluguj(); 

 

ASK METHOD Ustaw(IN mi:REAL; IN mo:REAL; IN ma:REAL; IN kol:Kolejka2Obj); 

END OBJECT; 
 
Okienko3Obj = OBJECT(RandomObj); 
 

shape: REAL; 

 

scale: REAL; 

 

czasprzebywania:SREAL; 

 

Kolejka3: Kolejka3Obj; 

 

Kolejka1: Kolejka1Obj; 

 

los:RandomObj; 

 

zajete: BOOLEAN; 

 

TELL METHOD Obsluguj(); 

 

ASK METHOD Ustaw(IN sh: REAL; IN sc: REAL; IN kol: Kolejka3Obj; IN kol1: Kolejka1Obj); 

END OBJECT; 
 
StudentObj = OBJECT(RandomObj); 

background image

 

Nr: INTEGER; 

 

CzasWejscia: REAL; 

 

Kolejka1:Kolejka1Obj; 

 

show: BOOLEAN; 

 

ASK METHOD ustawCzas(); 

 

ASK METHOD usun(); 

 

ASK METHOD ustaw(IN numer: INTEGER; IN kol:Kolejka1Obj; IN show2:BOOLEAN); 

END OBJECT; 
 
OBJECT GeneratorObj; 
 

ASK METHOD Ustaw(IN sred: REAL; IN odch: REAL; IN Kol:Kolejka1Obj; IN showst2:INTEGER); 

 

BEGIN 

 

 

srednia:=sred; 

 

 

odchylenie:=odch; 

 

 

Kolejka1:=Kol; 

 

 

showst:=showst2; 

 

END METHOD; 

 
 

TELL METHOD Generuj(IN LiczbaOsob:INTEGER); 

 

VAR 

 

 

i:INTEGER; 

 

 

st:StudentObj; 

 

 

showst2:BOOLEAN; 

 

BEGIN 

 

 

FOR i:=1 TO LiczbaOsob BY 1 

 

 

 

WAIT DURATION Normal(srednia,odchylenie); 

 

 

 

END WAIT; 

 

 

 

NEW(st); 

 

 

 

IF (showst = i) OR (showst = 0) 

 

 

 

 

showst2:=TRUE; 

 

 

 

ELSE 

 

 

 

 

showst2:=FALSE; 

 

 

 

END IF; 

 

 

 

ASK st TO ustaw(i,Kolejka1,showst2); 

 

 

 

IF ASK st TO show 

 

 

 

 

OUTPUT(SimTime," [*] Stworzono nowego Studenta Nr ", ASK st TO Nr,"."); 

 

 

 

END IF; 

 

 

 

ASK Kolejka1 TO Wstaw(st); 

 

 

END FOR; 

 

END METHOD; 

END OBJECT; 
 
OBJECT Kolejka1Obj; 
 

ASK METHOD Wstaw(IN student:StudentObj); 

 

BEGIN 

 

 

IF ograniczenie > numberIn; 

 

 

 

Add(student); 

 

 

 

ASK student TO ustawCzas; 

 

 

 

IF ASK student TO show 

background image

 

 

 

OUTPUT(SimTime, " [+] Student Nr ", ASK student TO Nr, " zostal zakolejkowany do 

kolejki 1"); 
 

 

 

END IF; 

 

 

 

dlugosc:=numberIn; 

 

 

 

IF ASK okienko1 TO stanowiska < 3 

 

 

 

 

INC(przyjete); 

 

 

 

 

TELL okienko1 TO Obsluguj; 

 

 

 

ELSE 

 

 

 

 

INC(odrzucone); 

 

 

 

END IF; 

 

 

ELSE 

 

 

 

IF ASK student TO show 

 

 

 

OUTPUT(SimTime, " [<<] Student Nr ", ASK student TO Nr," zostal odrzucony z 

kolejki1"); 
 

 

 

END IF; 

 

 

 

DISPOSE(student); 

 

 

END IF; 

 

END METHOD; 

 

ASK  METHOD Ustaw(IN gnd:Okienko1Obj; IN ogr:INTEGER); 

 

BEGIN 

 

 

okienko1:=gnd; 

 

 

ograniczenie:=ogr; 

 

END METHOD; 

END OBJECT; 
 
OBJECT Kolejka2Obj; 
 

ASK METHOD Wstaw(IN student:StudentObj); 

 

BEGIN 

 

 

Add(student); 

 

 

 

IF ASK student TO show 

 

 

 

OUTPUT(SimTime, " [+] Student Nr ", ASK student TO Nr, " zostaal zakolejkowany do 

kolejki 2"); 
 

 

 

END IF; 

 

 

dlugosc:=numberIn; 

 

 

IF ASK okienko2 TO stanowiska < 4 

 

 

 

INC(przyjete); 

 

 

 

TELL okienko2 TO Obsluguj; 

 

 

ELSE 

 

 

 

INC(odrzucone); 

 

 

END IF; 

 

END METHOD; 

 

 

 

ASK METHOD Ustaw(IN gnd: Okienko2Obj); 

 

BEGIN 

 

 

okienko2:=gnd; 

 

END METHOD; 

END OBJECT; 
 
OBJECT Kolejka3Obj; 

background image

 

ASK METHOD Wstaw(IN student:StudentObj); 

 

BEGIN 

 

 

IF ograniczenie > numberIn; 

 

 

 

Add(student); 

 

 

 

IF ASK student TO show 

 

 

 

OUTPUT(SimTime, " [+] Student Nr ", ASK student TO Nr, " zostaal zakolejkowany do 

kolejki 3"); 
 

 

 

END IF; 

 

 

 

dlugosc:=numberIn; 

 

 

 

IF NOT ASK okienko3 TO zajete 

 

 

 

 

INC(przyjete); 

 

 

 

 

TELL okienko3 TO Obsluguj; 

 

 

 

ELSE 

 

 

 

 

INC(odrzucone); 

 

 

 

END IF; 

 

 

ELSE 

 

 

 

IF ASK student TO show 

 

 

 

OUTPUT(SimTime, " [<<] Student Nr ", ASK student TO Nr," zostal odrzucony z 

kolejki3"); 
 

 

 

END IF; 

 

 

 

DISPOSE(student); 

 

 

 

 

END IF; 

 

END METHOD; 

 

 

 

ASK METHOD Ustaw(IN gnd: Okienko3Obj; IN ogr:INTEGER); 

 

BEGIN 

 

 

okienko3:=gnd; 

 

 

ograniczenie:=ogr; 

 

END METHOD; 

END OBJECT; 
 
OBJECT Okienko1Obj; 
 

ASK METHOD Ustaw(IN l: REAL; IN h: REAL; IN Kol1: Kolejka1Obj; IN Kol2:Kolejka2Obj; IN 

Kol3:Kolejka3Obj); 
 

BEGIN 

 

 

lo:=l; 

 

 

hi:=h; 

 

 

Kolejka1:=Kol1; 

 

 

Kolejka2:=Kol2; 

 

 

Kolejka3:=Kol3; 

 

 

NEW(los); 

 

 

stanowiska:=0; 

 

END METHOD; 

 

 

 

TELL METHOD Obsluguj(); 

 

VAR  

 

 

st:StudentObj; 

 

 

zmlos:REAL; 

 

BEGIN 

background image

 

 

 

 

 

WHILE ASK Kolejka1 TO numberIn > 0 

 

 

INC(stanowiska); 

 

 

 

st:=ASK Kolejka1 TO Remove(); 

 

 

 

IF ASK st TO show 

 

 

 

OUTPUT(SimTime, " [@] Rozpoczeto obsluge Studenta Nr ", ASK st TO Nr," w okienku 

1, stan stanowiska:", stanowiska); 
 

 

 

END IF; 

 

 

 

WAIT DURATION UniformReal(lo,hi) 

 

 

 

ON INTERRUPT 

 

 

 

END WAIT; 

 

 

 

 

 

 

 

IF ASK st TO show 

 

 

 

OUTPUT(SimTime, " [V] Student: ", ASK st TO Nr, " Obsluzony w okienku1"); 

 

 

 

END IF; 

 
 

 

 

zmlos:=ASK los Sample(); 

 

 

 

 

 

 

 

IF zmlos > 0.7 

 

 

 

 

IF ASK st TO show 

 

 

 

 

OUTPUT(SimTime, " [>>] Okienko 1 przekierowuje Studenta Nr ", ASK st TO 

Nr," do kolejki 2, zmlos=", zmlos); 
 

 

 

 

END IF; 

 

 

 

 

ASK Kolejka2 TO Wstaw(st); 

 

 

 

ELSE 

 

 

 

 

IF ASK st TO show 

 

 

 

 

OUTPUT(SimTime, " [>>] Okienko 1 przekierowuje Studenta Nr ", ASK st TO 

Nr," do kolejki 3, zmlos=", zmlos); 
 

 

 

 

END IF; 

 

 

 

 

ASK Kolejka3 TO Wstaw(st); 

 

 

 

END IF; 

 

 

DEC(stanowiska); 

 

 

END WHILE; 

 

END METHOD; 

END OBJECT; 
 
OBJECT Okienko2Obj; 
 

ASK METHOD Ustaw(IN mi:REAL; IN mo:REAL; IN ma:REAL; IN kol:Kolejka2Obj); 

 

BEGIN 

 

 

min:=mi; 

 

 

mode:=mo; 

 

 

max:=ma; 

 

 

Kolejka2:=kol; 

 

 

stanowiska:=0; 

 

 

NEW(los); 

 

END METHOD; 

 
 

TELL METHOD Obsluguj(); 

 

VAR 

background image

 

 

st:StudentObj; 

 

 

zmlos:REAL; 

 

BEGIN 

 

 

INC(stanowiska); 

 

 

WHILE ASK Kolejka2 TO numberIn > 0 

 

 

 

 

st:=ASK Kolejka2 TO Remove(); 

 

 

 

IF ASK st TO show 

 

 

 

OUTPUT(SimTime, " [@] Rozpoczeto obsluge studenta nr ", ASK st TO Nr," w okienku 

2, stan stanowiska:", stanowiska);   

 

 

 

 

END IF; 

 

 

 

WAIT DURATION Triangular(min,mode,max) 

 

 

 

ON INTERRUPT 

 

 

 

END WAIT; 

 

 

 

IF ASK st TO show 

 

 

 

OUTPUT(SimTime, " [V] Student: ", ASK st TO Nr, " Obsluzony w okienku2"); 

 

 

 

END IF; 

 

 

 

zmlos:=ASK los Sample(); 

 

 

 

 

 

 

 

IF zmlos > 0.3 

 

 

 

 

IF ASK st TO show 

 

 

 

 

OUTPUT(SimTime, " [>>] Okienko 2 przekierowuje Studenta Nr ", ASK st TO 

Nr," do kolejki 2, zmlos=", zmlos); 
 

 

 

 

END IF; 

 

 

 

 

ASK Kolejka2 TO Wstaw(st); 

 

 

 

ELSE 

 

 

 

 

IF ASK st TO show 

 

 

 

 

OUTPUT(SimTime, " [X] Student Nr ", ASK st TO Nr, " OPUSCIL SYSTEM, 

zmlos=", zmlos); 
 

 

 

 

END IF; 

 

 

 

 

czasprzebywania:=SimTime - ASK st TO CzasWejscia; 

 

 

 

 

ASK st TO usun(); 

 

 

 

END IF; 

 
 

 

END WHILE; 

 

 

DEC(stanowiska); 

 

END METHOD; 

END OBJECT; 
 
OBJECT Okienko3Obj; 
 

ASK METHOD Ustaw(IN sh: REAL; IN sc: REAL; IN kol: Kolejka3Obj; IN kol1: Kolejka1Obj); 

 

BEGIN 

 

 

shape:=sh; 

 

 

scale:=sc; 

 

 

Kolejka3:=kol; 

 

 

NEW(los); 

 

 

Kolejka1:=kol1; 

 

 

zajete:=FALSE; 

 

END METHOD; 

 

 

background image

 

TELL METHOD Obsluguj(); 

 

VAR 

 

 

st:StudentObj; 

 

 

zmlos:REAL; 

 

BEGIN 

 

 

zajete:=TRUE; 

 

 

WHILE ASK Kolejka3 TO numberIn > 0 

 

 

 

st:=ASK Kolejka3 TO Remove(); 

 

 

 

IF ASK st TO show 

 

 

 

OUTPUT(SimTime, " [@] Rozpoczeto obsluge studenta nr ", ASK st TO Nr," w okienku 

3, stan stanowiska:", zajete); 
 

 

 

END IF; 

 

 

 

WAIT DURATION Weibull(shape,scale) 

 

 

 

ON INTERRUPT; 

 

 

 

END WAIT; 

 

 

 

IF ASK st TO show 

 

 

 

OUTPUT(SimTime, " [V] Student: ", ASK st TO Nr, " Obsluzony w okienku3"); 

 

 

 

END IF; 

 

 

 

zmlos:=ASK los Sample(); 

 

 

 

 

 

 

 

IF zmlos > 0.4 

 

 

 

 

IF ASK st TO show 

 

 

 

 

OUTPUT(SimTime, " [>>] Okienko 3 przekierowuje Studenta Nr ", ASK st TO 

Nr," do kolejki 1, zmlos=", zmlos); 
 

 

 

 

END IF; 

 

 

 

 

ASK Kolejka1 TO Wstaw(st); 

 

 

 

ELSE 

 

 

 

 

IF ASK st TO show 

 

 

 

 

OUTPUT(SimTime, " [X] Student Nr ", ASK st TO Nr, " OPUSCIL SYSTEM, 

zmlos=", zmlos); 
 

 

 

 

END IF; 

 

 

 

 

czasprzebywania:=SimTime - ASK st TO CzasWejscia; 

 

 

 

 

ASK st TO usun(); 

 

 

 

END IF; 

 

 

END WHILE; 

 

 

zajete:=FALSE; 

 

END METHOD; 

END OBJECT; 
 
OBJECT StudentObj; 
 

ASK METHOD ustaw(IN numer: INTEGER; IN kol:Kolejka1Obj; IN show2:BOOLEAN); 

 

BEGIN 

 

 

Nr:=numer; 

 

 

show:=show2; 

 

 

Kolejka1:=kol; 

 

END METHOD; 

 
 

ASK METHOD usun(); 

 

BEGIN 

background image

 

 

DISPOSE(SELF); 

 

END METHOD; 

 
 

ASK METHOD ustawCzas(); 

 

BEGIN 

 

 

CzasWejscia:=SimTime; 

 

END METHOD; 

END OBJECT; 
 
VAR 
 

okienko1:Okienko1Obj; 

 

okienko2:Okienko2Obj; 

 

okienko3:Okienko3Obj; 

 

kolejka1:Kolejka1Obj; 

 

kolejka2:Kolejka2Obj; 

 

kolejka3:Kolejka3Obj; 

 

generator:GeneratorObj; 

 

ch:CHAR; 

 

srednia,odchylenie,lo,hi,min,mean,max,shape,scale,praw1,praw2,praw3:REAL; 

 

ogr1,ogr2,losob,stwatch:INTEGER; 

 

monITS1, monITS2, monITS3, monSTA1, monSTA2: ITimedStatObj; 

 

monRS1, monRS2: RStatObj; 

 

 

BEGIN 
 

NEW(okienko1); 

 

NEW(okienko2); 

 

NEW(okienko3); 

 

NEW(kolejka1); 

 

NEW(kolejka2); 

 

NEW(kolejka3); 

 

NEW(generator); 

 
 

stwatch:=0; 

 

srednia:=0.1; 

 

odchylenie:=0.01; 

 

ogr1:=30; 

 

ogr2:=3; 

 

lo:=20.0; 

 

hi:=30.0; 

 

min:=10.0; 

 

mean:=20.0; 

 

max:=30.0; 

 

shape:=17.0; 

 

scale:=11.5; 

 

losob:=10; 

 

 

 

ASK generator TO Ustaw(srednia, odchylenie, kolejka1,stwatch); 

 

ASK kolejka1 TO Ustaw(okienko1, ogr1); 

 

 

ASK okienko1 TO Ustaw(lo,hi,kolejka1,kolejka2,kolejka3); 

background image

 

ASK kolejka2 TO Ustaw(okienko2); 

 

 

ASK okienko2 TO Ustaw(min,mean,max,kolejka2); 

 

ASK kolejka3 TO Ustaw(okienko3, ogr2); 

 

 

ASK okienko3 TO Ustaw(shape,scale,kolejka3,kolejka1); 

 
 

TELL generator TO Generuj(losob); 

 

 

 

StartSimulation(); 

 

monITS1 := GETMONITOR(ASK kolejka1 TO dlugosc, ITimedStatObj); 

 

monITS2 := GETMONITOR(ASK kolejka2 TO dlugosc, ITimedStatObj); 

 

monITS3 := GETMONITOR(ASK kolejka3 TO dlugosc, ITimedStatObj); 

 

monSTA1 := GETMONITOR(ASK okienko1 TO stanowiska, ITimedStatObj); 

 

monSTA2 := GETMONITOR(ASK okienko2 TO stanowiska, ITimedStatObj); 

 

monRS1 := GETMONITOR(ASK okienko2 TO czasprzebywania, RStatObj); 

 

monRS1 := GETMONITOR(ASK okienko3 TO czasprzebywania, RStatObj); 

 
 

OUTPUT 

("========================================================================="); 
 

OUTPUT ("SREDNIA DLUGOSC KOLEJKI1: ",ASK  monITS1 TO Mean(), " ODCHYLENIE: ", ASK 

monITS1 TO StdDev()); 
 

OUTPUT ("SREDNIA DLUGOSC KOLEJKI2: ",ASK  monITS2 TO Mean(), " ODCHYLENIE: ", ASK 

monITS2 TO StdDev()); 
 

OUTPUT ("SREDNIA DLUGOSC KOLEJKI3: ",ASK  monITS3 TO Mean(), " ODCHYLENIE: ", ASK 

monITS3 TO StdDev()); 
 

OUTPUT ("SREDNI CZASOBSLUGI: ",ASK  monRS1 TO Mean(), " ODCHYLENIE: ", ASK monRS1 

TO StdDev()); 
 

OUTPUT ("SREDNIA LICZBA ZAJETYCH KANALOW W OKIENKU1: ", ASK monSTA1 TO Mean(), 

" ODCHYLENIE: ", ASK monSTA1 TO StdDev()); 
 

OUTPUT ("SREDNIA LICZBA ZAJETYCH KANALOW W OKIENKU2: ", ASK monSTA2 TO Mean(), 

" ODCHYLENIE: ", ASK monSTA2 TO StdDev()); 
 

praw1 := FLOAT(ASK kolejka1 TO odrzucone)/FLOAT(ASK kolejka1 TO przyjete + ASK kolejka1 TO 

odrzucone); 
 

OUTPUT ("PRAWDOPODOBIENSTWO OBSLUZENIA PRZEZ OKIENKO1: ", praw1); 

 

praw2 := FLOAT(ASK kolejka2 TO odrzucone)/FLOAT(ASK kolejka2 TO przyjete + ASK kolejka2 TO 

odrzucone); 
 

OUTPUT ("PRAWDOPODOBIENSTWO OBSLUZENIA PRZEZ OKIENKO2: ", praw2); 

 

praw3 := FLOAT(ASK kolejka3 TO odrzucone)/FLOAT(ASK kolejka3 TO przyjete + ASK kolejka3 TO 

odrzucone); 
 

OUTPUT ("PRAWDOPODOBIENSTWO OBSLUZENIA PRZEZ OKIENKO3: ", praw3); 

 

DISPOSE(okienko1); 

 

DISPOSE(okienko2); 

 

DISPOSE(okienko3); 

 

DISPOSE(kolejka1); 

 

DISPOSE(kolejka2); 

 

DISPOSE(kolejka3); 

 

DISPOSE(generator); 

 

OUTPUT ("Nacisnij dowolny klawisz..."); 

ch:=ReadKey(); 
END MODULE.