I0E1S1 Kamil Maślanka Projekt PSy, I0E1S1 Kamil Maślanka sprawozdanie projekt, Microsoft Word - sprawozdanie_Olejnik_Mateusz.docx


Wojskowa Akademia Techniczna

0x01 graphic

Podstawy Symulacji

Temat: Program symulujący działanie sieci SMO Zadanie laboratoryjne 1

Prowadzący: dr inż. Jarosław Rulka Wykonał: Kamil Maślanka

Nr 8

Grupa: I0E1S1


Zadanie laboratoryjne 1

Treść zadania:

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

0x08 graphic

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

  1. rozkład zmiennych Tj: (nrDz + i) mod 6 + 1;

  2. rozkład zmiennych Oi: (nrDz + i + 1) mod 6 + 1;

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

  4. ALi: (nrDz + i + 2) mod 3 + 1;

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

  6. Mi = (nrDz + i + 2) mod 4 + 1;

  7. Blokowanie zgłoszeń 1. SMO;

  8. Klienci niecierpliwi w SMOi : Ni = (nrDz + i) mod 4 (ograniczony czas oczekiwania na rozpoczęcie obsługi);

  9. Awaryjność kolejki nr i: i = nrDz mod 3 +1 (należy przyjąć wykładnicze rozkłady czasów bezawaryjnej „pracy” kolejki i jej naprawy, elementy kolejki w wyniku awarii są tracone);

gdzie:

i - numer SMO;

j - numer strumienia;

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

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

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

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

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

Li - 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. Wykładniczy

    2. Erlanga

    3. Normalny

    4. Jednostajny

    5. Trókątny

    6. Weibulla

  1. Długości kolejek pojedynczych SMO

    1. ograniczone (możliwe straty)

    2. nieograniczone

  2. Algorytm kolejek:

    1. FIFO

    2. LIFO

    3. Z priorytetami

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

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

Pozostałe dane należy określać na początku symulacji. Dane wejściowe i wyniki odczytywane/zapisywane z/do pliku.

Program powinien działać w trybie z i bez generowania komunikatów w trakcie przebiegu symulacji.

Dane wyliczone dla numeru 8:

T1 - rozkład jednostajny

T2 - rozkład trójkątny

O1 - rozkład trójkątny

O2 - rozkład Weibulla

O3 - rozkład wykładniczy

L1 - nieograniczona

L2 - ograniczona

L3 - nieograniczona

AL1 - z priorytetami

AL2 - FIFO

AL3 - LIFO

R1 - rozkład normalny

R2 - rozkład wykładniczy

M1 = 3

M2 = 1

M3 = 2

N1 - rozkład wykładniczy

N2 - rozkład Erlanga

N3 - rozkład normalny

Opis rozkładów użytych w programie.

Rozkład normalny

Gęstość prawdopodobieństwa:

0x01 graphic

dwuparametrowy o parametrach:

µ - wartość oczekiwana

σ - odchylenie standardowe

Rozkład wykładniczy

Gęstość prawdopodobieństwa:

0x01 graphic

Dystrybuanta:

0x01 graphic

λ - wartość oczekiwana

Rozkład Erlanga:

Gęstość:

0x01 graphic

o parametrach:

k > 0

λ >0

Rozkład jedostajny:

0x01 graphic

Wykorzystane wzory, których użyto do monitorowania systemu:

Średnia z próby n-elementowej:

0x01 graphic

Odchylenie standardowe z próby n-elementowej:

0x01 graphic

Estymator wartości średniej ważonej czasem:

0x01 graphic

Estymator odchylenia standardowego ważony czasem:

0x01 graphic

Sposób rozwiązania zadania

Do rozwiązania zadania zaimplementowano następujące typy obiektów

- obiekt użyty do monitorowania zmiennych (MonitorObiekt) w programie, używany do podsumowania wyników symulacji

- tablica obiektów GeneratorObiekt, reprezentujących generatory

- obiektów GniazdoObiekt, reprezentujących gniazda

- Kolejka1Obiekt: obiekt reprezentujący pierwszą kolejke: nieograniczona, z priorytetami

- Kolejka2Obiekt: obiekt reprezentujący drugą kolejke: ograniczona, FIFO

- Kolejka3Obiekt: obiekt reprezentujący trzecią kolejke: nieograniczona, LIFO(stos) Każdy z wyżej wymienionych obiektów został wyposażony w niezbędne metody do przeprowadzenia symulacji.

Przebieg symulacji:

- Wywołanie funkcji obiektu GeneratorObiekt: Generuj(); - funkcja odpowiedzialna za właściwe wygenerowanie klienta

- Wywołanie funkcji obiektu Kolejka(1..2)Obiekt: Wstaw(Klient);-funkcja odpowiedzialna za umieszczenie klienta w kolejce 1 lub 2.

- Wywołanie funkcji obiektu GniazdoObiekt: Obsluga(SELF);- funkcja odpowiedzialna za obsługę klienta w gnieździe

- Wywołanie funkcji obiektu Kolejka3Obiekt: Wstaw(Klient);-funkcja odpowiedzialna za umieszczenie klienta w kolejce 3

- Wywołanie funkcji obiektu GniazdoObiekt: Obsluga(SELF);- funkcja odpowiedzialna za obsługę klienta w gnieździe, usunięcie klienta z SMO.


Podczas każdorazowego wywołania każdej z funcji aktualizowane są odpowiednie zmienne znajdujące się w monitorach, umożliwiające policzenie charakterystyk po zakończeniu symulacji.

Charakterystyki były wyliczane z następujących wzorów:

Średnia z próby n-elementowej:

0x01 graphic

Odchylenie standardowe z próby n-elementowej:

0x01 graphic

Estymator wartości średniej ważonej czasem:

0x01 graphic

Estymator odchylenia standardowego ważony czasem:

0x01 graphic

Kod programu:

MAIN MODULE projm;

FROM RandMod IMPORT RandomObj;

FROM SimMod IMPORT StartSimulation, SimTime,ResetSimTime, StopSimulation;

FROM GrpMod IMPORT QueueObj, StackObj,RankedObj,BasicGroupObj;

FROM StatMod IMPORT RStatObj,ITimedStatObj,IStatObj,TSINTEGER,SINTEGER,TSREAL,SREAL;

FROM SimMod IMPORT Interrupt,TriggerObj;

FROM IOMod IMPORT StreamObj, ALL FileUseType;

