El¾bieta Okniäska I7G2S1 PSY

background image

WOJSKOWA AKADEMIA TECHNICZNA

Im. Jarosława Dąbrowskiego w Warszawie

INSTYTUT SYSTEMÓW INFORMATYCZNYCH

Laboratorium z przedmiotu

Podstawy symulacji

Temat:

Napisać program symulujący działanie sieci SMO

.


Prowadzący:

Wykonała:

dr inż. Jarosław Rulka

Elżbieta Oknińska, gr.I7G2S1

background image

2

1.

Treść zadania

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 Tj: (nrDz + i) mod 6 + 1;
b) rozkład zmiennych Oi: (nrDz + i + 1) mod 6 + 1;
c) Li: (nrDz + i) mod 2 + 1;
d) ALi: (nrDz + i + 2) mod 3 + 1;
e) Rj = (nrDz + i + 5) mod 3 + 1;
f) Mi = (nrDz + i + 2) mod 4 + 1;
g) Blokowanie zgłoszeń 1. SMO;
h) Klienci niecierpliwi w SMOi : Ni = (nrDz + i) mod 4 (ograniczony czas
oczekiwania na rozpoczęcie obsługi);

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);

background image

3

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 stan

owisk 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.

2. Dane do zadania:

1. Numer z dziennika - 4.
2. Zmienna losowa oznaczająca czas pomiędzy kolejnymi napływami
zgłoszeń do systemu Tj: (nrDz + i) mod 6 + 1

• T1=6 Rozkład Weibulla
• T2=1 Rozkład wykładniczy

3. Zmienna losowa oznaczająca czas obsługi pojedynczego zgłoszenia w
gnieździe Oi: (nrDz + i + 1) mod 6 + 1

• O1=1 Rozkład wykładniczy
• O2=2 Rozkład Erlanga
• O3=3 Rozkład normalny

4. Długość kolejki i-tego SMO Li: (nrDz + i) mod 2 + 1

• L1=2 nieograniczona
• L2=1 ograniczona
• L3=2 nieograniczona

