Sprawozdanie PSY

Wojskowa Akademia Techniczna

  1. Sprawozdanie

    z laboratorium

    Podstawy Symulacji

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

Wykonał: Paweł Szajnar

Grupa I7G2S1

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

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 Do Zadania:

1. Numer z dziennika 16

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

· 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

ROZWIĄZANIE:

Obiekty które są potrzebne do zasymulowania zadanego obiektu zostały zaimplementowane i

Nazwane jako :

KliObj-objekt klienta

GniObj-objekt gniazda obsługi

MonObj-obiekt do monitorowania systemu

Kolejka[numer]Obj- kolejka do stanowisk obsługi napływających klientów

GeneratorObj – generator klientów

Rozkład wykładniczy - rozkład zmiennej losowej opisujący sytuację, w której obiekt może przyjmować stany X i Y, przy czym obiekt w stanie X może ze stałym prawdopodobieństwem przejść w stan Y w jednostce czasu. Prawdopodobieństwo wyznaczane przez ten rozkład to prawdopodobieństwo przejścia

ze stanu X w stan Y w czasie δt.

źródło wikipedia.pl

rozkład weibulla - ciągły rozkład prawdopodobieństwa często stosowany w analizie przeżycia do

modelowania sytuacji, gdy prawdopodobieństwo śmierci/awarii zmienia się w czasie.

Gęstość:

Rozkład Erlanga jest ciągłym rozkładem, który przyjmuje wartości dodatnie dla wszystkich

liczb rzeczywistych większych od zera. )kreślają go dwa parametry: k określający

kształt oraz wspłczynnik λ.

Gęstość

MAIN MODULE main;