{############################################## Definicje obiektow uzytkownika }

TYPE

GeneratorObiekt = OBJECT; FORWARD; Kolejka1Obiekt = OBJECT; FORWARD; Kolejka2Obiekt = OBJECT; FORWARD; Kolejka3Obiekt = OBJECT; FORWARD; GniazdoObiekt = OBJECT; FORWARD;


KlientObiekt = OBJECT; FORWARD; MonitorObiekt = OBJECT; FORWARD;

{############################################## Uzywane zmienne } VAR

Generator: ARRAY INTEGER OF GeneratorObiekt;

Kolejka1Prior: Kolejka1Obiekt; Kolejka2FIFO: Kolejka2Obiekt; Kolejka3LIFO: Kolejka3Obiekt;

Gniazdo: ARRAY INTEGER OF GniazdoObiekt;

Monitor: MonitorObiekt;

{############################################## Deklaracje obiektow } TYPE

GeneratorObiekt = OBJECT; Random: RandomObj; czykom: INTEGER;

NrGeneratora: INTEGER;{Numer utworzonego generatora}

{parametry okreslajace czas miedzy naplywaniem zgloszen do systemu} ParametrRozkladuGeneratora1: REAL;

ParametrRozkladuGeneratora2: REAL; ParametrRozkladuGeneratora3: REAL;

{parametry okreslajace wielkosc paczki zgloszen do systemu} ParametrRozkladuPaczki1: REAL;

ParametrRozkladuPaczki2: REAL;

Czas:REAL;

Klient: KlientObiekt; LiczbaKlientowDoWygenerowania: INTEGER; Monitor: MonitorObiekt;

ASK METHOD Init(IN Ran: RandomObj;IN ParRozGen1, ParRozGen2, ParRozGen3: REAL; IN KlientowDoGen: INTEGER;

IN ParRozPacz1, ParRozPacz2:REAL; IN Mon: MonitorObiekt; IN NrGen: INTEGER; IN c:INTEGER);

TELL METHOD Generuj();

END OBJECT;

GniazdoObiekt = OBJECT; Random: RandomObj;

NrGniazda, Kanaly, Aktywne, czykom: INTEGER;

ParametrRozkladuGniazda1, ParametrRozkladuGniazda2, ParametrRozkladuGniazda3: REAL;


Prawdopodobienstwo: REAL; Trigger: TriggerObj; Monitor: MonitorObiekt;

ASK METHOD Init(IN Ran: RandomObj;IN ParRozGniaz1, ParRozGniaz2, ParRozGniaz3: REAL; IN Kan, Akt: INTEGER;

IN Prawd: REAL; IN Trig: TriggerObj; IN Mon:

MonitorObiekt; IN NrGenerat: INTEGER;IN c:INTEGER); TELL METHOD Obsluga(IN kolejka: BasicGroupObj);

END OBJECT;

Kolejka1Obiekt = OBJECT(RankedObj);{### Obiekt kolejki nr 1 - priorytetowa

###}

Cierpliwosc1, Cierpliwosc2: REAL; Licznik: TSINTEGER;

NrKolejki, Pojemnosc: INTEGER; Random: RandomObj;

Trigger: TriggerObj; Monitor: MonitorObiekt;

ASK METHOD Wstaw(INOUT elem: KlientObiekt);

ASK METHOD Init(IN ra: RandomObj; IN Poj: INTEGER; IN Trig: TriggerObj; IN m: MonitorObiekt;

IN Cierp1: REAL; IN Cierp2: REAL; IN NrKol: INTEGER);

OVERRIDE

ASK METHOD Rank(IN a:ANYOBJ;IN b:ANYOBJ):INTEGER; ASK METHOD ObjTerminate();

ASK METHOD Remove():ANYOBJ;

ASK METHOD RemoveThis(IN kto: ANYOBJ); END OBJECT;

Kolejka2Obiekt = OBJECT(QueueObj);{### Obiekt kolejki nr 2 - FIFO ###} Cierpliwosc1, Cierpliwosc2: REAL;

Licznik: TSINTEGER;

NrKolejki, Pojemnosc: INTEGER; Random: RandomObj;

Trigger: TriggerObj;

Monitor: MonitorObiekt;

ASK METHOD Wstaw(INOUT elem: KlientObiekt);

ASK METHOD Init(IN ra: RandomObj; IN Poj: INTEGER; IN Trig: TriggerObj; IN m: MonitorObiekt;

IN Cierp1: REAL; IN Cierp2: REAL; IN NrKol: INTEGER);


OVERRIDE

ASK METHOD ObjTerminate(); ASK METHOD Remove():ANYOBJ;

ASK METHOD RemoveThis(IN kto: ANYOBJ);

END OBJECT;

Kolejka3Obiekt = OBJECT(StackObj);{### Obiekt kolejki nr 3 - LIFO ###} Cierpliwosc1, Cierpliwosc2: REAL;

Licznik: TSINTEGER;

NrKolejki, Pojemnosc: INTEGER; Random: RandomObj;

Trigger: TriggerObj; Monitor: MonitorObiekt;

ASK METHOD Wstaw(INOUT elem: KlientObiekt);

ASK METHOD Init(IN ra: RandomObj; IN Poj: INTEGER; IN Trig: TriggerObj; IN m: MonitorObiekt;

IN Cierp1: REAL; IN Cierp2: REAL; IN NrKol: INTEGER);

OVERRIDE

ASK METHOD ObjTerminate(); ASK METHOD Remove():ANYOBJ;

ASK METHOD RemoveThis(IN kto: ANYOBJ); END OBJECT;

KlientObiekt = OBJECT{### Obiekt klienta ###} Priorytet: INTEGER;

czasWe: REAL;

czasWe1: REAL; czasWe2: REAL; czasWe3: REAL;

numer,czykom: INTEGER;

Monitor: MonitorObiekt;

ASK METHOD Init(IN m: MonitorObiekt; IN c: INTEGER); ASK METHOD UstawPriorytet(IN pr: INTEGER);

TELL METHOD Niecierpliwosc(IN nrSmo: INTEGER; IN czas: REAL; IN kol: BasicGroupObj);

ASK METHOD zapiszCzas(IN nrSmo: INTEGER; IN taj: REAL);

END OBJECT;

MonitorObiekt = OBJECT

numer: INTEGER;


licznikArray : ARRAY [1..4] OF TSINTEGER;{### monitory zliczajace klientow w smo ###}

liczKlient: TSINTEGER;

KlientWchodzacyArray : ARRAY [1..4] OF INTEGER;{### monitory zliczajace klientow wchodzacych ###}

KlientWychodzacyArray : ARRAY [1..4] OF INTEGER;{### monitory zliczajace klientow wychodzacych ###}

LiczbaKlientowWkolejceArray : ARRAY [1..4] OF TSINTEGER;{### monitory zliczajace klientow w kolejkach ###}

SredniCzaswSMOnrArray : ARRAY [1..4] OF SREAL;{### monitory zliczajace czas przebywania klientow w smo ###}

ZajetyKanalArray : ARRAY [1..4] OF TSINTEGER;{### monitory zliczajace

zajete kanaly ###}

PrawdopodobienstwoObslugiArray : ARRAY [1..4] OF REAL;{### zmienne przechowujace obliczone pstwo obslugi ###}

SredniaLiczbaKlientowWsmoNrArray : ARRAY [1..4] OF SREAL;{### monitory

przechwoujace srednie liczby klientow w smo ###} SredniaLiczbaKlientowWsmoNrDevArray : ARRAY [1..4] OF SREAL;{### monitory

przechwoujace odchylenia stand liczby klientow w smo ###}

SredniaCzasPobytuWsmoNrArray : ARRAY [1..4] OF SREAL;{### monitory przechwoujace srednie czasu pobytu w smo ###}

SredniaCzasPobytuWsmoNrDevArray : ARRAY [1..4] OF SREAL; {### monitory przechwoujace odchylenia stand czasu pobytu w smo ###}

SredniaLiczbaZajetegoKanaluArray : ARRAY [1..4] OF SREAL;{### monitory przechwoujace srednia liczbe zajetych kanalow###}

SredniaLiczbaZajetegoKanaluDevArray : ARRAY [1..4] OF SREAL;{### monitory

przechwoujace odchylenie stand liczby zajetych kanalow ###} SredniaLiczbaKlientowWkolejceArray : ARRAY [1..4] OF SREAL;{### monitory

przechwoujace srednia liczbe klientow w kolejkach ###} OdchStandLiczbaKlientowWkolejceArray : ARRAY [1..4] OF SREAL;{###

monitory przechwoujace odchylenie stand liczby klientow w kolejkach ###} SrednieprawdopodobienstwoObslugiArray : ARRAY [1..4] OF SREAL;{###

monitory przechwoujace srednia prawdopodobienstwoObslugi obslugi ###} OdchStandsredniaLiczbaKlientowWsmoNrArray : ARRAY [1..4] OF SREAL;{###

monitory przechowywujace srednia liczbe klientow ###}

ASK METHOD InitMon(); {### inicjacja monitora ###}

ASK METHOD SredniaLiczbaKlientow(IN nrSmo: INTEGER; IN licz: REAL);{###

zbiera sredni licznik klientow ###}

ASK METHOD OdchStanLiczbyKlientow(IN nrSmo: INTEGER; IN licz: REAL);{###

zbiera odchylenie stand licznika klientow ###}

ASK METHOD SredniCzasPobytu(IN nrSmo: INTEGER; IN licz: REAL);{### zbiera sredni czas pobytu w systemie ###}

ASK METHOD odchStandPobytu(IN nrSmo: INTEGER; IN licz: REAL); {###

zbiera odchylenie stand czasu pobytu w systemie ###}

ASK METHOD SreniaLiczbaZajetychK(IN nrSmo: INTEGER; IN licz: REAL); {###

zbiera srednia liczbe zajetych kanalow ###}

ASK METHOD OdchStandLiczbyZajetychK(IN nrSmo: INTEGER; IN licz: REAL);{### zbiera odchylenie stand liczby zajetych kanalow ###}


ASK METHOD SredniaDlugoscKol(IN nrSmo: INTEGER; IN licz: REAL);{###

zbiera sredni liczbe klientow w kolejkach ###}

ASK METHOD OdchStanDlugoscKol(IN nrSmo: INTEGER; IN licz: REAL);{###

zbiera odchylenie stand liczby klientow w kolejkach ###}

ASK METHOD getprawdopodobienstwoObslugi(IN nrSmo:INTEGER;IN licz:REAL);

ASK METHOD IleKlientWchodzacych(IN nrSmo: INTEGER);{### zlicza klientow wchodzacych do systemu ###}

ASK METHOD IleKlientWychodzacych(IN nrSmo:INTEGER);{### zlicza klientow wychodzacych z systemu ###}

ASK METHOD PrawdopodobienstwoObslugi(IN nrSmo: INTEGER);{### zlicza pstwo obslugi ###}

ASK METHOD ZmniejszLiczbeKlientow(IN nrSmo: INTEGER);{### modyfikacja

licznika klientow ###}

ASK METHOD ZwiekszLiczbeKlientow(IN nrSmo: INTEGER);{### modyfikacja licznika klientow ###}

ASK METHOD ZmniejszLiczbeKlientowWKol(IN nrSmo: INTEGER);{### modyfikacja

licznika klientow w kolejkach ###}

ASK METHOD ZwiekszLiczbeKlientowWKol(IN nrSmo: INTEGER);{### modyfikacja licznika klientow w kolejkach ###}

ASK METHOD ZmniejszLiczbeKlientowKan(IN nrSmo: INTEGER);{### modyfikacja licznika zajetych kanalow ###}

ASK METHOD ZwiekszLiczbeKlientowKan(IN nrSmo: INTEGER);{### modyfikacja licznika zajetych kanalow ###}

ASK METHOD liczSredni(IN numer:INTEGER; IN czas:REAL);{### zlicza czas przebywania klienta w smo ###}

END OBJECT;

OBJECT MonitorObiekt; ASK METHOD InitMon();

BEGIN NEW(licznikArray,1..4); NEW(KlientWchodzacyArray,1..4); NEW(KlientWychodzacyArray,1..4); NEW(LiczbaKlientowWkolejceArray,1..4); NEW(SredniCzaswSMOnrArray,1..4); NEW(ZajetyKanalArray,1..4); NEW(PrawdopodobienstwoObslugiArray,1..4); NEW(SredniaLiczbaKlientowWsmoNrArray,1..4); NEW(SredniaLiczbaKlientowWsmoNrDevArray,1..4); NEW(SredniaCzasPobytuWsmoNrArray,1..4); NEW(SredniaCzasPobytuWsmoNrDevArray,1..4); NEW(SredniaLiczbaZajetegoKanaluArray,1..4); NEW(SredniaLiczbaZajetegoKanaluDevArray,1..4); NEW(SredniaLiczbaKlientowWkolejceArray,1..4); NEW(OdchStandLiczbaKlientowWkolejceArray,1..4); NEW(SrednieprawdopodobienstwoObslugiArray,1..4); NEW(OdchStandsredniaLiczbaKlientowWsmoNrArray,1..4); licznikArray[1]:=0;

licznikArray[2]:=0;


licznikArray[3]:=0; licznikArray[4]:=0; END METHOD;

ASK METHOD IleKlientWchodzacych(IN nrSmo: INTEGER); BEGIN

numer:=nrSmo;

KlientWchodzacyArray[numer+1]:=KlientWchodzacyArray[numer+1]+1; END METHOD;

ASK METHOD IleKlientWychodzacych(IN nrSmo: INTEGER); BEGIN

numer:=nrSmo; KlientWychodzacyArray[numer+1]:=KlientWychodzacyArray[numer+1]+1;

END METHOD;

ASK METHOD PrawdopodobienstwoObslugi(IN nrSmo: INTEGER); BEGIN

numer:=nrSmo; IF numer = 0

IF

KlientWchodzacyArray[2]+KlientWchodzacyArray[3]+KlientWchodzacyArray[4] > 0

PrawdopodobienstwoObslugiArray[1]:=FLOAT(KlientWychodzacyArray[2]+Kli entWychodzacyArray[3]+KlientWychodzacyArray[4])

/FLOAT(KlientWchodzacyArray[2]+KlientWchodzacyArray[3]+KlientWchodzacyArray

[4]); ELSE

PrawdopodobienstwoObslugiArray[1]:=0.0; END IF;

ELSE

IF KlientWchodzacyArray[numer+1] > 0

PrawdopodobienstwoObslugiArray[numer+1]:=FLOAT(KlientWychodzacyArray[numer+

1])/FLOAT(KlientWchodzacyArray[numer+1]); ELSE

PrawdopodobienstwoObslugiArray[numer+1]:=0.0; END IF;

END IF;

END METHOD;

ASK METHOD ZmniejszLiczbeKlientow(IN nrSmo: INTEGER); BEGIN

numer:=nrSmo;

licznikArray[numer+1]:=licznikArray[numer+1]-1; END METHOD;

ASK METHOD ZwiekszLiczbeKlientow(IN nrSmo: INTEGER); BEGIN

numer:=nrSmo;

licznikArray[numer+1]:=licznikArray[numer+1]+1;


END METHOD;

ASK METHOD ZwiekszLiczbeKlientowWKol(IN nrSmo: INTEGER); BEGIN

numer:=nrSmo;

LiczbaKlientowWkolejceArray[numer+1]:=LiczbaKlientowWkolejceArray[numer+1]+

1;

END METHOD;

ASK METHOD ZmniejszLiczbeKlientowWKol(IN nrSmo: INTEGER); BEGIN

numer:=nrSmo;

LiczbaKlientowWkolejceArray[numer+1]:=LiczbaKlientowWkolejceArray[numer+1]-

1;

END METHOD;

ASK METHOD ZmniejszLiczbeKlientowKan(IN nrSmo: INTEGER); BEGIN

numer:=nrSmo; ZajetyKanalArray[numer+1]:=ZajetyKanalArray[numer+1]-1;

END METHOD;

ASK METHOD ZwiekszLiczbeKlientowKan(IN nrSmo: INTEGER); BEGIN

numer:=nrSmo; ZajetyKanalArray[numer+1]:=ZajetyKanalArray[numer+1]+1;

END METHOD;

ASK METHOD liczSredni(IN nrSmo: INTEGER; IN czas:REAL); BEGIN

numer := nrSmo; SredniCzaswSMOnrArray[numer+1]:= czas;

END METHOD;

ASK METHOD SredniaLiczbaKlientow(IN nrSmo: INTEGER; IN licz: REAL); BEGIN

numer:=nrSmo; SredniaLiczbaKlientowWsmoNrArray[numer+1]:=licz;

END METHOD;

ASK METHOD OdchStanLiczbyKlientow(IN nrSmo: INTEGER; IN licz: REAL); BEGIN

numer:=nrSmo;

OdchStandsredniaLiczbaKlientowWsmoNrArray[numer+1]:=licz; END METHOD;


ASK METHOD SredniCzasPobytu(IN nrSmo: INTEGER; IN licz: REAL); BEGIN

numer:=nrSmo; SredniaCzasPobytuWsmoNrArray[numer+1]:=licz;

END METHOD;

ASK METHOD odchStandPobytu(IN nrSmo: INTEGER; IN licz: REAL); BEGIN

numer:=nrSmo; SredniaCzasPobytuWsmoNrDevArray[numer + 1]:=licz;

END METHOD;

ASK METHOD SreniaLiczbaZajetychK(IN nrSmo: INTEGER; IN licz: REAL); BEGIN

numer:=nrSmo; SredniaLiczbaZajetegoKanaluArray[numer+1]:=licz;

END METHOD;

ASK METHOD OdchStandLiczbyZajetychK(IN nrSmo: INTEGER; IN licz: REAL); BEGIN

numer:=nrSmo;

SredniaLiczbaZajetegoKanaluDevArray[numer+1]:=licz; END METHOD;

ASK METHOD SredniaDlugoscKol(IN nrSmo: INTEGER; IN licz: REAL); BEGIN

numer:=nrSmo; SredniaLiczbaKlientowWkolejceArray[numer+1]:=licz;

END METHOD;

ASK METHOD OdchStanDlugoscKol(IN nrSmo: INTEGER; IN licz: REAL); BEGIN

numer:=nrSmo; OdchStandLiczbaKlientowWkolejceArray[numer+1]:=licz;

END METHOD;

ASK METHOD getprawdopodobienstwoObslugi(IN nrSmo:INTEGER;IN licz:REAL); BEGIN

numer:=nrSmo;

SrednieprawdopodobienstwoObslugiArray[numer+1]:=licz; END METHOD;

END OBJECT;

OBJECT KlientObiekt;

ASK METHOD UstawPriorytet(IN pr: INTEGER); BEGIN

Priorytet:= pr; END METHOD;

ASK METHOD Init(IN m: MonitorObiekt;IN c: INTEGER); BEGIN

Monitor:= m;


czykom:=c; END METHOD;

TELL METHOD Niecierpliwosc(IN nrSmo: INTEGER; IN czas: REAL; IN kol: BasicGroupObj);

BEGIN

numer:=nrSmo;

WAIT DURATION ABS(czas); ON INTERRUPT;

RETURN;

END WAIT;

ASK kol TO RemoveThis(SELF);

ASK Monitor TO ZmniejszLiczbeKlientow(nrSmo); ASK Monitor TO ZmniejszLiczbeKlientow(0);

ASK Monitor TO ZmniejszLiczbeKlientowWKol(nrSmo); ASK Monitor TO ZmniejszLiczbeKlientowWKol(0);

IF czykom=1

OUTPUT("::: Zniecierpliwiony klient w kolejce ",nrSmo," czas ", SimTime);

END IF; DISPOSE(SELF);

END METHOD;

ASK METHOD zapiszCzas(IN nrSmo: INTEGER; IN taj: REAL); BEGIN

numer:=nrSmo; IF (numer = 0)

czasWe:=taj; ELSIF numer=1

czasWe1:=taj; ELSIF numer=2

czasWe2:=taj; ELSIF numer=3

czasWe3:=taj; END IF;

END METHOD;

END OBJECT;

OBJECT GniazdoObiekt;

ASK METHOD Init(IN Ran: RandomObj;IN prg1, prg2, prg3: REAL; IN kan, akt: INTEGER;

IN prawdopodobienstwoObslugi: REAL; IN trig: TriggerObj; IN m: MonitorObiekt;IN nrg: INTEGER; IN c:INTEGER);

BEGIN

czykom := c; Random := Ran; ParametrRozkladuGniazda1:=prg1; ParametrRozkladuGniazda2:=prg2;


ParametrRozkladuGniazda3:=prg3; Kanaly:= kan;

Aktywne:= akt; Trigger := trig; Monitor:=m;

Prawdopodobienstwo:=prawdopodobienstwoObslugi; NrGniazda:=nrg;

END METHOD;

TELL METHOD Obsluga(IN kol: BasicGroupObj); VAR

t: REAL;

klient: KlientObiekt; BEGIN

WHILE ASK kol TO numberIn > 0 klient:= ASK kol TO Remove;

IF czykom = 1

OUTPUT("##Obsluga"); END IF;

ASK Monitor TO ZmniejszLiczbeKlientowWKol(0);

ASK Monitor TO ZmniejszLiczbeKlientowWKol(NrGniazda); Aktywne:=Aktywne+1;

ASK Monitor TO ZwiekszLiczbeKlientowKan(NrGniazda); ASK Monitor TO ZwiekszLiczbeKlientowKan(0);

IF NrGniazda=1

Interrupt(klient,"Niecierpliwosc");

t:= ASK Random TO Triangular(ParametrRozkladuGniazda1,ParametrRozkladuGniazda2,ParametrRozkla duGniazda3);

WAIT DURATION ABS(t);

ON INTERRUPT END WAIT;

IF ( ASK Random TO UniformReal(0.0, 1.0) > Prawdopodobienstwo


);

numberIn)

ASK Monitor TO ZmniejszLiczbeKlientow(0); ASK Monitor TO ZmniejszLiczbeKlientow(1); Aktywne:=Aktywne-1;

ASK Monitor TO ZmniejszLiczbeKlientowKan(1);

ASK Monitor TO ZmniejszLiczbeKlientowKan(0); ASK Kolejka1Prior TO Wstaw(klient);

ELSE

WHILE(ASK Kolejka3LIFO TO Pojemnosc = ASK Kolejka3LIFO TO

IF czykom = 1

OUTPUT("### blokowanie SMO 1."); END IF;

WAIT FOR Trigger TO Fire(); ON INTERRUPT;

END WAIT; END WHILE;


ASK Monitor TO IleKlientWychodzacych(1);

ASK Monitor TO liczSredni(1,SimTime-ASK klient TO czasWe1); ASK Monitor TO ZmniejszLiczbeKlientow(1);

Aktywne:=Aktywne-1;

ASK Monitor TO ZmniejszLiczbeKlientowKan(1); ASK Monitor TO ZmniejszLiczbeKlientowKan(0);

IF czykom = 1

OUTPUT("####Klient zostal obsluzony w SMO ",NrGniazda,", w czasie ", SimTime);

END IF;

ASK Kolejka3LIFO TO Wstaw(klient); END IF;

ELSIF NrGniazda=2

Interrupt(klient,"Niecierpliwosc");

t:= ASK Random TO Weibull(ParametrRozkladuGniazda1, ParametrRozkladuGniazda2);

WAIT DURATION ABS(t); ON INTERRUPT

END WAIT;

ASK Monitor TO IleKlientWychodzacych(2);

ASK Monitor TO liczSredni(2,SimTime-ASK klient TO czasWe1); ASK Monitor TO ZmniejszLiczbeKlientow(2);

Aktywne:=Aktywne-1;

ASK Monitor TO ZmniejszLiczbeKlientowKan(2); ASK Monitor TO ZmniejszLiczbeKlientowKan(0); IF czykom = 1

OUTPUT("####Klient zostal obsluzony w SMO ",NrGniazda,", w

czasie ", SimTime); END IF;

ASK Kolejka3LIFO TO Wstaw(klient);

ELSIF NrGniazda=3

Interrupt(klient,"Niecierpliwosc");

t:= ASK Random TO Exponential(ParametrRozkladuGniazda1); WAIT DURATION ABS(t);

ON INTERRUPT END WAIT;

IF ( ASK Random TO UniformReal(0.0, 1.0)>Prawdopodobienstwo); ASK Monitor TO ZmniejszLiczbeKlientow(0);

ASK Monitor TO ZmniejszLiczbeKlientow(3); Aktywne:=Aktywne-1;

ASK Monitor TO ZmniejszLiczbeKlientowKan(3); ASK Monitor TO ZmniejszLiczbeKlientowKan(0); ASK Kolejka2FIFO TO Wstaw(klient);

ELSE

ASK Monitor TO IleKlientWychodzacych(3); ASK Monitor TO IleKlientWychodzacych(0);

ASK Monitor TO liczSredni(3,SimTime-ASK klient TO czasWe1);

ASK Monitor TO liczSredni(0,SimTime-ASK klient TO czasWe); ASK Monitor TO ZmniejszLiczbeKlientow(3);

Aktywne:=Aktywne-1;


ASK Monitor TO ZmniejszLiczbeKlientowKan(3); ASK Monitor TO ZmniejszLiczbeKlientowKan(0);

IF czykom = 1

OUTPUT("####Klient zostal obsluzony w SMO ",NrGniazda,", w czasie ", SimTime);

END IF; DISPOSE(klient); END IF;

END IF; END WHILE;

END METHOD;

END OBJECT;

OBJECT GeneratorObiekt; TELL METHOD Generuj; VAR

Klient: KlientObiekt;

paczkaInt1: INTEGER; ileDoKonca1: INTEGER; paczkaReal1: REAL;

i: INTEGER; j: INTEGER; sumaPacz1: INTEGER; czas1: REAL;

BEGIN

sumaPacz1:=0;

WHILE (sumaPacz1<LiczbaKlientowDoWygenerowania) {### sprawdzenie czy suma klientow generowanych w paczkach jest rowna liczbie klientow do wygenerowania###}

IF (NrGeneratora=1)

paczkaReal1:= ASK Random TO Normal(ParametrRozkladuPaczki1, ParametrRozkladuPaczki2);

ELSIF (NrGeneratora=2)

paczkaReal1:= ASK Random TO Exponential(ABS(ParametrRozkladuPaczki1));

END IF;

paczkaInt1:=TRUNC(ABS(paczkaReal1)); sumaPacz1:=sumaPacz1+paczkaInt1; ileDoKonca1:=LiczbaKlientowDoWygenerowania-sumaPacz1; IF ileDoKonca1<0

paczkaInt1:=paczkaInt1+ileDoKonca1; END IF;

IF (NrGeneratora=1)

czas1:= ASK Random TO UniformReal(ParametrRozkladuGeneratora1, ParametrRozkladuGeneratora2);

ELSIF (NrGeneratora=2)

czas1:= ASK Random TO Triangular(ParametrRozkladuGeneratora1, ParametrRozkladuGeneratora2, ParametrRozkladuGeneratora3);

END IF;


WAIT DURATION ABS(czas1) ON INTERRUPT

END WAIT;

FOR j:=1 TO paczkaInt1

NEW (Klient);

ASK Monitor TO IleKlientWchodzacych(0);

ASK Klient TO UstawPriorytet( ASK Random TO UniformInt(0,10));

ASK Klient TO Init(Monitor,czykom); Czas:=SimTime;

ASK Klient TO zapiszCzas(0,Czas);

IF czykom = 1

OUTPUT("#####Generator nr ",NrGeneratora," generuje klienta, czas = ", SimTime);

END IF;

IF NrGeneratora=1

ASK Kolejka1Prior TO Wstaw(Klient);

ELSIF NrGeneratora=2

ASK Kolejka2FIFO TO Wstaw(Klient); END IF;

END FOR; END WHILE;

END METHOD;

ASK METHOD Init(IN Ran: RandomObj; IN prg1: REAL; IN prg2: REAL; IN prg3: REAL; IN lk: INTEGER; IN prp1:REAL; IN prp2:REAL; IN m: MonitorObiekt; IN nrgen: INTEGER; IN c: INTEGER);

BEGIN

czykom:=c; Random:= Ran; ParametrRozkladuPaczki1:= prp1; ParametrRozkladuPaczki2:= prp2; Monitor:=m; ParametrRozkladuGeneratora1:= prg1; ParametrRozkladuGeneratora2:= prg2; ParametrRozkladuGeneratora3:= prg3; LiczbaKlientowDoWygenerowania:= lk; NrGeneratora:=nrgen;

END METHOD;

END OBJECT;

OBJECT Kolejka1Obiekt;

ASK METHOD Wstaw(INOUT elem: KlientObiekt); BEGIN

Add(elem);

ASK Monitor TO IleKlientWchodzacych(1);

ASK Monitor TO ZwiekszLiczbeKlientowWKol(0); ASK Monitor TO ZwiekszLiczbeKlientowWKol(1); ASK elem TO zapiszCzas(1,SimTime);


ASK Monitor TO ZwiekszLiczbeKlientow(0); ASK Monitor TO ZwiekszLiczbeKlientow(1); Licznik:=Licznik+1;

TELL elem TO Niecierpliwosc(NrKolejki,ASK Random TO

Exponential(Cierpliwosc1),SELF);

IF ASK Gniazdo[NrKolejki] TO Aktywne < ASK Gniazdo[NrKolejki] TO Kanaly

TELL Gniazdo[NrKolejki] TO Obsluga(SELF);

END IF; END METHOD;

ASK METHOD Init(IN ra: RandomObj; IN poj: INTEGER; IN trig: TriggerObj; IN m: MonitorObiekt; IN par1cie: REAL; IN par2cie: REAL; IN nrk: INTEGER);

BEGIN

Cierpliwosc1 := par1cie; Cierpliwosc2 := par2cie; Pojemnosc:= poj;

Random := ra;

Monitor:= m; Licznik:= 0; Trigger:= trig; NrKolejki:= nrk;

END METHOD;

ASK METHOD Rank(IN a:ANYOBJ;IN b:ANYOBJ):INTEGER; VAR

Klient1:KlientObiekt; Klient2:KlientObiekt;

BEGIN

Klient1:=a; Klient2:=b;

IF ASK Klient1 TO Priorytet < ASK Klient2 TO Priorytet

RETURN -1; END IF;

IF ASK Klient1 TO Priorytet > ASK Klient2 TO Priorytet

RETURN 1; END IF; RETURN 0;

END METHOD;

ASK METHOD ObjTerminate(); VAR

elem:ANYOBJ; BEGIN

FOREACH elem IN SELF RemoveThis(elem); DISPOSE(elem);

END FOREACH;

INHERITED ObjTerminate();


END METHOD;

ASK METHOD RemoveThis(IN kto: ANYOBJ); BEGIN

INHERITED RemoveThis(kto); END METHOD;

ASK METHOD Remove(): ANYOBJ; BEGIN

ASK Trigger TO Release; RETURN INHERITED Remove();

END METHOD; END OBJECT;

OBJECT Kolejka2Obiekt;

ASK METHOD Wstaw(INOUT elem: KlientObiekt); BEGIN

IF numberIn<Pojemnosc

Add(elem);

ASK Monitor TO IleKlientWchodzacych(2);

ASK Monitor TO ZwiekszLiczbeKlientowWKol(0); ASK Monitor TO ZwiekszLiczbeKlientowWKol(2); ASK elem TO zapiszCzas(2,SimTime);

ASK Monitor TO ZwiekszLiczbeKlientow(0); ASK Monitor TO ZwiekszLiczbeKlientow(2); Licznik:=Licznik+1;

TELL elem TO Niecierpliwosc(NrKolejki,ASK Random TO Erlang(ABS(Cierpliwosc1), ABS(TRUNC(Cierpliwosc2))),SELF);

IF ASK Gniazdo[NrKolejki] TO Aktywne < ASK Gniazdo[NrKolejki] TO

Kanaly

TELL Gniazdo[NrKolejki] TO Obsluga(SELF); END IF;

ELSE

DISPOSE(elem); END IF;

END METHOD;

ASK METHOD Init(IN ra: RandomObj; IN poj: INTEGER; IN trig: TriggerObj;

IN m: MonitorObiekt; IN par1cie: REAL; IN par2cie: REAL; IN nrk: INTEGER); BEGIN

Cierpliwosc1 := par1cie; Cierpliwosc2 := par2cie; Pojemnosc := poj;

Random := ra;

Monitor := m; Trigger := trig; Licznik := 0; NrKolejki := nrk;

END METHOD;


ASK METHOD ObjTerminate(); VAR

elem:ANYOBJ; BEGIN

FOREACH elem IN SELF RemoveThis(elem); DISPOSE(elem);

END FOREACH;

INHERITED ObjTerminate(); END METHOD;

ASK METHOD RemoveThis(IN kto: ANYOBJ); BEGIN

INHERITED RemoveThis(kto);

END METHOD;

ASK METHOD Remove():ANYOBJ; BEGIN

ASK Trigger TO Release; RETURN INHERITED Remove();

END METHOD;

END OBJECT;

OBJECT Kolejka3Obiekt;

ASK METHOD Wstaw(INOUT elem: KlientObiekt); BEGIN

Add(elem);

ASK Monitor TO IleKlientWchodzacych(3);

ASK Monitor TO ZwiekszLiczbeKlientowWKol(0); ASK Monitor TO ZwiekszLiczbeKlientowWKol(3); ASK elem TO zapiszCzas(3,SimTime);

ASK Monitor TO ZwiekszLiczbeKlientow(0);

ASK Monitor TO ZwiekszLiczbeKlientow(3); Licznik:=Licznik+1;

TELL elem TO Niecierpliwosc(NrKolejki,ASK Random TO

Normal(ABS(Cierpliwosc1), ABS(Cierpliwosc2)),SELF);

IF ASK Gniazdo[NrKolejki] TO Aktywne < ASK Gniazdo[NrKolejki] TO Kanaly

TELL Gniazdo[NrKolejki] TO Obsluga(SELF); END IF;

END METHOD;

ASK METHOD Init(IN ra: RandomObj; IN poj: INTEGER; IN trig: TriggerObj; IN m: MonitorObiekt; IN par1cie: REAL; IN par2cie: REAL; IN nrk: INTEGER);

BEGIN


Cierpliwosc1 := par1cie; Cierpliwosc2 := par2cie; Pojemnosc := poj;

Random := ra;

Trigger := trig; Monitor := m; Licznik := 0; NrKolejki := nrk;

END METHOD;

ASK METHOD ObjTerminate(); VAR

elem:ANYOBJ; BEGIN

FOREACH elem IN SELF RemoveThis(elem); DISPOSE(elem);

END FOREACH;

INHERITED ObjTerminate(); END METHOD;

ASK METHOD RemoveThis(IN kto: ANYOBJ); BEGIN

INHERITED RemoveThis(kto); END METHOD;

ASK METHOD Remove():ANYOBJ; BEGIN

ASK Trigger TO Release; RETURN INHERITED Remove();

END METHOD;

END OBJECT;

VAR

Ran: RandomObj; Trigg:TriggerObj;

textLine:STRING;

ch,ch2: CHAR;

par1cie1, par2cie1, par1cie2, par2cie2, par1gen1, par2gen1, pac1gen1, pac2gen1:REAL;

parwykladniczy,parametrpierwszyErlang, parametrdrugiErlang, parametr1Normal, parametr2Normal, parametr1jednostajny, parametr2jednostajny, parametr1Normal2, parametr2Normal2: REAL;

partr1,partr2,partr3, parwykl1:REAL;

ile1gen1:INTEGER; liczbaK: INTEGER; liczbaK2: INTEGER;


par1gen2, par2gen2, pac1gen2, pac2gen2:REAL;

ile1gen2:INTEGER;

par1gni1, par2gni1, par3gni1, par1gni2, par2gni2, par3gni2, par1gni3, par2gni3, par3gni3: REAL;

ile1kol1, ile1kol2, ile1kol3, czykom:INTEGER;

trojkat1, trojkat2,trojkat3: REAL; weibul1, weibul2: REAL; wykladniczy: REAL;

dataFile: StreamObj;

str: STRING; BEGIN

NEW(Trigg); NEW(Ran); NEW(Monitor); NEW(Kolejka1Prior); NEW(Kolejka2FIFO); NEW(Kolejka3LIFO); NEW(Gniazdo, 1..3); NEW(Gniazdo[1]); NEW(Gniazdo[2]); NEW(Gniazdo[3]); NEW(Generator, 1..2); NEW(Generator[1]); NEW(Generator[2]); NEW(dataFile);

{### wczytanie danych z pliku Dane.txt ###} ASK dataFile TO Open("Dane.txt", Input);

ASK dataFile TO ReadLine(str); ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadReal(parwykladniczy);ASK dataFile TO ReadLine(str); ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadReal(parametrpierwszyErlang);ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadReal(parametrdrugiErlang);ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadReal(parametr1Normal);ASK dataFile TO ReadLine(str); ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadReal(parametr2Normal);ASK dataFile TO ReadLine(str); ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadReal(parametr1jednostajny);ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadReal(parametr2jednostajny);ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadLine(str);


ASK dataFile TO ReadReal(parametr1Normal2);ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadReal(parametr2Normal2);ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadInt(liczbaK);ASK dataFile TO ReadLine(str); ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadReal(partr1);ASK dataFile TO ReadLine(str); ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadReal(partr2);ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadReal(partr3);ASK dataFile TO ReadLine(str); ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadReal(parametr2Normal);ASK dataFile TO ReadLine(str); ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadInt(liczbaK2);ASK dataFile TO ReadLine(str); ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadReal(trojkat1);ASK dataFile TO ReadLine(str); ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadReal(trojkat2);ASK dataFile TO ReadLine(str); ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadReal(trojkat3);ASK dataFile TO ReadLine(str); ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadReal(weibul1);ASK dataFile TO ReadLine(str); ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadReal(weibul2);ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadReal(wykladniczy);ASK dataFile TO ReadLine(str); ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadInt(ile1kol2);ASK dataFile TO ReadLine(str); ASK dataFile TO ReadLine(str);

ASK dataFile TO ReadInt(czykom); ASK dataFile TO Close; ile1kol1:=10;

ile1kol3:=0;

ASK Monitor TO InitMon();

ASK Kolejka1Prior TO Init(Ran, ile1kol1, Trigg, Monitor,parwykladniczy,0.0,1);

ASK Kolejka2FIFO TO Init(Ran, ile1kol2, Trigg, Monitor,

ABS(parametrpierwszyErlang),ABS(parametrdrugiErlang), 2);

ASK Kolejka3LIFO TO Init(Ran, ile1kol3, Trigg, Monitor, parametr1Normal, parametr2Normal, 3);

ASK Generator[1] TO Init(Ran,parametr1jednostajny, parametr2jednostajny,0.0, liczbaK, parametr1Normal2, parametr2Normal2, Monitor,1,czykom);

ASK Generator[2] TO Init(Ran,partr1, partr2,partr3, liczbaK2,

parwykladniczy, 0.0, Monitor,2,czykom);

ASK Gniazdo[1] TO Init(Ran,trojkat1,trojkat2,trojkat3,4,0,0.5,Trigg, Monitor,1,czykom);


ASK Gniazdo[2] TO Init(Ran,weibul1, weibul2, 0.0, 1,0,0.0,Trigg, Monitor,2,czykom);

ASK Gniazdo[3] TO Init(Ran,wykladniczy,0.0, 0.0, 2,0,0.5,Trigg, Monitor,3,czykom);

TELL Generator[1] TO Generuj(); TELL Generator[2] TO Generuj();

OUTPUT("");

OUTPUT("## ROZPOCZECIE SYMULACJI ##"); StartSimulation();

ASK Monitor TO SredniaLiczbaKlientow(0,ASK GETMONITOR(ASK Monitor TO

licznikArray[1],ITimedStatObj) TO Mean());

ASK Monitor TO OdchStanLiczbyKlientow(0,ASK GETMONITOR(ASK Monitor TO

licznikArray[1],ITimedStatObj) TO StdDev());

ASK Monitor TO SredniaLiczbaKlientow(1,ASK GETMONITOR(ASK Monitor TO

licznikArray[2],ITimedStatObj) TO Mean());

ASK Monitor TO OdchStanLiczbyKlientow(1,ASK GETMONITOR(ASK Monitor TO

licznikArray[2],ITimedStatObj) TO StdDev());

ASK Monitor TO SredniaLiczbaKlientow(2,ASK GETMONITOR(ASK Monitor TO

licznikArray[3],ITimedStatObj) TO Mean());

ASK Monitor TO OdchStanLiczbyKlientow(2,ASK GETMONITOR(ASK Monitor TO

licznikArray[3],ITimedStatObj) TO StdDev());

ASK Monitor TO SredniaLiczbaKlientow(3,ASK GETMONITOR(ASK Monitor TO

licznikArray[4],ITimedStatObj) TO Mean());

ASK Monitor TO OdchStanLiczbyKlientow(3,ASK GETMONITOR(ASK Monitor TO

licznikArray[4],ITimedStatObj) TO StdDev());

ASK Monitor TO SredniCzasPobytu(0,ASK GETMONITOR(ASK Monitor TO SredniCzaswSMOnrArray[1],RStatObj) TO Mean());

ASK Monitor TO odchStandPobytu(0,ASK GETMONITOR(ASK Monitor TO SredniCzaswSMOnrArray[1],RStatObj) TO StdDev());

ASK Monitor TO SredniCzasPobytu(1,ASK GETMONITOR(ASK Monitor TO SredniCzaswSMOnrArray[2],RStatObj) TO Mean());

ASK Monitor TO odchStandPobytu(1,ASK GETMONITOR(ASK Monitor TO SredniCzaswSMOnrArray[2],RStatObj) TO StdDev());

ASK Monitor TO SredniCzasPobytu(2,ASK GETMONITOR(ASK Monitor TO

SredniCzaswSMOnrArray[3],RStatObj) TO Mean());

ASK Monitor TO odchStandPobytu(2,ASK GETMONITOR(ASK Monitor TO SredniCzaswSMOnrArray[3],RStatObj) TO StdDev());

ASK Monitor TO SredniCzasPobytu(3,ASK GETMONITOR(ASK Monitor TO

SredniCzaswSMOnrArray[4],RStatObj) TO Mean());

ASK Monitor TO odchStandPobytu(3,ASK GETMONITOR(ASK Monitor TO SredniCzaswSMOnrArray[4],RStatObj) TO StdDev());

ASK Monitor TO SreniaLiczbaZajetychK(0,ASK GETMONITOR(ASK Monitor TO ZajetyKanalArray[1],ITimedStatObj) TO Mean());

ASK Monitor TO OdchStandLiczbyZajetychK(0,ASK GETMONITOR(ASK Monitor TO ZajetyKanalArray[1],ITimedStatObj) TO StdDev());

ASK Monitor TO SreniaLiczbaZajetychK(1,ASK GETMONITOR(ASK Monitor TO ZajetyKanalArray[2],ITimedStatObj) TO Mean());


ASK Monitor TO OdchStandLiczbyZajetychK(1,ASK GETMONITOR(ASK Monitor TO ZajetyKanalArray[2],ITimedStatObj) TO StdDev());

ASK Monitor TO SreniaLiczbaZajetychK(2,ASK GETMONITOR(ASK Monitor TO ZajetyKanalArray[3],ITimedStatObj) TO Mean());

ASK Monitor TO OdchStandLiczbyZajetychK(2,ASK GETMONITOR(ASK Monitor TO ZajetyKanalArray[3],ITimedStatObj) TO StdDev());

ASK Monitor TO SreniaLiczbaZajetychK(3,ASK GETMONITOR(ASK Monitor TO

ZajetyKanalArray[4],ITimedStatObj) TO Mean());

ASK Monitor TO OdchStandLiczbyZajetychK(3,ASK GETMONITOR(ASK Monitor TO ZajetyKanalArray[4],ITimedStatObj) TO StdDev());

ASK Monitor TO SredniaDlugoscKol(0,ASK GETMONITOR(ASK Monitor TO

LiczbaKlientowWkolejceArray[1],ITimedStatObj) TO Mean());

ASK Monitor TO OdchStanDlugoscKol(0,ASK GETMONITOR(ASK Monitor TO LiczbaKlientowWkolejceArray[1],ITimedStatObj) TO StdDev());

ASK Monitor TO SredniaDlugoscKol(1,ASK GETMONITOR(ASK Monitor TO LiczbaKlientowWkolejceArray[2],ITimedStatObj) TO Mean());

ASK Monitor TO OdchStanDlugoscKol(1,ASK GETMONITOR(ASK Monitor TO LiczbaKlientowWkolejceArray[2],ITimedStatObj) TO StdDev());

ASK Monitor TO SredniaDlugoscKol(2,ASK GETMONITOR(ASK Monitor TO LiczbaKlientowWkolejceArray[3],ITimedStatObj) TO Mean());

ASK Monitor TO OdchStanDlugoscKol(2,ASK GETMONITOR(ASK Monitor TO

LiczbaKlientowWkolejceArray[3],ITimedStatObj) TO StdDev());

ASK Monitor TO SredniaDlugoscKol(3,ASK GETMONITOR(ASK Monitor TO LiczbaKlientowWkolejceArray[4],ITimedStatObj) TO Mean());

ASK Monitor TO OdchStanDlugoscKol(3,ASK GETMONITOR(ASK Monitor TO

LiczbaKlientowWkolejceArray[4],ITimedStatObj) TO StdDev()); ASK Monitor TO PrawdopodobienstwoObslugi(0);

ASK Monitor TO getprawdopodobienstwoObslugi(0,ASK Monitor TO

PrawdopodobienstwoObslugiArray[1]);

ASK Monitor TO PrawdopodobienstwoObslugi(1);

ASK Monitor TO getprawdopodobienstwoObslugi(1,ASK Monitor TO PrawdopodobienstwoObslugiArray[2]);

ASK Monitor TO PrawdopodobienstwoObslugi(2);

ASK Monitor TO getprawdopodobienstwoObslugi(2,ASK Monitor TO PrawdopodobienstwoObslugiArray[3]);

ASK Monitor TO PrawdopodobienstwoObslugi(3);

ASK Monitor TO getprawdopodobienstwoObslugi(3,ASK Monitor TO PrawdopodobienstwoObslugiArray[4]);

OUTPUT("WYNIKI SYMULACJI:"); OUTPUT("###################################################################

");

OUTPUT("###Srednia liczba zgloszen (klientow) SMO 1 = ", ASK GETMONITOR((ASK Monitor TO SredniaLiczbaKlientowWsmoNrArray[2]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednia liczba zgloszen (klientow) SMO 2 =", ASK GETMONITOR((ASK Monitor TO SredniaLiczbaKlientowWsmoNrArray[3]),RStatObj) TO Mean(),4,2);


OUTPUT("###Srednia liczba zgloszen (klientow) SMO 3 =", ASK GETMONITOR((ASK Monitor TO SredniaLiczbaKlientowWsmoNrArray[4]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednia liczba zgloszen (klientow) OGOLEM = ", ASK

GETMONITOR((ASK Monitor TO SredniaLiczbaKlientowWsmoNrArray[1]),RStatObj) TO Mean(),4,2);

OUTPUT("################################################################### ");

OUTPUT("###Srednie odchylenie standardowe liczby zgloszen (klientow) SMO 1

= ", ASK GETMONITOR((ASK Monitor TO OdchStandsredniaLiczbaKlientowWsmoNrArray[2]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednie odchylenie standardowe liczby zgloszen (klientow) SMO 2

= ", ASK GETMONITOR((ASK Monitor TO OdchStandsredniaLiczbaKlientowWsmoNrArray[3]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednie odchylenie standardowe liczby zgloszen (klientow) SMO 3

= ", ASK GETMONITOR((ASK Monitor TO OdchStandsredniaLiczbaKlientowWsmoNrArray[4]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednie odchylenie standardowe liczby zgloszen (klientow) OGOLEM = ", ASK GETMONITOR((ASK Monitor TO OdchStandsredniaLiczbaKlientowWsmoNrArray[1]),RStatObj) TO Mean(),4,2);

OUTPUT("################################################################### ");

OUTPUT("###Sredni czas przebywania klienta w SMO 1 = ", ASK

GETMONITOR((ASK Monitor TO SredniaCzasPobytuWsmoNrArray[2]),RStatObj) TO Mean(),4,2);

OUTPUT("###Sredni czas przebywania klienta w SMO 2 = ", ASK

GETMONITOR((ASK Monitor TO SredniaCzasPobytuWsmoNrArray[3]),RStatObj) TO Mean(),4,2);

OUTPUT("###Sredni czas przebywania klienta w SMO 3 = ", ASK GETMONITOR((ASK Monitor TO SredniaCzasPobytuWsmoNrArray[4]),RStatObj) TO Mean(),4,2);

OUTPUT("###Sredni czas przebywania klienta w SMO OGOLEM = ", ASK GETMONITOR((ASK Monitor TO SredniaCzasPobytuWsmoNrArray[1]),RStatObj) TO Mean(),4,2);

OUTPUT("################################################################### ");

OUTPUT("###Srednie odchylenie standardowe czasu przebywania w SMO 1 = ", ASK GETMONITOR((ASK Monitor TO SredniaCzasPobytuWsmoNrDevArray[2]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednie odchylenie standardowe czasu przebywania w SMO 2 = ",

ASK GETMONITOR((ASK Monitor TO SredniaCzasPobytuWsmoNrDevArray[3]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednie odchylenie standardowe czasu przebywania w SMO 3 = ",

ASK GETMONITOR((ASK Monitor TO SredniaCzasPobytuWsmoNrDevArray[4]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednie odchylenie standardowe czasu przebywania w SMO OGOLEM = ", ASK GETMONITOR((ASK Monitor TO SredniaCzasPobytuWsmoNrDevArray[1]),RStatObj) TO Mean(),4,2);


OUTPUT("################################################################### ");

OUTPUT("###Srednia liczba zajetych kanalow SMO 1 = ", ASK GETMONITOR((ASK

Monitor TO SredniaLiczbaZajetegoKanaluArray[2]),RStatObj) TO Mean(),4,2); OUTPUT("###Srednia liczba zajetych kanalow SMO 2 = ", ASK GETMONITOR((ASK

Monitor TO SredniaLiczbaZajetegoKanaluArray[3]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednia liczba zajetych kanalow SMO 3 = ", ASK GETMONITOR((ASK Monitor TO SredniaLiczbaZajetegoKanaluArray[4]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednia liczba zajetych kanalow OGOLEM = ", ASK GETMONITOR((ASK Monitor TO SredniaLiczbaZajetegoKanaluArray[1]),RStatObj) TO Mean(),4,2);

OUTPUT("################################################################### ");

OUTPUT("###Srednie odchylenie standardowe liczby zajetych kanalow SMO 1 = ", ASK GETMONITOR((ASK Monitor TO SredniaLiczbaZajetegoKanaluDevArray[2]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednie odchylenie standardowe liczby zajetych kanalow SMO 2 =

", ASK GETMONITOR((ASK Monitor TO SredniaLiczbaZajetegoKanaluDevArray[3]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednie odchylenie standardowe liczby zajetych kanalow SMO 3 =

", ASK GETMONITOR((ASK Monitor TO SredniaLiczbaZajetegoKanaluDevArray[4]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednie odchylenie standardowe liczby zajetych kanalow OGOLEM = ", ASK GETMONITOR((ASK Monitor TO SredniaLiczbaZajetegoKanaluDevArray[1]),RStatObj) TO Mean(),4,2);

OUTPUT("################################################################### ");

OUTPUT("###Srednia liczba klientow w kolejce SMO 1 = ", ASK

GETMONITOR((ASK Monitor TO SredniaLiczbaKlientowWkolejceArray[2]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednia liczba klientow w kolejce SMO 2 = ", ASK

GETMONITOR((ASK Monitor TO SredniaLiczbaKlientowWkolejceArray[3]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednia liczba klientow w kolejce SMO 3 = ", ASK

GETMONITOR((ASK Monitor TO SredniaLiczbaKlientowWkolejceArray[4]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednia liczba klientow w kolejce OGOLEM = ", ASK

GETMONITOR((ASK Monitor TO SredniaLiczbaKlientowWkolejceArray[1]),RStatObj) TO Mean(),4,2);

OUTPUT("################################################################### ");

OUTPUT("###Srednie odchylenie standardowe liczby klientow w kolejce SMO 1

= ", ASK GETMONITOR((ASK Monitor TO OdchStandLiczbaKlientowWkolejceArray[2]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednie odchylenie standardowe liczby klientow w kolejce SMO 2

= ", ASK GETMONITOR((ASK Monitor TO OdchStandLiczbaKlientowWkolejceArray[3]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednie odchylenie standardowe liczby klientow w kolejce SMO 3

= ", ASK GETMONITOR((ASK Monitor TO OdchStandLiczbaKlientowWkolejceArray[4]),RStatObj) TO Mean(),4,2);


OUTPUT("###Srednie odchylenie standardowe liczby klientow w kolejce OGOLEM

= ", ASK GETMONITOR((ASK Monitor TO OdchStandLiczbaKlientowWkolejceArray[1]),RStatObj) TO Mean(),4,2);

OUTPUT("################################################################### ");

OUTPUT("###Srednie prawdopodobiestwo obslugi SMO 1 = ", ASK

GETMONITOR((ASK Monitor TO SrednieprawdopodobienstwoObslugiArray[2]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednie prawdopodobiestwo obslugi SMO 2 = ", ASK GETMONITOR((ASK Monitor TO SrednieprawdopodobienstwoObslugiArray[3]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednie prawdopodobiestwo obslugi SMO 3 = ", ASK GETMONITOR((ASK Monitor TO SrednieprawdopodobienstwoObslugiArray[4]),RStatObj) TO Mean(),4,2);

OUTPUT("###Srednie prawdopodobiestwo obslugi OGOLEM = ", ASK GETMONITOR((ASK Monitor TO SrednieprawdopodobienstwoObslugiArray[1]),RStatObj) TO Mean(),4,2);

DISPOSE(Monitor); DISPOSE(Generator[1]); DISPOSE(Generator[2]); DISPOSE(Kolejka1Prior); DISPOSE(Kolejka2FIFO); DISPOSE(Kolejka3LIFO); DISPOSE(Gniazdo[1]); DISPOSE(Gniazdo[2]); DISPOSE(Gniazdo[3]); DISPOSE(dataFile);

INPUT(ch); END MODULE.

SMO

SMO

SMO

p1

p2

T1

T2

O1

O2

O3



Wyszukiwarka

Podobne podstrony:
Kamil Wziątek sprawozdanie praktyki
KAMIL MARCINEK SPRAWOZDANIE M KONTRUKCYJNE
Kamil Chmielewski Sprawozdanie nr 2 ćw L01 II OFF
projekt geomorfologia, Nowy Dokument programu Microsoft Word (3), Przekrój geologiczny przez dolinę
Technologia wody 2 - gotowy projekt - excel.word.cad. PRZYKŁAD3, 6 semestr IŚ, TECHNOLOGIA WODY I SC
Microsoft Word Projekt CPS
projekt z petu word 2003, Transport Polsl Katowice, 4 semesr, 4SEM, IV sem, IV sem
projekt metody word
Projekt lotnisko word id 399032 Nieznany
Projekt z Aparatow Word ver 4 4
maly projekt , ogrodnictwo VII semestr, Od Mateusza S, materiały sggw, SGGW materiały 7 semestr
(Microsoft Word uwierzytelnianie dokument 363w w projekcie pismo merytoryczne na stron 352 internet
Microsoft Word GI w sprawie projektow gotowych doc GI w sprawie projektow gotowych
Microsoft Word asia projekt

więcej podobnych podstron