5. Algorytmy kolejek (w przypadku istnienia kolejki z priorytetami należy
przyjąć, że zgłoszenia posiadają priorytety ALi: (nrDz + i + 2) mod 3 + 1

• AL1=2 LIFO
• AL2=3 Z priorytetem
• AL3=1 FIFO

6. Zmienna losowa oznaczająca wielkość paczki zgłoszeń (wchodzących w
tej samej chwili) j-tego strumienia Rj = (nrDz + i + 5) mod 3 + 1

• R1=2 Rozkład Erlanga
• R2=3 Rozkład normalny

7. Liczba stanowisk obsługi w gniazdach Mi = (nrDz + i + 2) mod 4 + 1

background image

4

• M1=4
• M2=1
• M3=2

8. Zmienna losowa oznaczająca czas niecierpliwości zgłoszenia
(gdy i = 0

=> zgłoszenia cierpliwe) Ni = (nrDz + i) mod 4

• N1=1 Rozkład wykładniczy
• N2=2 Rozkład Erlanga
• N3=3 Rozkład normalny

3.

Rozwiązanie:


Obiekty potrzebne do zasymul

owania zadanego obiektu zostały

zaimplementowane i nazwane:

KliOb j-klienta,
GniOb j-

gniazda obsługi,

MonObj -obiekt do monitorowania systemu,
Kolejka[numer]Obj -

kolejka do stanowisk obsługi,

GeneratorObj

– generator klientów.


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

Średnia z próby n-elementowej:

Odchylenie standardowe z próby n-elementowej:

Estymator wartości średniej ważony czasem:

Estymator odchylenia standardowego ważony czasem:

background image

5

MAIN MODULE main;

FROM RandMod IMPORT RandomObj;
FROM SimMod IMPORT StartSimulation, SimTime,ResetSimTime, StopSimulation;
FROM GrpMod IMPORT QueueObj, StackObj,RankedObj,BasicGroupObj;
FROM StatMod IMPORT RStatObj,SREAL,ITimedStatObj,IStatObj,TSINTEGER,SINTEGER,TSREAL;
FROM SimMod IMPORT Interrupt,TriggerObj;
FROM IOMod IMPORT StreamObj,FileUseType(Input),FileUseType(Output);

TYPE
KliObj = OBJECT;
FORWARD;
GniObj = OBJECT;
FORWARD;
MonObj = OBJECT;
FORWARD;
kol1Obj = OBJECT;
FORWARD;
kol2Obj = OBJECT;
FORWARD;
kol3Obj = OBJECT;
FORWARD;
GenObj = OBJECT;
FORWARD;

VAR
w: INTEGER;
monn: MonObj;
kol1: kol1Obj;
kol2: kol2Obj;
kol3: kol3Obj;
GenT: ARRAY INTEGER OF GenObj;
GniT: ARRAY INTEGER OF GniObj;


TYPE
MonObj = OBJECT
nr: INTEGER;
obsluzeni: INTEGER;
wejsznieci: INTEGER;
wejs1: REAL;
obs1: REAL;
srCzas: SREAL;

{czas przebywania}

srCzas1: SREAL;
srCzas2: SREAL;

background image

6

srCzas3: SREAL;
licz: TSINTEGER; {liczi zgloszen smo}
licz1: TSINTEGER;
licz2: TSINTEGER;
licz3: TSINTEGER;
liczKli: TSINTEGER;
srKan: TSINTEGER;
srKan1: TSINTEGER;
srKan2: TSINTEGER;
srKan3: TSINTEGER;
klKol: TSINTEGER; {liczi zgloszen kolejki}
klKol1: TSINTEGER;
klKol2: TSINTEGER;
klKol3: TSINTEGER;
pstwo: REAL;

pstwo1: REAL;
pstwo2: REAL;
pstwo3: REAL;
KlWe: INTEGER;{ile wchodzi}

KlWe1: INTEGER;
KlWe2: INTEGER;
KlWe3: INTEGER;
KlWy: INTEGER;{ile wychodzi}

KlWy1: INTEGER;
KlWy2: INTEGER;
KlWy3: INTEGER;
uzyCzas: SREAL;{srend czas przebywania}
uzyCzas1: SREAL;
uzyCzas2: SREAL;
uzyCzas3: SREAL;
uzyCzasDev: SREAL;
uzyCzasDev1: SREAL;
uzyCzasDev2: SREAL;
uzyCzasDev3: SREAL;
uzylicz: SREAL;{srednia liczba zgloszen}

uzylicz1: SREAL;
uzylicz2: SREAL;
uzylicz3: SREAL;
uzyliczDev: SREAL;
uzyliczDev1: SREAL;
uzyliczDev2: SREAL;
uzyliczDev3: SREAL;
uzyKan: SREAL; {srednia liczba zajetych Kanw}

uzyKan1: SREAL;
uzyKan2: SREAL;

background image

7

uzyKan3: SREAL;
uzyKanDev: SREAL;
uzyKanDev1: SREAL;
uzyKanDev2: SREAL;
uzyKanDev3: SREAL;
uzyklKol: SREAL; {srednia liczba zgloszen w kolejkach}
uzyklKol1: SREAL;
uzyklKol2: SREAL;
uzyklKol3: SREAL;
uzyklKolDev: SREAL;
uzyklKolDev1: SREAL;
uzyklKolDev2: SREAL;
uzyklKolDev3: SREAL;
uzyPstwo: SREAL;{srednie prawdopodobienstwo obsluzenia zgloszenia}
uzyPstwo1: SREAL;
uzyPstwo2: SREAL;
uzyPstwo3: SREAL;


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

ASK METHOD odchkli(IN nrSmo: INTEGER; IN licz: REAL);
ASK METHOD srCzasKli(IN nrSmo: INTEGER; IN licz: REAL);
ASK METHOD sreCzasOdch(IN nrSmo: INTEGER; IN licz: REAL);

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

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

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

ASK METHOD sreLiczKliKolOdch(IN nrSmo: INTEGER; IN licz: REAL);
ASK METHOD prawdopodobienstwoObs(IN nrSmo:INTEGER;IN licz:REAL);

ASK METHOD licznikStart(IN nrSmo: INTEGER);

ASK METHOD licznikStop(IN nrSmo:INTEGER);

ASK METHOD licznikPraw(IN nrSmo: INTEGER);

ASK METHOD liczKliMinus(IN nrSmo: INTEGER);

ASK METHOD liczKliPlus(IN nrSmo: INTEGER);

ASK METHOD liczKanMinus(IN nrSmo: INTEGER);

ASK METHOD liczKanPlus(IN nrSmo: INTEGER);

ASK METHOD czasPrzebyKli(IN numer:INTEGER; IN czas:REAL);

ASK METHOD liczKliKolPlus(IN nrSmo: INTEGER);

ASK METHOD liczKliKolMinus(IN nrSmo: INTEGER);

ASK METHOD MonPocz();

ASK METHOD licznikZero(IN nrSmo:INTEGER);

ASK METHOD SredniCzasZero(IN nrSmo:INTEGER);

ASK METHOD LiczZajKanZero(IN nrSmo:INTEGER);

ASK METHOD liczKliKolZero(IN nrSmo: INTEGER);

END OBJECT;
GenObj = OBJECT(RandomObj);{generator}

background image

8


ParametrRozkladuGeneratora1: REAL;
ParametrRozkladuGeneratora2: REAL;
Czas:REAL;
ParametrRozkladuPaczki1: REAL;
ParametrRozkladuPaczki2: REAL;
Monitor: MonObj;
Kli: KliObj;
NrGeneratora: INTEGER;
LiczbaKliowDoWygenerowania: INTEGER;
TELL METHOD Generowanie();
ASK METHOD Init(IN prg1: REAL; IN prg2: REAL; IN lk: INTEGER; IN prp1:REAL; IN prp2:REAL; IN
m: MonObj; IN nrgen: INTEGER);

END OBJECT;

GniObj = OBJECT(RandomObj);{gniazdo}
NrGniT: INTEGER;
ParametrRozkladuGniT1: REAL;
ParametrRozkladuGniT2: REAL;
ParametrRozkladuGniT3: REAL;
Kany: INTEGER;
Aktywne: INTEGER;

CzasWyjscia: REAL;
CzasWyjsciaMaksymalny: SREAL;
p: REAL;
Trigger: TriggerObj;
Monitor: MonObj;
obs1: INTEGER;
TELL METHOD Obsluga(IN kol: BasicGroupObj);
ASK METHOD Init(IN prg1: REAL; IN prg2: REAL; IN prg3: REAL; IN kan: INTEGER; IN akt:
INTEGER; IN pstwo: REAL; IN trig: TriggerObj; IN m: MonObj; IN nrg: INTEGER);
END OBJECT;



kol1Obj = OBJECT(StackObj); {kolejak 1 LIFO}
NrKolejki: INTEGER;
Pojemnosc: INTEGER;
licz: TSINTEGER;
LiczbaKliow:TSINTEGER;
Random: RandomObj;
Trigger: TriggerObj;
Monitor: MonObj;

background image

9

CzasWejscia:REAL;
CzasWejsciaMax:SREAL;
ASK METHOD Wstaw(INOUT elem: KliObj);
ASK METHOD Init(IN ra: RandomObj; IN poj: INTEGER; IN trig: TriggerObj; IN m: MonObj; IN nrk:
INTEGER);

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

kol2Obj = OBJECT(RankedObj); {kolejka 2 priorytety}
NrKolejki: INTEGER;
Pojemnosc: INTEGER;
licz: TSINTEGER;
LiczbaKliow:TSINTEGER;
Random: RandomObj;
Trigger: TriggerObj;
Monitor: MonObj;
CzasWejscia:REAL;
CzasWejsciaMax:SREAL;
ASK METHOD Wstaw(INOUT elem: KliObj);
ASK METHOD Init(IN ra: RandomObj; IN poj: INTEGER; IN trig: TriggerObj; IN m: MonObj; IN nrk:
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;


kol3Obj = OBJECT(QueueObj);{kolejka 3 fifo}
NrKolejki: INTEGER;
Pojemnosc: INTEGER;
licz: TSINTEGER;
LiczbaKliow:TSINTEGER;
Random: RandomObj;
Trigger: TriggerObj;
Monitor: MonObj;
CzasWejscia:REAL;
CzasWejsciaMax:SREAL;
ASK METHOD Wstaw(INOUT elem: KliObj);

background image

10

ASK METHOD Init(IN ra: RandomObj; IN poj: INTEGER; IN trig: TriggerObj; IN m: MonObj; IN nrk:
INTEGER);

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


KliObj = OBJECT{Kli}
Priorytet: INTEGER;
czasWe: REAL;
czasWe1: REAL;
czasWe2: REAL;
czasWe3: REAL;
nr: INTEGER;
Monitor: MonObj;
ASK METHOD Init(IN m: MonObj);
ASK METHOD NadajPriorytet(IN priorytet: INTEGER);
TELL METHOD Niecierpliwosc(IN nrSMO: INTEGER; IN czas: REAL; IN kol: BasicGroupObj);
ASK METHOD zapiszCzas(IN nrSMO: INTEGER; IN taj: REAL);
END OBJECT;

OBJECT MonObj;
ASK METHOD licznikStart(IN nrSmo: INTEGER); {do zliczania Klientow wchodzoncych do systemu}
BEGIN
nr:=nrSmo;
IF nr = 0
KlWe:=KlWe+1;
ELSIF nr = 1
KlWe1:=KlWe1+1;
ELSIF nr = 2
KlWe2:=KlWe2+1;
ELSIF nr = 3
KlWe3:=KlWe3+1;
END IF;
END METHOD;

ASK METHOD licznikStop(IN nrSmo: INTEGER); {do zliczania Klientow wychodzoncych z systemu}
BEGIN
nr:=nrSmo;
IF nr = 0
KlWy:=KlWy+1;
ELSIF nr = 1

background image

11

KlWy1:=KlWy1+1;
ELSIF nr = 2
KlWy2:=KlWy2+1;
ELSIF nr = 3
KlWy3:=KlWy3+1;
END IF;
END METHOD;

ASK METHOD licznikPraw(IN nrSmo: INTEGER);
BEGIN
nr:=nrSmo;
IF nr = 0
pstwo:=FLOAT(KlWy)/FLOAT(KlWe);
ELSIF nr = 1
pstwo1:=FLOAT(KlWy1)/FLOAT(KlWe1);
ELSIF nr = 2
pstwo2:=FLOAT(KlWy2)/FLOAT(KlWe2);
ELSIF nr = 3
pstwo3:=FLOAT(KlWy3)/FLOAT(KlWe3);
END IF;
END METHOD;


ASK METHOD liczKliMinus(IN nrSmo: INTEGER);{zmniejsza licznikow Klientow}
BEGIN
nr:=nrSmo;
IF nr = 0
licz:=licz-1;
ELSIF nr = 1
licz1:=licz1-1;
ELSIF nr = 2
licz2:=licz2-1;
ELSIF nr = 3
licz3:=licz3-1;
END IF;
END METHOD;

ASK METHOD liczKliPlus(IN nrSmo: INTEGER); {zwieksza licz Klientow}
BEGIN
nr:=nrSmo;
IF nr = 0
licz:=licz+1;
ELSIF nr = 1
licz1:=licz1+1;
ELSIF nr = 2

background image

12

licz2:=licz2+1;
ELSIF nr = 3
licz3:=licz3+1;
END IF;
END METHOD;

ASK METHOD liczKliKolPlus(IN nrSmo: INTEGER); {zwiekszenie licza Klientow z kolejki}
BEGIN
nr:=nrSmo;
IF nr = 0
klKol:=klKol+1;
ELSIF nr = 1
klKol1:=klKol1+1;
ELSIF nr = 2
klKol2:=klKol2+1;
ELSIF nr = 3
klKol3:=klKol3+1;
END IF;
END METHOD;


ASK METHOD liczKliKolMinus(IN nrSmo: INTEGER); {zmniejszenie licznika Klientow z kolejki}
BEGIN
nr:=nrSmo;
IF nr = 0
klKol:=klKol-1;
ELSIF nr = 1
klKol1:=klKol1-1;
ELSIF nr = 2
klKol2:=klKol2-1;
ELSIF nr = 3
klKol3:=klKol3-1;
END IF;
END METHOD;


ASK METHOD liczKanMinus(IN nrSmo: INTEGER); {zmniejszenie licznika zajetych Kanalow}
BEGIN
nr:=nrSmo;
IF nr = 0
srKan:=srKan-1;
ELSIF nr = 1
srKan1:=srKan1-1;
ELSIF nr = 2
srKan2:=srKan2-1;

background image

13

ELSIF nr = 3
srKan3:=srKan3-1;
END IF;
END METHOD;

ASK METHOD liczKanPlus(IN nrSmo: INTEGER); {zwiekszenie licznika zajetych Kanalow}
BEGIN
nr:=nrSmo;
IF nr = 0
srKan:=srKan+1;
ELSIF nr = 1
srKan1:=srKan1+1;
ELSIF nr = 2
srKan2:=srKan2+1;
ELSIF nr = 3
srKan3:=srKan3+1;
END IF;
END METHOD;

ASK METHOD MonPocz(); {inicjalizacja monitora}
BEGIN
licz:=0;
licz1:=0;
licz2:=0;
licz3:=0;
END METHOD;

ASK METHOD czasPrzebyKli(IN nrSmo: INTEGER; IN czas:REAL); {zliczanie czasu przebywania
kienta w semo}
BEGIN
nr := nrSmo;
IF (nr = 0)
srCzas:= czas;
ELSIF (nr = 1)
srCzas1:= czas;
ELSIF (nr = 2)
srCzas2:= czas;
ELSIF nr = 3
srCzas3:= czas;
END IF;
END METHOD;

ASK METHOD liczkli(IN nrSmo: INTEGER; IN licz: REAL);
BEGIN
nr:=nrSmo;

background image

14

IF (nr = 0)
uzylicz:=licz;
ELSIF nr = 1
uzylicz1:=licz;
ELSIF nr = 2
uzylicz2:=licz;
ELSIF nr = 3
uzylicz3:=licz;
END IF;
END METHOD;

ASK METHOD odchkli(IN nrSmo: INTEGER; IN licz: REAL);
BEGIN
nr:=nrSmo;
IF (nr = 0)
uzyliczDev:=licz;
ELSIF nr = 1
uzyliczDev1:=licz;
ELSIF nr = 2
uzyliczDev2:=licz;
ELSIF nr = 3
uzyliczDev3:=licz;
END IF;
END METHOD;

ASK METHOD srCzasKli(IN nrSmo: INTEGER; IN licz: REAL);
BEGIN
nr:=nrSmo;
IF nr = 0
uzyCzas:=licz;
ELSIF nr = 1
uzyCzas1:=licz;
ELSIF nr = 2
uzyCzas2:=licz;
ELSIF nr = 3
uzyCzas3:=licz;
END IF;
END METHOD;

ASK METHOD sreCzasOdch(IN nrSmo: INTEGER; IN licz: REAL);
BEGIN
nr:=nrSmo;
IF nr = 0
uzyCzasDev:=licz;
ELSIF nr = 1

background image

15

uzyCzasDev1:=licz;
ELSIF nr = 2
uzyCzasDev2:=licz;
ELSIF nr = 3
uzyCzasDev3:=licz;
END IF;
END METHOD;

ASK METHOD sreZajKan(IN nrSmo: INTEGER; IN licz: REAL);
BEGIN
nr:=nrSmo;
IF nr = 0
uzyKan:=licz;
ELSIF nr = 1
uzyKan1:=licz;
ELSIF nr = 2
uzyKan2:=licz;
ELSIF nr = 3
uzyKan3:=licz;
END IF;
END METHOD;
ASK METHOD sreZajKanOdch(IN nrSmo: INTEGER; IN licz: REAL);
BEGIN
nr:=nrSmo;
IF nr = 0
uzyKanDev:=licz;
ELSIF nr = 1
uzyKanDev1:=licz;
ELSIF nr = 2
uzyKanDev2:=licz;
ELSIF nr = 3
uzyKanDev3:=licz;
END IF;
END METHOD;

ASK METHOD sreLiczKliKol(IN nrSmo: INTEGER; IN licz: REAL);
BEGIN
nr:=nrSmo;
IF nr = 0
uzyklKol:=licz;
ELSIF nr = 1
uzyklKol1:=licz;
ELSIF nr = 2
uzyklKol2:=licz;
ELSIF nr = 3

background image

16

uzyklKol3:=licz;
END IF;
END METHOD;

ASK METHOD sreLiczKliKolOdch(IN nrSmo: INTEGER; IN licz: REAL);
BEGIN
nr:=nrSmo;
IF nr = 0
uzyklKolDev:=licz;
ELSIF nr = 1
uzyklKolDev1:=licz;
ELSIF nr = 2
uzyklKolDev2:=licz;
ELSIF nr = 3
uzyklKolDev3:=licz;
END IF;
END METHOD;

ASK METHOD prawdopodobienstwoObs(IN nrSmo:INTEGER;IN licz:REAL);
BEGIN
nr:=nrSmo;
IF nr = 0
uzyPstwo:=licz;
ELSIF nr = 1
uzyPstwo1:=licz;
ELSIF nr = 2
uzyPstwo2:=licz;
ELSIF nr = 3
uzyPstwo3:=licz;
END IF;
END METHOD;

ASK METHOD licznikZero(IN nrSmo:INTEGER); {zerowanie licza}
BEGIN
nr:=nrSmo;
IF nr = 0
licz:=0;
ELSIF nr = 1
licz1:=0;
ELSIF nr = 2
licz2:=0;
ELSIF nr = 3
licz3:=0;
END IF;
END METHOD;

background image

17


ASK METHOD SredniCzasZero(IN nrSmo:INTEGER); {zerowanie czasu przebywania w smo}
BEGIN
nr:=nrSmo;
IF nr = 0
srCzas:=0.0;
ELSIF nr = 1
srCzas1:=0.0;
ELSIF nr = 2
srCzas2:=0.0;
ELSIF nr = 3
srCzas3:=0.0;
END IF;
END METHOD;

ASK METHOD LiczZajKanZero(IN nrSmo:INTEGER); {zerowanie licznika zajetych kanalow}
BEGIN
nr:=nrSmo;
IF nr = 0
srKan:=0;
ELSIF nr = 1
srKan1:=0;
ELSIF nr = 2
srKan2:=0;
ELSIF nr = 3
srKan3:=0;
END IF;
END METHOD;

ASK METHOD liczKliKolZero(IN nrSmo: INTEGER); {zerowanie licznika klienta w kolejkach}
BEGIN
nr:=nrSmo;
IF nr = 0
klKol:=0;
ELSIF nr = 1
klKol1:=0;
ELSIF nr = 2
klKol2:=0;
ELSIF nr = 3
klKol3:=0;
END IF;
END METHOD;

END OBJECT;

background image

18


OBJECT KliObj;{Kli}

ASK METHOD Init(IN m: MonObj);
BEGIN
Monitor:= m;
END METHOD;

ASK METHOD NadajPriorytet(IN priorytet: INTEGER);
BEGIN
Priorytet:=priorytet;
END METHOD;

TELL METHOD Niecierpliwosc(IN nrSMO: INTEGER; IN czas: REAL; IN kol: BasicGroupObj);
BEGIN
nr:=nrSMO;

WAIT DURATION czas;
ASK kol TO RemoveThis(SELF);
ASK Monitor TO liczKliMinus(nrSMO);
ASK Monitor TO liczKliKolMinus(nrSMO);
ASK Monitor TO liczKliMinus(0);
ASK Monitor TO liczKliKolMinus(0);
IF (w = 1)
OUTPUT("Gniazdo ",nrSMO,"->Kli zniecierpliwiony opuscil. Czas= ", SimTime);
END IF;
DISPOSE(SELF);
ON INTERRUPT;
END WAIT;
END METHOD;


ASK METHOD zapiszCzas(IN nrSMO: INTEGER; IN czas: REAL);
BEGIN
nr:=nrSMO;
IF (nr = 0)
czasWe:=czas;
ELSIF nr=1
czasWe1:=czas;
ELSIF nr=2
czasWe2:=czas;
ELSIF nr=3
czasWe3:=czas;
END IF;
END METHOD;

background image

19


END OBJECT;

OBJECT GniObj;{gniazdo}
TELL METHOD Obsluga(IN kol: BasicGroupObj);
VAR
t: REAL;
Kli: KliObj;
BEGIN
WHILE ASK kol TO numberIn > 0

Kli:= ASK kol TO Remove;
ASK Monitor TO liczKliKolMinus(0);
ASK Monitor TO liczKliKolMinus(NrGniT);
Aktywne:=Aktywne+1;
ASK Monitor TO liczKanPlus(NrGniT);
ASK Monitor TO liczKanPlus(0);

IF NrGniT=1
t:=Exponential(ParametrRozkladuGniT1);
t:=ABS(t);
WAIT DURATION t;
ON INTERRUPT
END WAIT;
IF (UniformReal(0.0, 1.0)>p);
ASK Monitor TO liczKliMinus(0);

ASK Monitor TO liczKliMinus(1);
ASK kol1 TO Wstaw(Kli);
Aktywne:=Aktywne-1;
ASK Monitor TO liczKanMinus(1);
ASK Monitor TO liczKanMinus(0);
ELSE

ASK Monitor TO licznikStop(1);

ASK Monitor TO czasPrzebyKli(1,SimTime-ASK Kli TO czasWe1);
ASK Monitor TO liczKliMinus(1);
Aktywne:=Aktywne-1;
ASK Monitor TO liczKanMinus(1);
ASK Monitor TO liczKanMinus(0);
IF w=1

OUTPUT("Gniazdo ",NrGniT,"->obsluzylo Klia Czas= ", SimTime);

END IF;

ASK kol3 TO Wstaw(Kli);

END IF;

background image

20

ELSIF NrGniT=2
Interrupt(Kli,"Niecierpliwosc");

t:=Erlang(ParametrRozkladuGniT1, TRUNC(ParametrRozkladuGniT2));


t:=ABS(t);

WAIT DURATION t;
ON INTERRUPT
END WAIT;
ASK Monitor TO licznikStop(2);

ASK Monitor TO czasPrzebyKli(2,SimTime-ASK Kli TO czasWe1);
ASK Monitor TO liczKliMinus(2);
Aktywne:=Aktywne-1;
ASK Monitor TO liczKanMinus(2);
ASK Monitor TO liczKanMinus(0);
IF w=1
OUTPUT("Gniazdo ",NrGniT,"->obsluzylo Klia Czas= ", SimTime);
END IF;
ASK kol3 TO Wstaw(Kli);

ELSIF NrGniT=3
Interrupt(Kli,"Niecierpliwosc");
t:=Normal(ParametrRozkladuGniT1, ParametrRozkladuGniT2);
t:=ABS(t);

WAIT DURATION t;
ON INTERRUPT
END WAIT;
IF (UniformReal(0.0, 1.0)>p);
ASK Monitor TO liczKliMinus(0);
ASK Monitor TO liczKliMinus(3);
Aktywne:=Aktywne-1;
ASK Monitor TO liczKanMinus(3);
ASK Monitor TO liczKanMinus(0);
ASK kol2 TO Wstaw(Kli);
ELSE
ASK Monitor TO licznikStop(3);

ASK Monitor TO licznikStop(0);

ASK Monitor TO czasPrzebyKli(3,SimTime-ASK Kli TO czasWe1);
ASK Monitor TO czasPrzebyKli(0,SimTime-ASK Kli TO czasWe);
DISPOSE(Kli);

background image

21

ASK Monitor TO liczKliMinus(3);
Aktywne:=Aktywne-1;
ASK Monitor TO liczKanMinus(3);
ASK Monitor TO liczKanMinus(0);
IF w=1

OUTPUT("Gniazdo ",NrGniT,"->obsluzylo Klia Czas= ", SimTime);

END IF;
END IF;
END IF;
END WHILE;



END METHOD;

ASK METHOD Init(IN prg1: REAL; IN prg2: REAL; IN prg3: REAL; IN kan: INTEGER; IN akt: INTEGER;
IN pstwo: REAL; IN trig: TriggerObj; IN m: MonObj;IN nrg: INTEGER);
BEGIN
ParametrRozkladuGniT1:=prg1;
ParametrRozkladuGniT2:=prg2;
ParametrRozkladuGniT3:=prg3;
Kany:= kan;
Aktywne:= akt;
Trigger := trig;
Monitor:=m;
p:=pstwo;
NrGniT:=nrg;
END METHOD;

END OBJECT;



OBJECT GenObj; {generator}

ASK METHOD Init(IN prg1: REAL; IN prg2: REAL; IN lk: INTEGER; IN prp1:REAL; IN prp2:REAL; IN
m: MonObj; IN nrgen: INTEGER);
BEGIN
ParametrRozkladuPaczki1:= prp1;
ParametrRozkladuPaczki2:=prp2;
Monitor:=m;
ParametrRozkladuGeneratora1:= prg1;
ParametrRozkladuGeneratora2:= prg2;
LiczbaKliowDoWygenerowania:= lk;
NrGeneratora:=nrgen;

background image

22

END METHOD;



TELL METHOD Generowanie;
VAR
Kli: KliObj;
paczkaInt1: INTEGER;
ileDoKonca1: INTEGER;
paczkaReal1: REAL;
i: INTEGER;
j: INTEGER;
sumaWygenerowanych: INTEGER;
czas1: REAL;
BEGIN
sumaWygenerowanych:=0;

WHILE (sumaWygenerowanych<LiczbaKliowDoWygenerowania)

IF (NrGeneratora=1)

paczkaReal1:=Erlang(ParametrRozkladuPaczki1, TRUNC(ParametrRozkladuPaczki2));

paczkaReal1:=ABS(paczkaReal1);

ELSIF (NrGeneratora=2)

paczkaReal1:=Normal(ParametrRozkladuPaczki1, ParametrRozkladuPaczki2);

paczkaReal1:=ABS(paczkaReal1);

END IF;
paczkaInt1:=TRUNC(paczkaReal1);
sumaWygenerowanych:=sumaWygenerowanych+paczkaInt1;
ileDoKonca1:=LiczbaKliowDoWygenerowania-sumaWygenerowanych;
IF ileDoKonca1<0
paczkaInt1:=paczkaInt1+ileDoKonca1;
END IF;
IF (NrGeneratora=1)

czas1:=Weibull(ParametrRozkladuGeneratora1,ParametrRozkladuGeneratora2);

czas1:=ABS(czas1);

ELSIF (NrGeneratora=2)

czas1:=Exponential(ParametrRozkladuPaczki1);

czas1:=ABS(czas1);

END IF;

WAIT DURATION czas1
ON INTERRUPT

background image

23

END WAIT;
FOR j:=1 TO paczkaInt1
NEW (Kli);
ASK Monitor TO licznikStart(0);
ASK Kli TO NadajPriorytet(UniformInt(0,10));
ASK Kli TO Init(monn);
Czas:=SimTime;

ASK Kli TO zapiszCzas(0,Czas);

IF w=1

OUTPUT("Generator ",NrGeneratora,"->wygenerowal Klia Czas= ", SimTime);

END IF;
IF NrGeneratora=1

ASK kol1 TO Wstaw(Kli);

ELSIF NrGeneratora=2

ASK kol2 TO Wstaw(Kli);

END IF;

END FOR;
END WHILE;
END METHOD;
END OBJECT;


OBJECT kol1Obj;{kolejka 1}
ASK METHOD Wstaw(INOUT elem: KliObj);
VAR
czasNiecierpliwosci:REAL;
BEGIN
Add(elem);
ASK Monitor TO licznikStart(1);

ASK Monitor TO liczKliKolPlus(0);
ASK Monitor TO liczKliKolPlus(1);
ASK elem TO zapiszCzas(1,SimTime);
ASK Monitor TO liczKliPlus(0);
ASK Monitor TO liczKliPlus(1);
licz:=licz+1;

czasNiecierpliwosci:= ASK Random TO Exponential(1.0/50.5);

czasNiecierpliwosci:=ABS(czasNiecierpliwosci);

IF ASK GniT[NrKolejki] TO Aktywne < ASK GniT[NrKolejki] TO Kany
TELL GniT[NrKolejki] TO Obsluga(SELF);
END IF;
END METHOD;

ASK METHOD Init(IN ra: RandomObj; IN poj: INTEGER; IN trig: TriggerObj; IN m: MonObj; IN nrk:
INTEGER);

background image

24

BEGIN
Pojemnosc:=poj;
Random := ra;
Monitor:=m;
licz:= 0;
Trigger:=trig;
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 kol2Obj;{kolejka 2}
ASK METHOD Wstaw(INOUT elem: KliObj);
VAR

czasNiecierpliwosci:REAL;

BEGIN

IF numberIn < Pojemnosc

Add(elem);
ASK Monitor TO licznikStart(2);

ASK Monitor TO liczKliKolPlus(0);

background image

25

ASK Monitor TO liczKliKolPlus(2);
ASK elem TO zapiszCzas(2,SimTime);
ASK Monitor TO liczKliPlus(0);
ASK Monitor TO liczKliPlus(2);
licz:=licz+1;

czasNiecierpliwosci:=ASK Random TO Erlang(20.0,TRUNC(1.0));

czasNiecierpliwosci:=ABS(czasNiecierpliwosci);


IF ASK GniT[NrKolejki] TO Aktywne < ASK GniT[NrKolejki] TO Kany
TELL GniT[NrKolejki] TO Obsluga(SELF);
END IF;
ELSE
DISPOSE(elem);
END IF;
END METHOD;



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

VAR
Kli1:KliObj;
Kli2:KliObj;
BEGIN
Kli1:=a;

Kli2:=b;
IF ASK Kli1 TO Priorytet < ASK Kli2 TO Priorytet
RETURN -1;
END IF;
IF ASK Kli1 TO Priorytet > ASK Kli2 TO Priorytet
RETURN 1;
END IF;
RETURN 0;
END METHOD;

ASK METHOD Init(IN ra: RandomObj; IN poj: INTEGER; IN trig: TriggerObj; IN m: MonObj; IN nrk:
INTEGER);
BEGIN
Pojemnosc:=poj;
Random := ra;
Monitor:=m;
Trigger:=trig;
licz:= 0;
NrKolejki:=nrk;
END METHOD;

background image

26


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 kol3Obj;{kolejka 3}
ASK METHOD Wstaw(INOUT elem: KliObj);
VAR
czasNiecierpliwosci:REAL;
BEGIN
Add(elem);
ASK Monitor TO licznikStart(3);

ASK Monitor TO liczKliKolPlus(0);
ASK Monitor TO liczKliKolPlus(3);
ASK elem TO zapiszCzas(3,SimTime);
ASK Monitor TO liczKliPlus(0);
ASK Monitor TO liczKliPlus(3);
licz:=licz+1;
czasNiecierpliwosci:= ASK Random TO Normal(1.0,50.0);
czasNiecierpliwosci:=ABS(czasNiecierpliwosci);

IF ASK GniT[NrKolejki] TO Aktywne < ASK GniT[NrKolejki] TO Kany
TELL GniT[NrKolejki] TO Obsluga(SELF);

background image

27

END IF;

END METHOD;

ASK METHOD Init(IN ra: RandomObj; IN poj: INTEGER; IN trig: TriggerObj; IN m: MonObj; IN nrk:
INTEGER);
BEGIN
Pojemnosc:=poj;
Random := ra;
Trigger:=trig;
Monitor:=m;
licz:= 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;

background image

28

io: StreamObj;

textLine:STRING;
daneWej:INTEGER;
ile:INTEGER;
a: INTEGER;
i: INTEGER;
p1rg1:REAL;{ Generator 1}
p2rg1:REAL;
lkg1:INTEGER;
p1rp1:REAL;
p2rp1:REAL;
p1rg2:REAL;{ Generator 2}
p2rg2:REAL;
lkg2:INTEGER;
p1rp2:REAL;
p2rp2:REAL;
p1rgn1: REAL;{ Gniazdo 1}
p2rgn1: REAL;
p3rgn1: REAL;
p1rgn2: REAL;{ Gniazdo 2}
p2rgn2: REAL;
p3rgn2: REAL;
p1rgn3: REAL;{ Gniazdo 3}
p2rgn3: REAL;
p3rgn3: REAL;

pojemnosck2:INTEGER;{Kolejka 2}
BEGIN

NEW(trigg);
NEW(monn);
NEW(ran);
NEW(GenT, 1..2);
NEW(GenT[1]);
NEW(GenT[2]);
NEW(GniT, 1..3);
NEW(GniT[1]);
NEW(GniT[2]);
NEW(GniT[3]);
NEW(kol1);
NEW(kol2);
NEW(kol3);


background image

29

NEW(io);
ASK io TO Open("data.txt",Input);
WHILE NOT (ASK io eof)

ASK io TO ReadLine(textLine);

p1rg1:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p2rg1:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p1rp1:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p2rp1:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

lkg1:=STRTOINT(textLine);

ASK io TO ReadLine(textLine);

p1rg2:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p2rg2:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p1rp2:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p2rp2:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

lkg2:=STRTOINT(textLine);

ASK io TO ReadLine(textLine);

p1rgn1:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p2rgn1:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);
p3rgn1:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p1rgn2:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p2rgn2:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p3rgn2:=STRTOREAL(textLine);


ASK io TO ReadLine(textLine);

background image

30

p1rgn3:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p2rgn3:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p3rgn3:=STRTOREAL(textLine);


ASK io TO ReadLine(textLine);

pojemnosck2:=STRTOINT(textLine);

ASK io TO ReadLine(textLine);
ile:=STRTOINT(textLine);

ASK io TO ReadLine(textLine);
w:=STRTOINT(textLine);

END WHILE;
ASK io TO Close;
DISPOSE(io);


OUTPUT("");



ASK monn TO MonPocz();

ASK GenT[1] TO Init(p1rg1, p2rg1, lkg1, p1rp1, p2rp1, monn,1);
ASK GenT[2] TO Init(p1rg2, p2rg2, lkg2, p1rp2, p2rp2, monn,2);
ASK GniT[1] TO Init(p1rgn1,p2rgn1,p3rgn1,4,0,0.5,trigg, monn,1);
ASK GniT[2] TO Init(p1rgn2,p2rgn2,p3rgn2,1,0,1.0,trigg, monn,2);
ASK GniT[3] TO Init(p1rgn3,p2rgn3,p3rgn3,2,0,0.5,trigg, monn,3);
ASK kol1 TO Init(ran, 0, trigg, monn,1);
ASK kol2 TO Init(ran, pojemnosck2, trigg, monn,2);
ASK kol3 TO Init(ran, 0, trigg, monn,3);

FOR i:=0 TO ile

TELL GenT[1] TO Generowanie();

TELL GenT[2] TO Generowanie();

StartSimulation();

ResetSimTime(0.0);

background image

31


ASK monn TO liczkli(0,ASK GETMONITOR(ASK monn TO licz,ITimedStatObj) TO Mean());

ASK monn TO odchkli(0,ASK GETMONITOR(ASK monn TO licz,ITimedStatObj) TO StdDev());

ASK monn TO liczkli(1,ASK GETMONITOR(ASK monn TO licz1,ITimedStatObj) TO Mean());

ASK monn TO odchkli(1,ASK GETMONITOR(ASK monn TO licz1,ITimedStatObj) TO StdDev());

ASK monn TO liczkli(2,ASK GETMONITOR(ASK monn TO licz2,ITimedStatObj) TO Mean());

ASK monn TO odchkli(2,ASK GETMONITOR(ASK monn TO licz2,ITimedStatObj) TO StdDev());

ASK monn TO liczkli(3,ASK GETMONITOR(ASK monn TO licz3,ITimedStatObj) TO Mean());

ASK monn TO odchkli(3,ASK GETMONITOR(ASK monn TO licz3,ITimedStatObj) TO StdDev());

ASK monn TO srCzasKli(0,ASK GETMONITOR(ASK monn TO srCzas,RStatObj) TO Mean());

ASK monn TO sreCzasOdch(0,ASK GETMONITOR(ASK monn TO srCzas,RStatObj) TO StdDev());

ASK monn TO srCzasKli(1,ASK GETMONITOR(ASK monn TO srCzas1,RStatObj) TO Mean());

ASK monn TO sreCzasOdch(1,ASK GETMONITOR(ASK monn TO srCzas1,RStatObj) TO

StdDev());

ASK monn TO srCzasKli(2,ASK GETMONITOR(ASK monn TO srCzas2,RStatObj) TO Mean());

ASK monn TO sreCzasOdch(2,ASK GETMONITOR(ASK monn TO srCzas2,RStatObj) TO

StdDev());

ASK monn TO srCzasKli(3,ASK GETMONITOR(ASK monn TO srCzas3,RStatObj) TO Mean());

ASK monn TO sreCzasOdch(3,ASK GETMONITOR(ASK monn TO srCzas3,RStatObj) TO

StdDev());

ASK monn TO sreZajKan(0,ASK GETMONITOR(ASK monn TO srKan,ITimedStatObj) TO

Mean());

ASK monn TO sreZajKanOdch(0,ASK GETMONITOR(ASK monn TO srKan,ITimedStatObj) TO

StdDev());

ASK monn TO sreZajKan(1,ASK GETMONITOR(ASK monn TO srKan1,ITimedStatObj) TO

Mean());

ASK monn TO sreZajKanOdch(1,ASK GETMONITOR(ASK monn TO srKan1,ITimedStatObj) TO

StdDev());

ASK monn TO sreZajKan(2,ASK GETMONITOR(ASK monn TO srKan2,ITimedStatObj) TO

Mean());

ASK monn TO sreZajKanOdch(2,ASK GETMONITOR(ASK monn TO srKan2,ITimedStatObj) TO

StdDev());

ASK monn TO sreZajKan(3,ASK GETMONITOR(ASK monn TO srKan3,ITimedStatObj) TO

Mean());

ASK monn TO sreZajKanOdch(3,ASK GETMONITOR(ASK monn TO srKan3,ITimedStatObj) TO

StdDev());

ASK monn TO sreLiczKliKol(0,ASK GETMONITOR(ASK monn TO klKol,ITimedStatObj) TO

Mean());

ASK monn TO sreLiczKliKolOdch(0,ASK GETMONITOR(ASK monn TO klKol,ITimedStatObj) TO

StdDev());

ASK monn TO sreLiczKliKol(1,ASK GETMONITOR(ASK monn TO klKol1,ITimedStatObj) TO

Mean());

ASK monn TO sreLiczKliKolOdch(1,ASK GETMONITOR(ASK monn TO klKol1,ITimedStatObj) TO

StdDev());

background image

32

ASK monn TO sreLiczKliKol(2,ASK GETMONITOR(ASK monn TO klKol2,ITimedStatObj) TO

Mean());

ASK monn TO sreLiczKliKolOdch(2,ASK GETMONITOR(ASK monn TO klKol2,ITimedStatObj) TO

StdDev());

ASK monn TO sreLiczKliKol(3,ASK GETMONITOR(ASK monn TO klKol3,ITimedStatObj) TO

Mean());

ASK monn TO sreLiczKliKolOdch(3,ASK GETMONITOR(ASK monn TO klKol3,ITimedStatObj) TO

StdDev());

ASK monn TO licznikPraw(1);

ASK monn TO prawdopodobienstwoObs(1,ASK monn TO pstwo1);

ASK monn TO licznikPraw(2);

ASK monn TO prawdopodobienstwoObs(2,ASK monn TO pstwo2);

ASK monn TO licznikPraw(0);

ASK monn TO licznikPraw(3);

ASK monn TO prawdopodobienstwoObs(0,ASK monn TO pstwo);

ASK monn TO prawdopodobienstwoObs(3,ASK monn TO pstwo3);



ASK (GETMONITOR(ASK monn TO licz,ITimedStatObj)) TO Reset();

ASK monn TO licznikZero(0);

ASK (GETMONITOR(ASK monn TO licz1,ITimedStatObj)) TO Reset();

ASK monn TO licznikZero(1);

ASK (GETMONITOR(ASK monn TO licz2,ITimedStatObj)) TO Reset();

ASK monn TO licznikZero(2);

ASK (GETMONITOR(ASK monn TO licz3,ITimedStatObj)) TO Reset();

ASK monn TO licznikZero(3);


ASK (GETMONITOR(ASK monn TO srCzas,RStatObj)) TO Reset();

ASK monn TO SredniCzasZero(0);

ASK (GETMONITOR(ASK monn TO srCzas1,RStatObj)) TO Reset();

ASK monn TO SredniCzasZero(1);

ASK (GETMONITOR(ASK monn TO srCzas2,RStatObj)) TO Reset();

ASK monn TO SredniCzasZero(2);

ASK (GETMONITOR(ASK monn TO srCzas3,RStatObj)) TO Reset();

ASK monn TO SredniCzasZero(3);


ASK (GETMONITOR(ASK monn TO srKan,ITimedStatObj)) TO Reset();

ASK monn TO LiczZajKanZero(0);

ASK (GETMONITOR(ASK monn TO srKan1,ITimedStatObj)) TO Reset();

ASK monn TO LiczZajKanZero(1);

ASK (GETMONITOR(ASK monn TO srKan2,ITimedStatObj)) TO Reset();

ASK monn TO LiczZajKanZero(2);

ASK (GETMONITOR(ASK monn TO srKan3,ITimedStatObj)) TO Reset();

ASK monn TO LiczZajKanZero(3);

background image

33

ASK (GETMONITOR(ASK monn TO klKol,ITimedStatObj)) TO Reset();

ASK monn TO liczKliKolZero(0);

ASK (GETMONITOR(ASK monn TO klKol1,ITimedStatObj)) TO Reset();

ASK monn TO liczKliKolZero(1);

ASK (GETMONITOR(ASK monn TO klKol2,ITimedStatObj)) TO Reset();

ASK monn TO liczKliKolZero(2);

ASK (GETMONITOR(ASK monn TO klKol3,ITimedStatObj)) TO Reset();

ASK monn TO liczKliKolZero(3);



END FOR;

w:=0;

OUTPUT("");
OUTPUT(" Czas przebywania zgloszenia");
OUTPUT(" sredni czas przebywania w SMO 1 : ",ASK GETMONITOR(ASK monn TO
uzyCzas1,RStatObj) TO Mean());
OUTPUT(" sredni czas przebywania w SMO 2 : ",ASK GETMONITOR(ASK monn TO
uzyCzas2,RStatObj) TO Mean());
OUTPUT(" sredni czas przebywania w SMO 3 : ",ASK GETMONITOR(ASK monn TO
uzyCzas3,RStatObj) TO Mean());
OUTPUT(" sredni czas przebywania w calym systemie : ",ASK GETMONITOR(ASK monn TO
uzyCzas,RStatObj) TO Mean());
OUTPUT(" od. standardowe czasu w SMO 1 : ",ASK GETMONITOR(ASK monn TO
uzyCzasDev1,RStatObj) TO Mean());
OUTPUT(" od. standardowe czasu w SMO 2 : ",ASK GETMONITOR(ASK monn TO
uzyCzasDev2,RStatObj) TO Mean());
OUTPUT(" od. standardowe czasu w SMO 3 : ",ASK GETMONITOR(ASK monn TO
uzyCzasDev3,RStatObj) TO Mean());
OUTPUT(" od. standardowe czasu w calym systemie: ",ASK GETMONITOR(ASK monn TO
uzyCzasDev,RStatObj) TO Mean());
OUTPUT("");

OUTPUT("Liczba zgloszen:");
OUTPUT(" srednio zgloszen w SMO 1 : ",ASK GETMONITOR(ASK monn TO uzylicz1,RStatObj)
TO Mean());
OUTPUT(" srednio zgloszen w SMO 2 : ",ASK GETMONITOR(ASK monn TO uzylicz2,RStatObj)
TO Mean());
OUTPUT(" srednio zgloszen w SMO 3 : ",ASK GETMONITOR(ASK monn TO uzylicz3,RStatObj)
TO Mean());
OUTPUT(" srednio zgloszen w calym systemie : ",ASK GETMONITOR(ASK monn TO
uzylicz,RStatObj) TO Mean());
OUTPUT(" od. standardowe zgloszen w SMO 1 : ",ASK GETMONITOR(ASK monn TO
uzyliczDev1,RStatObj) TO Mean());

background image

34

OUTPUT(" od. standardowe zgloszen w SMO 2 : ",ASK GETMONITOR(ASK monn TO
uzyliczDev2,RStatObj) TO Mean());
OUTPUT(" od. standardowe zgloszen w SMO 3 : ",ASK GETMONITOR(ASK monn TO
uzyliczDev3,RStatObj) TO Mean());
OUTPUT(" od. standardowe zgloszen w calym systemie: ",ASK GETMONITOR(ASK monn TO
uzyliczDev,RStatObj) TO Mean());
OUTPUT("");

OUTPUT("Liczba zajetych Kanow:");
OUTPUT(" srednio zajetych Kanow w SMO 1 : ",ASK GETMONITOR(ASK monn TO
uzyKan1,RStatObj) TO Mean());
OUTPUT(" srednio zajetych Kanow w SMO 2 : ",ASK GETMONITOR(ASK monn TO
uzyKan2,RStatObj) TO Mean());
OUTPUT(" srednio zajetych Kanow w SMO 3 : ",ASK GETMONITOR(ASK monn TO
uzyKan3,RStatObj) TO Mean());
OUTPUT(" srednio zajetych Kanow w calym systemie : ",ASK GETMONITOR(ASK monn TO
uzyKan,RStatObj) TO Mean());
OUTPUT(" od. standardowe zajętych Kanow w SMO 1 : ",ASK GETMONITOR(ASK monn TO
uzyKanDev1,RStatObj) TO Mean());
OUTPUT(" od. standardowe zajętych Kanow w SMO 2 : ",ASK GETMONITOR(ASK monn TO
uzyKanDev2,RStatObj) TO Mean());
OUTPUT(" od. standardowe zajętych Kanow w SMO 3 : ",ASK GETMONITOR(ASK monn TO
uzyKanDev3,RStatObj) TO Mean());
OUTPUT(" od. standardowe zajętych Kanow w calym systemie: ",ASK GETMONITOR(ASK monn
TO uzyKanDev,RStatObj) TO Mean());
OUTPUT("");

OUTPUT("Liczba zgloszen w kolejce");
OUTPUT(" srednio zgloszen w kolejce 1 : ",ASK GETMONITOR(ASK monn TO
uzyklKol1,RStatObj) TO Mean());
OUTPUT(" srednio zgloszen w kolejce 2 : ",ASK GETMONITOR(ASK monn TO
uzyklKol2,RStatObj) TO Mean());
OUTPUT(" srednio zgloszen w kolejce 3 : ",ASK GETMONITOR(ASK monn TO
uzyklKol3,RStatObj) TO Mean());
OUTPUT(" srednio zgloszen w calym systemie : ",ASK GETMONITOR(ASK monn TO
uzyklKol,RStatObj) TO Mean());
OUTPUT(" od. standardowe zgloszen w kolejce 1 : ",ASK GETMONITOR(ASK monn TO
uzyklKolDev1,RStatObj) TO Mean());
OUTPUT(" od. standardowe zgloszen w kolejce 2 : ",ASK GETMONITOR(ASK monn TO
uzyklKolDev2,RStatObj) TO Mean());
OUTPUT(" od. standardowe zgloszen w kolejce 3 : ",ASK GETMONITOR(ASK monn TO
uzyklKolDev3,RStatObj) TO Mean());
OUTPUT(" od. standardowe zgloszen w calym sytemie: ",ASK GETMONITOR(ASK monn TO
uzyklKolDev,RStatObj) TO Mean());
OUTPUT("");

background image

35


OUTPUT("Prawdopodobienstwo obsluzenia zgloszenia:");
OUTPUT(" w SMO 1 : ",ASK GETMONITOR(ASK monn TO uzyPstwo1,RStatObj) TO
Mean());
OUTPUT(" w SMO 2 : ",ASK GETMONITOR(ASK monn TO uzyPstwo2,RStatObj) TO
Mean());
OUTPUT(" w SMO 3 : ",ASK GETMONITOR(ASK monn TO uzyPstwo3,RStatObj) TO
Mean());
OUTPUT(" w calym systemie : ",ASK GETMONITOR(ASK monn TO uzyPstwo,RStatObj) TO
Mean());

INPUT(a);

DISPOSE(monn);
DISPOSE(GenT[1]);
DISPOSE(GenT[2]);
DISPOSE(kol1);
DISPOSE(kol2);
DISPOSE(kol3);
DISPOSE(GniT[1]);
DISPOSE(GniT[2]);
DISPOSE(GniT[3]);
DISPOSE(ran);
DISPOSE(trigg);

END MODULE.


Wyszukiwarka

Podobne podstrony:
Michniewicz Kamil I7G2S1 PSy sprawozdanie
I7G2S1 PSy Socha Marcin
I7G2S1 Zachwieja Cezary PSy projekt (1)
I7G2S1 Kolodziejski Lukasz psy
I7G2S1 Kamil Piersa PSY
PSy Piesiak Piotr I7G2S1 spr
Ukladanie dawki bytowej psy
leptospiroza psy, weterynaria, zakaźne, psy i koty
CHOROBY ZAKAŹNE PSY i KOTY – egzamin czerwiec 13 r I termin
[I7G2S1] Sprawozdanie nr 2
Fascynujące psy
dializa otrzewnowa u psów i kotów, Psy i koty
Adolf Dygasiński Wilk, psy i ludzie
psy egz
Psy Wojny
psy
Dlaczego psy piją wodę z toalety Marty?cker, Gina Spadafori

więcej podobnych podstron