background image

 

 

Symulacja komputerowa

Mechanizm monitorowania 

zmiennych w MODSIM’ie

background image

 

 

Monitory - idea

Monitorowanie polega na ścisłym powiązaniu 

pewnych (zdefiniowanych) zachowań 
(działań) z operacjami dostępu do 
zmiennych i ich modyfikacji. Powiązanie to 
ma charakter ukryty i automatyczny 
(działania te są uruchamiane w sposób 
automatyczny i niejawny).
Operacje monitorujące są odseparowane od 
operacji przetwarzania dotyczących 
monitorowanych zmiennych.

background image

 

 

Monitory - zastosowanie

 śledzenie zmian wartości wybranej 

zmiennej i zobrazowanie tych zmian na 
wykresie

 debagowanie – obserwacja wartości 

kluczowych zmiennych programu bez 
zmiany logiki programu (głównego 
przepływu sterowania w programie)

 gromadzenie statystyk

 dotyczących 

wyników symulacji (odseparowanie tych 
operacji od „czystej” symulacji) 

background image

 

 

Co możemy monitorować?

 zmienne dowolnego typu:

(wyliczeniowy, 

INTEGER

REAL

, STRING, 

BOOLEAN, typ okrojony, obiektowy, 
rekordowy, tablicowy)

 pola w obiektach
 pola w rekordach

background image

 

 

Składnia deklaracji obiektu monitora

background image

 

 

Składnia definicji metod monitorujących

background image

 

 

Własności monitorów

 tylko monitor może zawierać metody typu: 

LMONITOR i RMONITOR;

 monitor może posiadać dowolną liczbę metod: 

left-hand i right-hand. Jeśli jest więcej niż jedna 

metoda określonego rodzaju, wtedy są one 

wywoływane w kolejności zadeklarowania;

 monitor może dziedziczyć z innych obiektów, przy 

czym obiektem bazowym może być zarówno typ 

monitorowy lub nie;

 obiekt, który dziedziczy z obiektu będącego 

monitorem musi być koniecznie monitorem tego 

samego typu danych monitorowanych;

 monitor może być statyczny lub dynamiczny;

background image

 

 

Struktura obiektu monitora

Trzy specjalne wielkości zdefiniowane w 

monitorze:

 VALUE –  dostępna ze wszystkich metod 

monitorujących

 NEWVALUE – dostępna z metod typu 

LMONITOR

 UPDATEVALUE – funkcja wywoływana z 

metod typu LMONITOR i modyfikująca 
wartość zmiennej NEWVALUE

background image

 

 

Deklaracja zmiennych monitorowanych

VAR

dlugosc : LMONITORED INTEGER;
czas : LRMONITORED REAL BY MonitorType;

Uwaga: w ten sam sposób deklarujemy monitorowane pola 

obiektów i rekordów.

background image

 

 

Deklaracja typów monitorowanych

TYPE

TypMonit1 = LMONITORED INTEGER;
TypMonit2 = LRMONITORED REAL;

Uwaga: typ obiektu monitora musi być zgodny z typem monitorowanej 

zmiennej.

background image

 

 

Kolejność wywołania metod

TYPE MonitorSample = MONITOR INTEGER OBJECT

LMONITOR METHOD SetNewValue;

RMONITOR METHOD GetOldValue;

END ONJECT;
OBJECT MonitorSample

LMONITOR METHOD SetNewValue;
BEGIN

OUTPUT(„SetNewValue to „, NEWVALUE);

END METHOD;
RMONITOR METHOD GetOldValue;
BEGIN

OUTPUT(„GetOldValue, which is „, VALUE);

END METHOD;

END OBJECT;

VAR  queuelen : LRMONITORED INTEGER BY MonitorSample;
BEGIN

 queuelen:=0;
 queuelen:= queuelen + 1;

END MODULE.

SetNewValue to 0
GetOldValue, which is 0
SetNewValue to 1

background image

 

 

Monitory - typy bazowe

MODSIM dostarcza cztery podstawowe typy 

monitorów statystycznych typów liczbowych:

 Dla zmiennych typu całkowitoliczbowego

 IStatObj

;

 ITimedStatObj

;

 Dla zmiennych typu rzeczywistego

 RStatObj

;

 RTimedStatObj

;

Uwaga: obiekty zdefiniowane w module StatMod.

background image

 

 

Monitory - typy bazowe

Sześć monitorowanych typów danych liczbowych:

 SINTEGER

  = LMONITORED INTEGER BY IStatObj;

 TSINTEGER

 = LMONITORED INTEGER BY 

ITimedStatObj;

 BINTEGER

  = LMONITORED INTEGER BY IStatObj, 

ITimedStatObj;

 SREAL

  = LMONITORED REAL BY RStatObj;

 TSREAL

 = LMONITORED REAL BY RTimedStatObj;

 BREAL

  = LMONITORED REAL BY RStatObj, 

RTimedStatObj;

Uwaga: obiekty zdefiniowane w module StatMod.

background image

 

 

Rodzaje zbieranych statystyk

Do statystyk wyznaczanych automatycznie należą:

 Licznik (liczba obserwacji)

Count

 Maksimum

Maximum

 Minimum

Minimum

 Suma

Sum

 Wartość średnia

Mean

 Suma kwadratów

SumOfSquares

 Średnia kwadratowa

MeanSquare

 Wariancja

Variance

 Odchylenie standardowe

StdDev

 Histogram

Histogram

background image

 

 

Statystyki ważone czasem

1

3

2

1

0

1

1

n

i

i

n

x

n

X

n

i

i

n

i

i

i

n

t

T

t

x

T

X

1

1

*

6

,

1

100

70

2

20

1

10

0

1

t

0

1

2

10

30

100

x

i

Przebieg zmian liczby zadań w kolejce

background image

 

 

Wbudowane procedury i funkcje

ADDMONITOR

(IN monvar : AnyMonitoredVar;

IN monobj : AnyMonitorObjectVar)

REMOVEMONITOR

(IN monvar : AnyMonitoredVar; 

IN monobj : AnyMonitorObjectVar)

ACTIVATE

(IN monvar : AnyMonitoredVar;

IN montype : AnyMonitorObjectType):
<montype> object reference

DEACTIVATE

(IN monvar : AnyMonitoredVar;

IN montype : AnyMonitorObjectType):
<montype> object reference

GETMONITOR

(IN monvar : AnyMonitoredVar;

IN montype : AnyMonitorObjectType):
<montype> object reference

background image

 

 

Sposób wykorzystania

TYPE

MyMonitoredType = LMONITORED REAL; 

VAR

monVar1 : MyMonitoredType;
monVar2 : SREAL;   {LMONITORED REAL BY RStatObj}
mon1, mon2 : RStatObj;

BEGIN

. . .
monVar2 := 10.0;
NEW(mon1);

ADDMONITOR

(monVar1, mon1); {automatycznie zostaje aktywowany}

monVar1 := 20.0;
. . . 
OUTPUT(ASK 

GETMONITOR

(monVar2, RStatObj) TO Mean);

OUTPUT(ASK mon1 TO StdDev);

DEACTIVATE

(mon1);

. . .

REMOVEMONITOR

(monVar1, mon1);

DISPOSE(mon1);


Document Outline