{##############################IMPORTOWANIE FUNKCJI BIBLIOTECZNYCH##############}

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

{##############################Delkaracje typow##################################}

TYPE

KliObj = OBJECT;

FORWARD;

GniObj = OBJECT;

FORWARD;

MonObj = OBJECT;

FORWARD;

kol1Obj = OBJECT;

FORWARD;

kol2Obj = OBJECT;

FORWARD;

kol3Obj = OBJECT;

FORWARD;

GenObj = OBJECT;

FORWARD;

VAR

wypisz: 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;

srCzas3: SREAL;

licz: TSINTEGER; {liczik zgloszen smo}

licz1: TSINTEGER;

licz2: TSINTEGER;

licz3: TSINTEGER;

liczKli: TSINTEGER;

srKan: TSINTEGER;

srKan1: TSINTEGER;

srKan2: TSINTEGER;

srKan3: TSINTEGER;

klKol: TSINTEGER; {licznik 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;{sredni 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 Kanalow}

uzyKan1: SREAL;

uzyKan2: SREAL;

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}

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;

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

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{Klienci}

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

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

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;

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;

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

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

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;

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;

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 (wypisz = 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;

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 wypisz=1

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

END IF;

ASK kol3 TO Wstaw(Kli);

END IF;

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

ASK Monitor TO liczKliMinus(3);

Aktywne:=Aktywne-1;

ASK Monitor TO liczKanMinus(3);

ASK Monitor TO liczKanMinus(0);

IF wypisz=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;

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

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

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

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;

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

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;

{########################################### Czesc wykonywalna programu################}

VAR

ran: RandomObj;

trigg:TriggerObj;

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

NEW(io);

ASK io TO Open("data.txt",Input);

WHILE NOT (ASK io eof)

ASK io TO ReadLine(textLine);

p1rg1:=STRTOREAL(textLine); {parametr pierwszego rozkladu generatora pierwszego}

ASK io TO ReadLine(textLine);

p2rg1:=STRTOREAL(textLine); {drugi parametr rozkladu generatora pierwszego}

ASK io TO ReadLine(textLine);

p1rp1:=STRTOREAL(textLine); { pierwszy parametr roakladu R ilosci zgloszen w jednej paczce}

ASK io TO ReadLine(textLine);

p2rp1:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

lkg1:=STRTOINT(textLine); {liczba klientow generatora pierwszego maxymalna liczba jaka moze naplynac}

ASK io TO ReadLine(textLine);

p1rg2:=STRTOREAL(textLine); {parametr pierwszy rozkladu generatora drugiego}

ASK io TO ReadLine(textLine);

p2rg2:=STRTOREAL(textLine); {parametr drugi rozkladu generatora drugiego}

ASK io TO ReadLine(textLine);

p1rp2:=STRTOREAL(textLine); { parametr pierwszy rozkladu R ilosci zgloszen w jednej paczce dla 2}

ASK io TO ReadLine(textLine);

p2rp2:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

lkg2:=STRTOINT(textLine); { liczba klientow generatora drugiego liczba klientow maxymalna jaka moze naplynac}

ASK io TO ReadLine(textLine);

p1rgn1:=STRTOREAL(textLine); { parametr pierwszy dla rozkladu n1 zwiazanego z niecierpliwoscia}

ASK io TO ReadLine(textLine);

p2rgn1:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p3rgn1:=STRTOREAL(textLine); { parametr trzeci dla rozjladu zwiazanego z niecierpliwoscia}

ASK io TO ReadLine(textLine);

p1rgn2:=STRTOREAL(textLine); { drugi drugi dla rozkladu zwiazanego z niecierpliwoscia dla O2}

ASK io TO ReadLine(textLine);

p2rgn2:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

p3rgn2:=STRTOREAL(textLine);

ASK io TO ReadLine(textLine);

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

wypisz:=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);

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

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

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;

wypisz:=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());

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 Kanalow:");

OUTPUT(" srednio zajetych Kanalow w SMO 1 : ",ASK GETMONITOR(ASK monn TO uzyKan1,RStatObj) TO Mean());

OUTPUT(" srednio zajetych Kanlow w SMO 2 : ",ASK GETMONITOR(ASK monn TO uzyKan2,RStatObj) TO Mean());

OUTPUT(" srednio zajetych Kanlow w SMO 3 : ",ASK GETMONITOR(ASK monn TO uzyKan3,RStatObj) TO Mean());

OUTPUT(" srednio zajetych Kanlow w calym systemie : ",ASK GETMONITOR(ASK monn TO uzyKan,RStatObj) TO Mean());

OUTPUT(" od. standardowe zajętych Kanalow w SMO 1 : ",ASK GETMONITOR(ASK monn TO uzyKanDev1,RStatObj) TO Mean());

OUTPUT(" od. standardowe zajętych Kanalow w SMO 2 : ",ASK GETMONITOR(ASK monn TO uzyKanDev2,RStatObj) TO Mean());

OUTPUT(" od. standardowe zajętych Kanalow w SMO 3 : ",ASK GETMONITOR(ASK monn TO uzyKanDev3,RStatObj) TO Mean());

OUTPUT(" od. standardowe zajętych Kanalow 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("");

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:
Sprawozdanie PSY
PSY sprawozdanie, WAT, V SEM, PSY, 1
I0E1S1 Kamil Maślanka Projekt PSy, I0E1S1 Kamil Maślanka sprawozdanie projekt, Microsoft Word - spra
PSy, Sprawozdanie
I8G1S1 Zarodkiewicz PSy Sprawozdanie, WAT, V SEM, PSY, 1
PSy - Sprawozdanie, WAT, SEMESTR V, podstawy symulacji, 17 moj
PSY sprawozdanie (1), WAT, V SEM, PSY, 1
I8E1S1 13 Karpiński Radosław Psy Sprawozdanie LAB cz 1
sprawozdanie mechanika pĹ‚ynĂlw
I8E1S1 17 Lemancewicz Rafal Psy Sprawozdanie LAB cz 1
I8E1S1 17 Lemancewicz Rafal Psy Sprawozdanie LAB cz 2
Michniewicz Kamil I7G2S1 PSy sprawozdanie
2 definicje i sprawozdawczośćid 19489 ppt
Ukladanie dawki bytowej psy
PROCES PLANOWANIA BADANIA SPRAWOZDAN FINANSOWYC H
W 11 Sprawozdania
Wymogi, cechy i zadania sprawozdawczośći finansowej

więcej podobnych podstron