Materiały dydaktyczne zostały przygotowane w ramach Projektu
„Politechnika XXI wieku - Program rozwojowy Politechniki Krakowskiej – najwy
ż
szej
jako
ś
ci dydaktyka dla przyszłych polskich in
ż
ynierów”
współfinansowanego ze
ś
rodków Unii Europejskiej w ramach Europejskiego Funduszu
Społecznego. Umowa o dofinansowanie nr UDA-POKL.04.01.01-00-029/10-00
Niniejsza publikacja jest rozpowszechniana bezpłatnie
Spis treści
3. MODELE SIECIOWE PROCESÓW DYSKRETNYCH .................................... 4
3.1. Wprowadzenie............................................................................................................4
3.2 Podstawowe pojęcia ....................................................................................................5
3.3. Sieci znakowane .........................................................................................................8
3.4. Własności dynamiczne sieci.....................................................................................10
3.5 Czasowe sieci Petriego ..............................................................................................12
3.6. Przykłady sieciowego modelowania procesów dyskretnych ...................................13
3.7. Konstrukcja drzew i grafów pokrycia znakowań ....................................................18
3.8 Oprogramowanie narzędziowe ND. .........................................................................23
3.9. Edytor i symulator PIPE..........................................................................................29
4.1 Zastosowanie .............................................................................................................34
4.2 Język GPSS ...............................................................................................................36
4.2.1 Wprowadzenie ...................................................................................................36
4.2.2 Opis podstawowych elementów języka GPSS ver World .................................41
4.2.3 Przykłady programów........................................................................................50
4.3 Przykłady do ćwiczeń i tematy zadań........................................................................54
4.4 Obsługa pakietu GPSS World ..................................................................................57
5. PROGRAMOWANIE SYSTEMÓW DYSKRETNYCH................................... 67
5.1 Wprowadzenie...........................................................................................................67
5.2 Proces projektowania symulacji ................................................................................68
5.3. Elementy modelu symulacyjnego.............................................................................72
5.4 Metody symulacji dyskretnej.....................................................................................74
5.4.1. Metoda planowania zdarzeń. ............................................................................75
5.4.2. Metoda przeglądania działań. ...........................................................................77
5.4.3. Przegląd innych metod. ....................................................................................81
5.4.3. Przegląd innych metod. ....................................................................................82
Modelowanie Procesów Dyskretnych
2
5.5. Sterowanie i monitoring procesów dyskretno-ciągłych............................................85
5.6 Systemy SCADA/HMI ..............................................................................................95
Modelowanie Procesów Dyskretnych
3
Modelowanie Procesów Dyskretnych
4
3. MODELE SIECIOWE PROCESÓW DYSKRETNYCH
3.1. Wprowadzenie
Sieci Petriego (Petri nets) są narzędziem do modelowania, stosowanym w
wielu różnych dziedzinach nauki, w szczególności informatyki, automatyki
i robotyki. Charakteryzuje je intuicyjny graficzny język modelowania,
wspierany przez zaawansowane metody formalnej analizy ich własności.
Naturalnym zjawiskiem w sieciach Petriego jest współbieżność
wykonywanych akcji, dlatego też są one najczęściej postrzegane jako
narzędzie do modelowania dyskretnych procesów współbieżnych.
Sieci, których definicję rozbudowano o parametr czasu, mogą być
stosowane do modelowania systemów czasu rzeczywistego.
Typowe zastosowania sieci Petriego to:
1
Modelowanie obliczeń współbieżnych.
2.
Modelowananie procesów technologicznych i przemysłowych.
Sieci Petriego zostały zdefiniowane przez Carla Petriego, w jego pracy
doktorskiej na Politechnice Darmstadt. Teoria sieci Petriego rozwija się od
lat 60-tych, zapoczątkowana opublikowaniem pracy:
Petri C.A.: Kommunikation mit Automaten. University of Bonn 1962.
Petri C.A.:Communication with Automata. Technical report New York
1965.
W wyniku ponad czterdziestoletniego rozwoju tej teorii powstało wiele
różnych klas sieci i rozszerzonych zakresów zastosowań. W zależności od
potrzeb definicję sieci zmieniano i dostosowywano do rozwiązywanych
problemów. Dzięki różnorodności znanych obecnie klas sieci można
stosunkowo łatwo dobrać klasę najwłaściwszą dla danej dziedziny
zastosowań. Różnorodność ta jednak utrudnia opracowanie jednolitych
metod analizy różnych klas sieci.
Sieć Petriego jest przedstawiana jako graf dwudzielny. Może ona mieć
strukturą hierarchiczną, znacznie ułatwiającą modelowanie złożonych
systemów.
Możliwa jest symulacja pracy sieci (najczęściej wspomagana przez
odpowiednie narzędzia komputerowe), dzięki której model taki staje się
wirtualnym prototypem projektowanego systemu.
Modelowanie Procesów Dyskretnych
5
Oprócz reprezentacji graficznej i możliwości symulacji pracy, na uwagę
zasługuje rozbudowana teoria. Różnorodność klas sieci powoduje, że
metody ich analizy znacznie się różnią. Dla sieci o najprostszej strukturze
istnieje najszerszy wachlarz tych metod i są one stosunkowo łatwe w użyciu.
W przypadku sieci bardziej rozbudowanych, możliwości formalnej analizy
są zazwyczaj uboższe lub trudniejsze do zastosowania.
Sieci Petriego są podstawowym językiem modelowania współbieżności i
synchronizacji dyskretnych procesów. Modelowanie z zastosowaniem sieci
Petriego pozwala na przedstawienie aspektów systemu, powiązanych ze
współbieżnością działania, współdzieleniem zasobów, komunikacją między
procesami oraz synchronizacją przebiegających procesów.
Sieci mają szczególne zastosowania w:
•
projektowaniu i specyfikacji systemów procesów dyskretnych,
systemów czasu rzeczywistego, systemów wbudowanych,
•
analizie poprawności oprogramowania (weryfikacja, walidacja),
•
ocenie wydajności i niezawodności systemów procesów dyskretnych.
W celu oceny wydajności systemów, sieci Petriego są wzbogacane o
czynnik czasu. W swojej pierwotnej formie sieci miały ograniczone
możliwości.
Różnorodność istniejących klas sieci Petriego, a także narzędzi
programowych spowodowała, że nie istnieje jednolita notacja ich opisu.
Notacje graficzne sieci różnią się w zależności od wybranego
oprogramowania, ale różnice te nie są zbyt zasadnicze. Sytuacja wygląda
inaczej, w przypadku formalnego opisu sieci, gdyż nawet w obrębie jednej
klasy stosuje się różne notacje.
3.2 Podstawowe pojęcia
Jedną z zasadniczych cech sieci Petriego jest ich stosunkowo prosta i
intuicyjna reprezentacja graficzna, wspólna dla wszystkich klas sieci. Sieci
Petriego są przedstawiane w postaci grafów skierowanych, zawierających
dwa rodzaje węzłów (grafy dwudzielne) nazywanych miejscami i
przejściami. Tych dwóch rodzajów węzłów używa się odpowiednio do
reprezentowania stanów i aktywności modelowanego systemu.
Grafem skierowan
y
m (g
r
afem)
n
azywa
m
y
up
o
r
zą
dk
owa
n
ą
t
ró
jk
ę
po
s
t
ac
i
G
=
(V
,
A
,
γ
)
, p
rzy czy
m:
V je
s
t
z
bi
o
r
e
m
wę
z
ł
ów g
r
a
fu
.
Modelowanie Procesów Dyskretnych
6
A jest z
bi
o
r
e
m
łukó
w
(k
r
aw
ę
d
z
i
)
gr
a
f
u
,
t
ak
im
ż
e V
∩
A =
∅
.
γ
: A
→
V
×
V
j
e
st
f
u
n
k
c
ją
z
ac
z
ep
i
en
i
a
,
któ
ra
ka
ż
d
e
mu łuk
owi
pr
zy
pi
s
u
je
up
o
r
zą
dk
owa
n
ą
p
arę węzłów
.
Graf
s
kiero
wa
n
y
(
G
=
(V
,
A,
γ
)
,
naz
yw
am
y g
r
afe
m
et
y
ki
etow
an
y
m nad
z
bior
e
m
e
t
y
ki
et L (label)
,
j
eże
li łu
k
i
g
r
af
u G
ma
j
ą
pr
zy
p
isa
n
e ety
ki
e
t
y ze z
b
ior
u L
.
Modelowanie Procesów Dyskretnych
7
Graf skierowany
G
=
(V
,
A
,
γ
)
nazywamy grafem dwudzielnym, jeżeli zbiór
V
jest sumą dwóch rozłącznych zbiorów
V
1
,
V
2
i dowolny łuk grafu G łączy
węzły należące do rożnych zbiorów, tzn.
Węzły różnych typów oznaczono odmiennymi kolorami.
Łuki
w gra
f
ie
s
iec
i
mogą łączyć
t
y
l
ko węz
ł
y
r
óż
n
yc
h t
ypów
. Z
e wzglę
du n
a c
h
a
-
ra
kt
e
r t
yc
h poł
ą
c
ze
ń
d
e
finiu
je się s
i
e
ci o ro
z
m
a
it
y
ch
w
ł
a
s
n
oś
c
iac
h
s
tru
k
tu
ra
ln
yc
h
,
m
.
in.
:
s
i
ec
i
czys
t
e
,
siec
i pr
os
t
e, s
i
ec
i
swo
b
o
dn
ego wy
b
o
ru
,
grafy
s
y
n
c
h
ro
n
izacj
i
,
m
aszy
n
y s
t
a
no
we
it
d
.
Sieci Petriego są przedstawiane jako grafy dwudzielne, w których własności
dynamiczne są modelowane poprzez przepływ tzw. znaczników (markers).
Sieć Petri (PN) jest uporządkowaną czwórką PN= (P,T,F,W),
gdzie:
P=(p
1
,p
2
,...,p
n
) – zbiór (skończony) miejsc (places),
P
≠
0,
T=(t
1
,t
2
,...,t
m
) - zbiór (skończony) przejść (transitions),
T
≠
0,
F
⊂
( PxT)
∪
(TxP) - zbiór łuków,
W: F
→
N\{0} – funkcja krotności (waga) łuku, N-zbiór liczb naturalnych.
3.2. Konwencja graficzna dla sieci Petriego
p
3
t
1
t
2
p
2
p
1
P = (p
1
, p
2
)
T = (t
1
, t
2
)
F = {(p
1
, t
1
), (p
1
, t
2
), (p
2
, t
2
), (t
1
,
p
1
), (t
2
,
p
3
)}
W
≡
1
∀
a
∈
A:
γ
(a)
∈
(
V
1
×
V
2
)
∪
(
V
2
×
V
1
)
3.1. Graf dwudzielny
3
5
1
2
x
1
x
2
x
4
x
3
Modelowanie Procesów Dyskretnych
8
S
ieć Petriego jako graf dwudzielny, w którym wyróżnia się dwa rozłączne
podzbiory wierzchołków: zbiór miejsc i zbiór przejść.
W reprezentacji graficznej, miejsca przedstawiane są w postaci kółek,
natomiast przejścia w postaci kresek. Łukami mogą łączyć się wyłącznie
elementy należące do różnych podzbiorów. Łuki mogą być wielokrotne.
Jeżeli krotność łuku f
∈
F spełnia zależność W(f)>1, to łuk obciążony jest
liczbą W(f). Jeśli W(f)=1, to symbol 1 jest pomijany.
Powyższa definicja sieci pozwala scharakteryzować strukturę sieci, ale nie daje
możliwości opisu jej zachowania. Aby można było w pełni modelować systemy
współbieżne musimy rozszerzyć tę definicję o znakowanie, które reprezentuje stan
modelowanego systemu i ulega zmianie w trakcie symulacji pracy sieci.
3.3. Sieci znakowane
W celu modelowania systemów współbieżnych, należy rozszerzyć te
definicję o znakowanie, które reprezentuje stan modelowanego systemu i
ulega zmianie w trakcie symulacji pracy sieci. Znakowanie sieci umożliwia
opis własności dynamicznych, które są modelowane przez przepływ
znaczników powodowany drożnością, wzbudzeniem (firing) przejść sieci.
Znakowanie PN jest funkcją M: P
→
N. Wartość M(p
i
) wyraża liczbę
znaczników w miejscu p
i
. Liczba znaczników jest oznaczana na przez liczbę
kropek.
Znakowana sieć Petriego MPN (Marked Petri Net) jest parą:
MPN =(PN, M
0
)
gdzie: M
0
– jest znakowaniem początkowym (initial marking) sieci
M
0
: P
→
N funkcja znakowania początkowego.
Zbiory Int(t) ={p
∈
P: <p, t>
∈
F} oraz Out(t) ={p
∈
P: <t, p>
∈
F} jest zbiorem
miejsc wejściowych oraz wyjściowych przejścia t.
W podobny sposób są zdefiniowane zbiory Int(p), Out(p) przejść
wejściowych (wyjściowych) miejsca p.
Dowolne miejsce p nazywa się miejscem wejściowym dla przejścia t, jeśli
istnieje łuk łączący, skierowany od tego miejsca do przejścia t. Wykonanie
dowolnego przejścia (palenia się tranzycji) w sieci polega na pobraniu
znaczników z miejsc wejściowych danego przejścia i wstawienia
znaczników do miejsc wyjściowych. Ilość znaczników pobieranych jest
określona przez wagi przypisane do odpowiednich łuków.
Modelowanie Procesów Dyskretnych
9
Przejście t
j
jest przygotowane do wzbudzenia (firing), jeśli w każdym
miejscu poprzedzającym znajduje się co najmniej W(<p
i
, tj>) znaczników.
Jeśli przejście jest przygotowane do wzbudzenia, to może nastąpić jego
wzbudzenie. Gdy przejście t
j
jest wzbudzone, wówczas W(<p
i
, t
j
>)
znaczników jest usuwanych z każdego miejsca p
i
∈
Int(t) oraz W(<t
j
, p
k
>)
znaczników jest dodawanych do każdego miejsca p
k
∈
Out(t).
Modelowanie Procesów Dyskretnych
10
3.4. Własności dynamiczne sieci
Analiza zachowania sieci jest związana z badaniem własności kolejnych jej
stanów, w tym przypadku znakowań osiągalnych z znakowania
początkowego. Problem osiągalności określonego znakowania (stanu) jest
więc podstawowym przy analizie sieci.
Jeżeli w wyniku wzbudzenia przejścia t
i
następuje zmiana znakowania z M
i
na M
i+1
to stosujemy oznaczenie:
Sekwencją wzbudzenia nazywamy taką sekwencję przejść
σ
= t
i1
, ..., t
is
, dla
której istnieją znakowania M
p
, M
p+1
, ..., M
p+s
spełniające warunek:
Znakowanie M
p+s
nazywamy znakowaniem osiągalnym ze znakowania M
p
.
Możliwość
przesyłania
większej
liczby
znaczników
przy
wzbudzeniu
pojedynczego przejścia ma wpływ na aktywność danego przejścia oraz zmianę
poszczególnych znakowań sieci.
Rys 3.3. Realizacja przejścia (firing of transition)
2
2
t
1
p
1
•
p
2
•••
p
3
•
p
4
p
5
•
M
i
M
i+1
[t
i
]
[t
i1
]
M
p
M
p+1
,
[t
is
]
M
p+s-1
M
p+s
2
2
t
1
p
1
•
p
2
•
p
3
p
4
•
p
5
•••
M
p
M
p+s
[
σ
]
Modelowanie Procesów Dyskretnych
11
Przejście t
∈
T jest aktywne przy znakowaniu M (jest M-aktywne), jeżeli każde z
jego miejsc wejściowych zawiera co najmniej tyle znaczników, ile wynosi waga
łuku prowadzącego od tego miejsca do przejścia t.
Jeżeli przejście t jest M-aktywne, to nowe znakowanie M' uzyskane w wyniku
wykonania przejścia t jest określone w sposób następujący:
Rozważmy przykład sieci przedstawionej na Rys. 3.4. Przy znakowaniu
początkowym M
0
= (1, 2, 0, 1, 2, 1) aktywne są przejścia t
1
, t
2
, t
4
, t
5
. Wykonanie
sekwencji przejść
σ
= t
1
, t
2
, t
4
, t
6
,
prowadzi odpowiednio do znakowań:
M
1
= (1, 3, 0, 2, 1),
M
2
= (1, 1, 1, 2,1),
M
4
= (1, 1, 1, 1, 2),
M
6
= (1, 0, 3, 1, 1).
M(p) – W(p,t)
gdy p
∈
In(t) – Out(t)
M(p) + W(t,p)
gdy p
∈
Out(t) – In(t)
M`(p) =
M(p) - W(p,t) + W(t,p) gdy p
∈
In(t)
∩
Out(t)
M(p)
w pozostałych przypadkach
Rys. 3.4. Sieć znakowana
2
2
p
5
t
3
p
4
t
4
t
5
p
1
p
3
t
2
p
2
t
1
••
•
t
6
•
••
Modelowanie Procesów Dyskretnych
12
Znakowana sieć MPN jest żywą (liveness), jeśli dla każdego znakowania M
osiągalnego ze znakowania początkowego M
0
i dla każdego przejścia t
∈
T,
istnieje sekwencja palenia umożliwiająca palenie przejścia t.
Zagadnienie żywotności jest niezwykle istotne w analizie własności
systemów współbieżnych. Klasycznie żywotność jest kojarzona z ciągłością
działania, np. system czasu rzeczywistego powinien być zawsze gotowy do
obsługi zdarzeń zachodzących w jego otoczeniu.
Znakowana sieć MPN jest k- ograniczona (k-bounded), jeśli przy dowolnym
osiągalnym znakowaniu, w każdym miejscu ilość znaczników nie
przekracza liczby k.
Znakowana sieć MPN jest bezpieczna (safed), jeśli jest 1-ograniczona.
Ograniczoność sieci wiążę się z pojęciem bezpieczeństwa systemów.
Definicja
bezpieczeństwa
oznacza
niemożliwość
wystąpienia
niepożądanych stanów podczas działania systemu. W przypadku sieci
Petriego niepożądane stany dotyczą najczęściej nieograniczonego wzrostu
liczby znaczników w pewnych miejscach sieci. Własność bezpieczeństwa
jest charakterystyczna dla pewnej klasy sieci zwanych sieciami warunkowo-
zdarzeniowymi C/E (Condition-Event). Wystąpienie znaczników we
wszystkich miejscach wejściowych odpowiada spełnieniu wszystkich
warunków wystąpienia zdarzenia. Fakt zaistnienia zdarzenia jest opisywany
przez wykonanie przejścia. W takim przypadku dla każdego miejsca
możliwe są tylko dwa oznakowania: brak znacznika (niespełnienie warunku)
i wystąpienie pojedynczego znacznika – spełnienie warunku.
3.5 Czasowe sieci Petriego
Definicja 3.12.
Czasowa znakowana sieć Petrego TMPN (Timed Marked Petri Net) jest
parą TMPN=(MPN,
τ
),
gdzie:
τ
: T
→
R
+
, (R
+
- jest zbiorem nieujemnych liczb wymiernych).
W chwili początkowej
τ
=0, znakowanie sieci TMPN jest znakowaniem
początkowym M
0
.
Dodanie parametru czasu do definicji sieci Petriego umożliwia ocenę wydajności
systemów. Istnieją dwa sposoby przypisania czasu elementom sieci Petriego do
przejść (tranzycji) lub miejsc.
Modelowanie Procesów Dyskretnych
13
W literaturze dominuje przypisanie czasu przejściom. Gdy przejście t
i
jest
przygotowane do wzbudzenia, wówczas może nastąpić jego wzbudzenie. Faza
palenia przejścia t
i
trwa przez czas
τ
(t
i
).
3.6. Przykłady sieciowego modelowania procesów dyskretnych
Sieci Petriego są uniwersalnym modelem szerokiej klasy procesów
dyskretnych, wobec tego miejsca i przejścia mogą być różnie
interpretowane, w zależności od modelowanego systemu. Najczęściej
spotykane interpretacje:
1
3.6. Czasowy diagram palenia tranzycji
2
3
4
5
6
7
t
1
t
2
t
3
t
4
t
5
t
6
p
2
p
3
t
1
t
2
p
5
t
4
t
3
p
4
3.5. Czasowa sieć Petriego.
t
1
=2;
t
2
=4;
t
4
=2;
t
3
=3;
Modelowanie Procesów Dyskretnych
14
Miejsca wejściowe
Przejścia
Miejsca wyjściowe
Prewarunki
Zdarzenie
Postwarunki
Zasoby żądane
Operacja lub zadanie
Zasoby zwalniane
Dane wejściowe
Wykonanie obliczeń (akcji)
Wyniki
Warunki
Klauzula logiki
Konkluzje
Sygnały wejściowe
Przetwarzanie
Sygnały wyjściowe
Wymienione reprezentacje charakteryzują się różnym stopniem abstrakcji,
co może decydować o różnych wymaganiach względem własności sieci.
Przykładowo przy rozważaniu systemu rozdziału zasobów, znaczniki mogą
reprezentować jednostki zasobu określonego typu i w związku z tym będą
interpretowane jako elementy, których ogólna ilość jest stała.
Z kolei w sieciach warunkowo-zdarzeniowe prewarunek poprzedza
zdarzenie i jest przesłanką wystąpienia zdarzenia. Wystąpienie zdarzenia
kończy obowiązywanie prewarunku i zaczyna obowiązywać postwarunek.
Przykład (Rys.3.7) modelu automatu w postaci sieci Petriego, akceptującego
monety 5 i 10 zł. i sprzedającego dwa rodzaje produktów w cenie o 15 i 20
zł.
Sygnały wejściowe z otoczenia są specyfikowane poprzez strzałki
swobodne do odpowiednich przejść. Etykiety tych strzałek oznaczają rodzaj
monety wrzucanej w odpowiednich stanach do otworu automatu. Napisy
przy miejscach wskazują kwotę przyjętą przez automat.
Automat początkowo znajduje się w stanie
Wait
, później w zależności od
wrzucanej monety przechodzi do stanu 5 lub 10. Czynności te są
kontynuowane aż do osiągnięcia żądanej kwoty. Wprowadzono dodatkową
parę sygnałów wejściowych, która jest używana do akceptacji kupna
OK
lub odrzucenia
NOK
i zwrotu pieniędzy.
Modelowanie Procesów Dyskretnych
15
Przykład (Rys.3.8) modelu sieciowego dwóch procesów współbieżnych.
Po wykonaniu przejścia t
0
, tranzycja
Begin
inicjuje dwa procesy
współbieżne przez umieszczenie znaczników w miejscach p
1
i p
2
. W takiej
sytuacji tranzycje t
1
oraz t
2
są wzbudzone niezależnie.
Modelowanie Procesów Dyskretnych
16
Zakończenie współbieżnych procesów jest synchronizowane przez tranzycję
t
3
(
ParEnd
), gdyż do wzbudzenia tegj tranzycji konieczne jest zakończenie
dwóch procesów sekwencyjnych (znaczniki w miejscach p
3
i p
4
).
Przykład (Rys.3.9) modelu procesów komunikujących się poprzez ograniczony
bufor.
Własność ograniczoności sieci nie dopuszcza do nieograniczonego wzrostu ilości
znaczników w dowolnym miejscu sieci. Jest to istotne wymaganie, w
szczególności uniemożliwiające nieskończone wykonywanie wyłącznie pewnych
fragmentów sieci.
Proces nadawcy może wykonywać się ściśle określoną liczbę razy i
przesyłać znaczniki do miejsca p. Dodatkowe miejsce p
’
z k znacznikami
(przy znakowaniu początkowym M
0
) powoduje ograniczenie ilości
znaczników zawartych w miejscu p. Dla każdego oznakowania M
s
osiągalnego z M
0
jest spełniona zależność:
M
s
(p) + M
s
(p
’
) = k
Ilość znaczników w sieci nie przekracza wartości k. Taki sposób
poprawiania struktury powinien być zastosowany w kontekście wszystkich
miejsc, w których może wystąpić nieograniczony wzrost ilości znaczników.
ParEnd
p
2
t
0
•
Rys. 3.8. Model procesów współbieżnych
ParBegin
t
1
p
1
p
3
p
4
t
2
p
0
Modelowanie Procesów Dyskretnych
17
.
Przykład (Rys. 3.10) modelu synchronizacji procesów.
Miejsce p
0
w sieci pełni funkcje synchronizujące, nie dopuszczając, aby
dwa procesy znalazły się w stanie M
s
takim, że M
s
(p
2
) = M
s
(p
4
) = 1, co
modeluje wzajemne wykluczanie dostępu do obszaru krytycznego. W
dowolnym stanie M
s
spełniony jest bowiem warunek M
s
(p
2
) + M
s
(p
4
)
≤
1.
Rys 3.10. Synchronizowany dostęp do obszaru krytycznego
p
1
p
0
p
3
t
2
t
1
p
2
p
4
t
4
t
3
•
•
•
Rys. 3.9
.
Procesy komunikujące się poprzez k-ograniczony bufor
p
•
Sender
Receiver
•
k
p`
Modelowanie Procesów Dyskretnych
18
Przykład (Rys. 3.11) sieci z możliwym stanem blokady.
W sieci na powyższym rysunku może wystąpić stan zakleszczenia (brak
ż
ywotności). Stan taki jest określony jako M(p
2
)= M(p
5
)=1 oraz M(p
i
)=0 dla
pozostałych miejsc p
i
. Stan ten jest osiągany przez wykonanie przejść t
1
oraz t
4
w dowolnej kolejności.
Z drugiej strony, sieć może wykonywać się nieograniczenie, jeśli tylko w
każdym procesie będziemy wykonywać dwa kolejne przejścia <t
1
, t
2
> albo
<t
4
, t
5
>
. Tego typu sekwencje wykonania będą nieskończone.
3.7. Konstrukcja drzew i grafów pokrycia znakowań
Znakowanie M sieci MPN nazywamy pokrywalnym, jeżeli istnieje
znakowanie M`
∈
R(M
0
), takie że dla każdego miejsca p
∈
P jest spełniony
warunek M`(p)
≥
M(p).
Konstrukcja drzewa pokrycia (coverability tree) znakowań polega na
utworzeniu drzewa pokrywającego wszystkie znakowania osiągalne ze
q
p
•
p
3
p
2
p
1
Rys 3.11. Sieć z możliwością zakleszczenia
•
t
3
t
2
t
1
•
p
6
p
5
p
4
•
t
5
t
4
t
6
Modelowanie Procesów Dyskretnych
19
stanu początkowego. Wykonanie dowolnej sieci jest w ogólności (i
najczęściej) reprezentowane przez nieskończone sekwencje realizacji
odpowiednich przejść sieci. Konstrukcja drzewa o skończonej ilości
wierzchołków wymagać więc będzie wprowadzenia pewnych uproszczeń.
W ogólnym przypadku możemy mówić o dwóch przyczynach
powodujących generację nieskończonych sekwencji stanów osiągalnych:
powtarzające się sekwencje wykonań pewnych przejść oraz nieograniczony
wzrost ilości znaczników w pewnych miejscach.
W przypadku a) mamy do czynienia z nieskończoną sekwencją wykonań:
Wykonanie drugiej sieci b) polega na generacji kolejnych znakowań w myśl
sekwencji:
W przypadku powtarzających się sekwencji możemy zakończyć generację w
momencie osiągnięcia stanu powtórzonego <1,
ω
>. Wprowadza się symbol
nieskończoności
ω
taki, że dla dowolnej skończonej liczby całkowitej n spełnione są
zależności
ω
>n,
ω
+n=
ω
. Kolejne stany będą pochłaniane przez oznakowanie
<1,
ω
>. Drzewo pokrycia będzie budowane z wykorzystaniem powyższych dwóch
mechanizmów. Algorytm konstrukcji drzewa będzie posługiwać się następującą
klasyfikacją węzłów drzewa:
- węzły nowe, czyli takie które nie były jeszcze przetwarzane,
- węzły powtórzone, które pojawiły się już na danej ścieżce budowania drzewa,
- węzły końcowe, dla których nie ma znakowania następnego.
Znakowanie początkowe M
0
stanowi korzeń drzewa i zarazem nowy węzeł.
t
1
t
2
t
2
p
1
p
2
•
a)
p
2
p
1
•
t
1
b)
Rys. 3.12. Źródła generacji nieskończonej sekwencji znakowań
<
1, 0>
→
<0, 1>
→
<1, 0>
→
<0, 1>
→
. . .
t
1
t
2
t
1
t
2
. . .
<1, i >
→
<1, i+1 > . . .
t
1
Modelowanie Procesów Dyskretnych
20
Na powyższym rysunku, wprowadzenie symbolu
ω
jest realizowane już
przy pierwszym wykonaniu przejścia t
1
. Wykonanie przejścia t
1
powoduje
zmianę stanu, czyli wzrost ilości znaczników w miejscu p
2
przy
niezmienionych wartościach w miejscach pozostałych. Tym samym
spełnione są warunki wstawienia symbolu
ω
na pozycję odpowiadające
miejscu p
2
.
Drzewo pokrycia znakowań składa się ze skończonej ilości węzłów, co
umożliwia badanie własności dynamicznych, w szczególności można podać
następujące:
Sieć PN jest ograniczona, gdy symbol
ω
nie występuje w drzewie pokrycia.
Wówczas drzewo stanów osiągalnych jest skończone.
Sieć PN jest bezpieczna, gdy w węzłach drzewa występują znakowania
składające się wyłącznie z zer i jedynek,
Przejście t jest martwe, jeśli w drzewie pokrycia nie występuje łuk etykietowany
przez t.
Znakowanie M
i
jest osiągalne ze znakowania początkowego M
0
, jeśli w drzewie
pokrycia istnieje węzeł M
i
oraz ścieżka prowadząca z M
0
do M
i
.
Wyżej wymienione własności mogą być analizowane przez przeglądanie
drzewa pokrycia. Dynamiczne własności sieci Petriego mogą być również
opisywane przez równania macierzowe.
t
3
t
3
t
1
t
2
t
2
t
1
1,0,0
1,
ω
,0
0,1,1
1,
ω
,0
0,
ω
,1
0,0,1
0,
ω
,1
p
p
p
•
t
1
t
2
t
3
Rys.3.13. Konstrukcja drzewa pokrycia dla sieci Petriego
Modelowanie Procesów Dyskretnych
21
Podstawowe
redukcje
sieci
zachowujące
własność:
ż
ywotności,
ograniczoności i bezpieczeństwa. Oznacza to, że jeśli sieć przed
transformacją miała, którąkolwiek z tych własności, to sieć uzyskana w
wyniku zastosowania transformacji zachowuje również odpowiednie
własności.
Modelowanie Procesów Dyskretnych
22
t
2
t
1
t
2
p
1
p
2
t
4
p
4
t
3
p
3
t
1
t
2
t
2
p
1
p
2
t
4
p
3
t
2
p
1
t
4
p
3
Łączenie sekwencji miejsc
Eliminacja pętli miejsca
Eliminacja pętli przejścia
Łączenie sekwencji przejść
Rys. 3.14. Wybrane przypadki redukcji sieci.
Modelowanie Procesów Dyskretnych
23
3.8 Oprogramowanie narzędziowe ND.
Program ND (Net Draw) jest jednym z narzędzi pakietu TINA (Timed
Integrated Net Analyzer). Przeznaczony jest do edycji i symulacji sieci Petriego
zarówno deterministycznej jak i stochastycznej. Edytor pozwala na graficzną i
tekstową prezentację sieci, natomiast symulator umożliwia realizację trybu pracy
krokowej oraz automatycznej symulacji. Dodatkowo program zapewnia analizę
wybranych właściwości sieci [1] [2][3].
Dane wejściowe programu są zapisane w pliku tekstowym z rozszerzeniem, które
kojarzy go z wybranym modelem sieci i sposobem prezentacji (widokiem).
model / widok
graficzny
tekstowy
Sieć Petriego
*.ndr
*.net
Graf automatu
*.adr
*.aut
I. Tryb edycji.
Edytor uruchamia się poleceniem
nd.exe
.
1. Skrócony zapis działania klawiszem myszy.
LK
- lewy klik
,
PK
- prawy klik,
SK
- środkowy klik
.
Rys. 3.17. Ekran główny programy ND
Modelowanie Procesów Dyskretnych
24
2. Elementy sieci.
Węzły:
Krawędzie:
prostoliniowa
krzywoliniowa krawędź z wagą (waga>1)
3. Modyfikacja elementów graficznych.
Położenie węzłów i opisów:
LK
, przesunięcie.
Usuwanie węzła i krawędzi:
LK
, [
Delete
] lub
LK
, [
Ctrl+X
] lub
LK
,
PK
,
LK
na wybór
Cut.
Kopiowanie i wstawienie:
LK
, [
Ctlr
+
C
] [
Ctlr
+
V
].
Edycja krawędzi:
LK
, przesunięcie znaczników
promienia krzywizny
(edges rays).
p0
- miejsce (place)
p
0
= 1
t0
- tranzycja t
0
(transition)
dla TPN
0
< ϖ
<
∞
praktycznie 0
< τ
0
<
100
7
p1
p
1
= 7
t1
- tranzycja t
1
(transition)
dla TPN
4
< τ
1
<
7
[4 -7]
Modelowanie Procesów Dyskretnych
25
4. Ustawienie ogólnego sposobu aktualizowania krawędzi poprzez menu:
View
/
redraw edges
⇒
auto
- zachowuje bieżący tryb,
⇒
straight
- tryb prostoliniowy,
⇒
keep rays
- tryb krzywoliniowy z zachowaniem kierunków
5. Operacje grupujące.
N
a grupie elementów można wykonać wszystkie w/w operacje (z
wyłączeniem edycji
krzywizn
y
krawędzi
).
Grupowanie elementów –
LK,
zaznaczenie prostokątnej ramki.
Dodawanie do grupy i usuwanie z grupy - [
Ctlr
]+LK na wybranym elemencie.
6. Dodawanie nowych elementów.
Wprowadzanie nowych elementów realizowane jest poprzez kliknięcie
na
wybranej pozycji środkowym klawiszem myszy [
SK
] odpowiednio dla:
miejsca
-
SK
,
tranzycji - [
Ctlr
]+
SK
,
krawędzi - naciśnięcie środkowym klawiszem myszy na wybranym węźle
początkowym, oraz przesunięcie i puszczenie klawisza na węźle
końcowym.
Rys 3.19. Przykład edycji czasu tranzycji
t0
Modelowanie Procesów Dyskretnych
26
7. Modyfikacja parametrów.
Parametry (attributes) elementów sieci można modyfikować w odpowiednim
oknie dialogowym, otwieranym poprzez kliknięcie prawym klawiszem myszy
[
PK
] na wybranym elemencie.
Waga (weight)
- [
PK
] na krawędzi.
Identyfikator (name) - obligatoryjny i nadawany automatycznie (możliwy do
edycji) unikalny ciąg znaków alfanumerycznych (uży-
wany w raportach wynikowych).
Etykieta (label)
- opcjonalny unikalny ciąg znaków alfanumerycznych
Czas (interval)
- czas palenia się tranzycji
τ
i
∈
R
+
dla sieci czasowych
(deterministycznych) należy ustawić na jednakowej
wartości zakresu losowania wybierając pierwszy na liście
przypadek oznaczony symbolem [-
, -].
Program ND pozwala na symulację również czasowych sieci stochastycznych dla
wielu różnych specyficznych sposobów generowania czasu palenia się tranzycji
(Rys 3.19).
Rys 3.20. Przykład edycji argumentów miejsca
p2
Modelowanie Procesów Dyskretnych
27
Uwagi ogólne:
-
edycja położenia węzła modyfikuje także przyległe krawędzie,
-
liczba znaczników jest dodatnią liczbą całkowitą domyślnie równa zero,
-
wagi krawędzi domyślnie ustawione są na wartość równą 1,
-
położenie parametrów można zmienić w zakresie 8 ustalonych pozycji
wokół symbolu graficznego (dla tranzycji także wnętrze symbolu),
-
identyfikatory węzłów
p
i,
t
j
są automatycznie numerowane od zera, ale
można je zmieniać z zachowaniem unikalności,
-
w edycji graficznej ważne jest dokonywanie właściwego, wyboru elementu
np. krawędzi lub bliskiej okolicy a nie opisu np. tranzycji.
II.
Tryb symulacji.
Przebieg symulacji można śledzić, zapisywać i odtwarzać zarówno w trybie
ręcznym jak i automatycznym przechodząc wzajemnie z jednego trybu do
drugiego w trakcie symulacji.
1.
Z trybu edycji przechodzi się do trybu symulacji przez menu:
Tools
⇒
stepper simulator
a wraca automatycznie przez:
- zamknięcie okna symulacji:
[
Alt+F4
],
[
Ctrl+q
] lub
menu:
File
⇒
return to edytor [Ctrl+q]
2. W automatycznym trybie symulacji można wprowadzić opóźnienie zwalniające
szybkość jej wizualizacji przez zaznaczenie w menu :
Mode
⇒
firing duration (ms).
na poziome
0, 1, 10, 1000
3. Aktywacja zapisu do pliku namefile.
scn
przez zaznaczenie w menu:
Mode
⇒
record history
4. Odtworzenie zapisanej symulacji w menu:
File
⇒
open history
wybór
pliku
namefile.
scn
5. Symulacja może być przeprowadzona w trybie sieci czasowej (TPN)
Mode
⇒
timed
lub zwykłej (PN)
Mode
⇒
untimed
Modelowanie Procesów Dyskretnych
28
6. Inicjalizacja trybu automatycznej symulacji:
- uruchomienie: przycisk [
Rand],
- zatrzymanie:
przycisk [
Stop].
7. Nawigacja:
- przejście na początek [
|<
] zapisanej historii stanów,
- na koniec [
|>
] zapisanej historii stanów,
- przejście do poprzedniego [
<
] następnego
[
>
]
stanu,
- wybrane, istotne stany można zapamiętać wybierając przycisk [
M
]
- zapamiętane stany można
odtworzyć wybierając przyciskiem
[
>>
]
następny zapamiętany stan
lub przyciskiem [
<<
] poprzedni zapamiętany stan.
6. Ręczne sterowanie symulacją.
Jeżeli w trybie zwykłym jest co najmniej jedna przygotowana do przejścia
tranzycja (oznaczona czerwonym tłem ( np:
t0
na Rys 3.21) to można:
- nacisnąć lewy klawisz na aktywnej tranzycji (przygotowanej do przejścia)
wprowadzając chwilowy stan przejściowy, zachodzi zmiana (zmniejszenie)
stanu markowania w miejscach wejściowych aktywnej tranzycji i oznaczenie
jej czerwoną ramką z białym tłem,
- następnie po zwolnieniu klawisza występuje zmiana markowania na wyjściu
oznaczająca osiągnięcie nowego stanu markowania.
W trybie czasowej sieci Petriego dodatkowo występuje ręczne sterowanie
czasem symulacji. Jeżeli nie ma przygotowanej do przejścia tranzycji a
występują tranzycje oznaczone szarym tłem to można przesunąć znacznik czasu
(delay) w sposób skokowy
±±±±
1 lub ciągły do chwili uaktywnienia co najmniej
jednej tranzycji. Czas do momentu uaktywnienia się tranzycji (zmiany stanu)
jest na bieżąco wizualizowany.
Modelowanie Procesów Dyskretnych
29
3.9. Edytor i symulator PIPE
Opisany w poprzednim podrozdziale program ND z pakietu TINA posiada
ciekawe rozwiązania w zakresie śledzenia symulacji szczególnie dla
stochastycznych sieci Petriego, ale ma także wiele ograniczeń np: brak możliwości
ograniczenia ilości znaczników (pojemności miejsc), symulacji sieci kolorowanych
oraz graficznej reprezentacji wyników z analizy sieci.
Drugą propozycją w zakresie symulacji sieci Petriego jest program PIPE
(Platform Independent Petri Net Editor), posiadający bardziej rozbudowaną
funkcjonalność. Program PIPE Rys. 3.22) jest niezależnym od platformy
narzędziem do tworzenia i analizy sieci Petriego a ponadto:
- należy do otwartego oprogramowania (open source),
- posiada przyjazny w użyciu interfejs np.: skalowalną grafikę,
- zawiera wiele modułów do analiz: metody inwariantów, symulacji, przestrzeni
stanów, klasyfikacji, porównań, macierzy incydencji i wektora markowania,
- umożliwia generowanie grafu osiągalności (
coverability tree) -
pokrycia
znakowań pkt 3.7 i Rys. 3.23,
- zapewnia możliwość
symulacji sieci kolorowanych,
- umożliwia eksportowanie sieci Petriego w formacie graficznym.
Rys 3.22 Ekran programu
pipe
w trybie animacji (bieżącej symulacji)
Modelowanie Procesów Dyskretnych
30
Podstawowy ekran programu w trybie animacji przedstawia Rys 3.22 a wyniki
analiz tej sieci przedstawione są w kolejnych w tabelach.
1. Zbior stabilnych stanów markowania:
Set of Tangible States
P0
P1
P2
P3
P4
P5
P6
P7
M0
0
0
1
0
0
1
0
3
M1
0
0
1
1
0
0
0
3
M2
0
0
1
0
0
1
1
2
M3
0
0
1
0
0
1
2
1
M4
0
0
1
0
0
1
3
0
M5
1
0
0
0
0
1
3
0
2. Średnia liczba i rozkład gęstości znaczników:
Average Number of
Tokens on a Place
Token Probability Density
Place
Number of
Tokens
µ=0
µ=1
µ=2
µ=3
P0
0,1667
P0
0,8333
0,1667
0
0
P1
0
P1
1
0
0
0
P2
0,8333
P2
0,1667
0,8333
0
0
P3
0,1667
P3
0,8333
0,1667
0
0
P4
0
P4
1
0
0
0
P5
0,8333
P5
0,1667
0,8333
0
0
P6
1,5
P6
0,3333
0,1667
0,1667
0,3333
P7
1,5
P7
0,3333
0,1667
0,1667
0,3333
3. Czas trwania i rozkład stabilnych stanów oraz przepustowość czasowa tranzycji
Sojourn times for
Tangible States
Steady State Distribution
of Tangible States
Throughput of Timed
Transitions
Mark Value
Marking Value
Trans
Throughput
M0
0,5
M0
0,1667
T4
0,8333
M1
1
M1
0,1667
T5
0,8333
M2
0,5
M2
0,1667
M3
0,5
M3
0,1667
M4
0,5
M4
0,1667
M5
1
M5
0,1667
Modelowanie Procesów Dyskretnych
31
4. Ogólne parametry czasowe symulacji
State space exploration took 0,304s
Solving the steady state distribution took 0,116s
Total time was 0,504s
Wszystkie wyniki można zapisać w formacie html a analizę sieciową można
rozszerzyć na sieć kolorowaną Rys 3.24
Rys 3.23. Przykładowy graf osiągalności
Modelowanie Procesów Dyskretnych
32
Literatura do rozdz. 3.
1.
Berthomieu B., Vernadat F., The tool TINA. Construction of Abstract State
Spaces for Petri Nets and Time Petri Nets. International Journal of Production
Research, Vol. 42, No 14, July 2004.
2.
Berthomieu B., Diaz M., Modeling and verification of time dependent systems
using time Petri nets. IEEE Transactions on Software Engineering, 17(3),
1991.
3.
Berthomieu B., Vernadat F., State class constructions for branching analysis
of Time Petri nets. Springer Verlag, LNCS, 2003.
4.
Mur
a
t
a
T.,
P
e
tri N
e
t
s
:
pr
ope
rtie
s
, a
n
a
l
y
s
i
s
a
nd a
p
p
li
cat
i
o
n
s
.
Pr
oceed
in
g
s
of t
he
I
EEE
,
1
9
89
,
v
o
l
.
77
.
5.
R
eisig
W
: Sieci
P
e
triego.
WN
T 1
988
Rys 3.24. Kolorowana Sieć Petriego
Modelowanie Procesów Dyskretnych
33
6.
Ross K., Wright C., Matematyka dyskretna. PWN 1996.
7.
Szpyrka M.,Sieci Petriego w modelowaniu i analizie systemów współbieżnych.
WNT, 2008.
8.
Wilson R.,Wprowadzenie do teorii grafów. PWN 1998.
Strona internetowa.
http://pipe2.sourceforge.net/
-
Platform Independent Petri net Editor 2
Modelowanie Procesów Dyskretnych
34
4. JĘZYKI SYMULACYJNE SYSTEMÓW DYSKRETNYCH
4.1 Zastosowanie
Symulacja dyskretna często dotyczy systemów z kolejkowaniem zadań, takich
jak np. kasy w supermarketach czy linie produkcyjne w fabrykach. Symulacja
umożliwia natychmiastowe sprawdzanie nowych konstrukcji maszyn, automatów i
robotów w warunkach ich pracy, łącznie z ich programami sterującymi (tzw.
wirtualne uruchomienie produkcji). Dzięki takiej symulacji możemy dowolnie
testować kolejne zmiany w systemie np. nowe wymiary elementów, parametry czy
procedury pracy i do tego nie zakłócając produkcji rzeczywistych urządzeń. Nowy
program sterujący zostaje przesłany do sterownika rzeczywistego urządzenia
dopiero po jego gruntownym przetestowaniu i przy dziesiątkach tysięcy różnych
parametrów manualne poszukiwanie właściwej konfiguracji systemu może być
bardzo uciążliwe.
Zakres zastosowań jest bardzo szeroki i obejmuje np.: procesy obliczeniowe i
transmisję danych systemach informatycznych, ogólną produkcję i specjalizowane
linie produkcyjne, automatykę i robotykę, logistykę, magazyny, w tym transport
surowców, produktów i towarów, obsługę stanowisk np.: w szpitalach, bankach i
urzędach oraz w innych punktach usługowych a także złożoną sieć linii
komunikacyjnych.
Poprzez wczesne testowanie nowych rozwiązań można zaoszczędzić czas i
pieniądze uzyskując odpowiedź na wiele istotnych pytań: co produkować, gdzie i
kiedy, jak minimalizować koszty prowadzenia działalności z zachowaniem
odpowiedniej jakości i odpowiedniego stopnia zadowolenia klientów lub w jaki
sposób określić najlepsze rozplanowanie środków transportu i personelu - czy
można to samo wykonać np. z mniejszą liczbą maszyn?.
Symulacja pozwala na przetestowanie nowych rozwiązań dotyczących
ulepszenia programów sterujących i optymalizujących tj. zmniejszających ilość
przestojów oraz zwiększających wydajność systemów produkcyjnych, magazynu
czy całego systemu logistycznego. Z punktu widzenia optymalizacji opisana
problematyka często sprowadza się do likwidacji tzw. wąskich gardeł oraz
właściwego rozwiązania ogólnie pojętego problemu obsługi kolejek zadań.
Przykładem może być obsługa kolejki w aplikacji służącej do komunikacji w
firmie, której zadaniem jest usprawnienie telefonicznej obsługi klientów
(http://www.ipfon.pl/callcenter.htm)). Taka usługa pozwala między innymi na tym,
ż
e wielu pracowników - w tym także rozproszonych po całym świecie - może
obsługiwać jedną wspólną linię telefoniczną. Istotne jest w tym przypadku
Modelowanie Procesów Dyskretnych
35
zapewnienie inteligentnego kształtowania obciążenia konsultantów przejawiające
się między innymi w tym, że klienci nigdy nie usłyszą sygnału zajętości a w
zamian za to zostaną wprowadzeni do kolejki i poinformowani o ilości osób
oczekujących na połączenie z konsultantem (agentem) wraz szacowanym czasem
oczekiwania na to połączenie a okres oczekiwania zostanie umilony odsłuchaniem
muzyki. Z drugiej strony konsultant odbierający połączenia może być infor-
mowany o tym, że aktualne połączenie pochodzi z kolejki wraz z podanym czasem
oczekiwania klienta a ponadto może na bieżąco w przeglądarce internetowej
ś
ledzić stan kolejki i decydować o skróceniu czasu rozmowy lub przełączeniu
klienta na innego konsultanta (specjalisty).
Inny przykład kolejkowania dotyczy aplikacji realizującej kopiowanie plików z
serwerów hostujących w warunkach pozwalających na efektywniejsze wyko-
rzystanie internetu przy ograniczonej szybkości transmisji, minimalizacji kosztów i
czasu. Oczywiście ustawianie w kolejce plików oczekujących na skopiowanie nie
przyśpieszy prędkości, która nadal zależeć będzie od lokalnego dostawcy internetu,
ale jednak można oszacować koszty związane z płatnym kontem, ograniczeniem
prędkości, czasem oczekiwania na przyjęcie kolejnego zlecenia i maksymalną
ilością plików ustawionych przez administratora strony dla darmowych kont a
także własnych strat czasu związanych z oczekiwaniem na kolejne pliki i
zatrzymaniem obsługi.
Omawiane przykłady możliwe do symulacji dotyczą ogólnej problematyki
problemów decyzyjnych i szeregowania zadań. Przykładem może być kolejne
opracowanie (http://www.jstor.org/pss/2629693), którego celem jest określenie i
ocena poziomu wykorzystania w szpitalu sal operacyjnych i zaplecza (gabinetów
lekarskich, sal operacyjnych, laboratoriów, pomieszczeń zabiegowych) a także sal
chorych pod różnymi względami mającymi na celu dobro pacjenta. Kryteria oceny
biorą pod uwagę ograniczenia, dotyczące konkretnego szpitala, z którego uzyskano
dane empiryczne, jednak model i podejście zostały zaprojektowane z myślą o
ogólnych zastosowaniach. Model został zaprogramowany w GPSS, w badaniach
symulacyjnych przyjęto losowe wartości parametrów modelu ograniczone otrzy-
manymi z pomiarów zakresami i kryteria optymalizacji, pochodzące z aktywnej
działalności szpitala "w świecie rzeczywistym". Uzyskane wyniki zostały
zastosowane i potwierdziły, że efektywność wykorzystania zasobów może być
uzyskana przy jednoczesnym spełnieniu ograniczeń podyktowanych normalną
działalnością szpitala i koniecznością obniżenia kosztów.
W momencie, podejmowania decyzji, bardzo często nie wiemy, czy ta decyzja
jest optymalna. Dopiero po pewnym czasie, czyli po uzyskaniu większej ilości
informacji, dowiadujemy się o trafności naszego wyboru. Celem może być taka
strategia decydowania, aby zminimalizować straty w pesymistycznym przebiegu
przyszłych wydarzeń.
Tematyka problemów decyzyjnych jest ściśle powiązana ze sferami technologii
informatycznych, ekonomii i zarządzania, dotyczy zagadnień związanych z
Modelowanie Procesów Dyskretnych
36
pozyskiwaniem danych i ich obiektywną analizą, która pozwala na podejmowanie
optymalnych decyzji.
W sferze technologii informatycznych przykładem jest problem kolejkowania
zadań w maszynie wieloprocesorowej. System w momencie uzyskania nowego
zadania do zrealizowania, musi przydzielić mu procesor, który będzie go w stanie
efektywnie zrealizować. Problem polega na tym, że podjęta decyzja może być
nieoptymalna w stosunku do danych nadchodzących w przyszłości, których nie
znamy. W takiej sytuacji, standardowe rozwiązania są nieadekwatne. Potrzebne
jest stworzenie mechanizmów, które dawałyby natychmiastową odpowiedź, nawet
przy niepełnej informacji i minimalizowałyby one straty spowodowane przyszłym,
niekorzystnym scenariuszem wydarzeń. Celem w tym przypadku byłaby minima-
lizacja ilości potrzebnych procesorów oraz optymalizacja czasu i efektywności
systemu. Przykładem z zakresu ekonomii i zarządzania może być problem
zarządzania przepływem produktów w firmie, dopasowania produkcji do potrzeb
rynku, zarządzanie transportem, środkami produkcji, czy też zasobami ludzkimi.
Nieznajomość przyszłych potrzeb rynku, pociąga za sobą brak wiedzy, o tym jak
powinniśmy modyfikować ofertę, a tym samym utratę sprawności i zwiększenie
kosztów w takich czynnościach wewnątrz firmy jak przepływ pracowników,
danych, półproduktów i środków produkcji.
Poza tym utrudnia planowanie w doszkalaniu pracowników i zakupu nowych
urządzeń. Problemy te na ogół są rozwiązywane przez ludzi opierających się na
doświadczeniu i intuicji. To niestety z powodu braku wsparcia oprogramowaniem
opartym na solidnych podstawach teoretycznych prowadzi do utraty optymalności
stosowanych dotychczasowych rozwiązań.
Opracowanie odpowiedniego programu z wykorzystaniem języka symulacyj-
nego może posłużyć w realizacji praktycznych celów. Bazując na nich zaistnieje
możliwość tworzenia oprogramowania wspomagającego mechanizmy decydowa-
nia w firmach i innych organizacjach. Poza tym będą przydatne w komputerowych
systemach wieloprocesorowych usprawniając i zmniejszając koszty działania
systemu.
4.2 Język GPSS
4.2.1 Wprowadzenie
GPSS (ang. General Purpose Simulation Software - pierwotnie Gordon's
Programmable Simulation System) jest językiem programowania stosowanym do
symulacji komputerowej procesów w szczególności procesów dyskretnych. Język
został stworzony w latach 60-tych przez Geoffreya Gordona. Pierwotna nazwa
została zmieniona, gdy zdecydowano się wydać język, jako produkt komercyjny.
Aktualnie są dostępne pełne funkcjonalnie darmowe wersje edukacyjne jedynie o
Modelowanie Procesów Dyskretnych
37
ograniczonej pojemności modelu. Język w jego obecnym kształcie jest wynikiem
ponad kilkudziesięciu lat ewolucji. Podczas gdy GPSS ma swoje korzenie w
początkach systemów typu mainframe, to jego podstawowe idee okazały się
odpowiednie do wykorzystania we współczesnych problemach z wykorzystaniem
nowoczesnych środowisk informatycznych. Popularność GPSS wynika w części, z
dużej mocy wyrażania rzeczywistości (język, reguły składni i semantyki);. Aby
osiągnąć podobny cel krótki i łatwy do zrozumienia model GPSS, wymagałby
wielu stron kodowania w języku algorytmicznym (C, Pascal, Fortran). Użytkownik
pakietu symulacyjnego GPSS może skoncentrować się na istotnych zagadnieniach
dotyczących modelu, ponieważ elementy samego języka zbierają statystyki,
generują tabele wyników i wykonują wiele żmudnych i złożonych zadań.
Język posiada wiele realizacji (GPSS/PC, GPSS/W, GPSS/H), pomiędzy
którymi występują nieznaczne różnice – jednak podstawowe zasady są wspólne.
Symulacja z zastosowaniem języka GPSS, opiera się na metodzie interakcji
procesów, w którym połączono zalety metody planowania z metodą przeglądu i
wyboru zdarzeń zapewniając efektywne obliczenia zarówno dla dużej ilości zadań i
zdarzeń (patrz rozdz. 5). Ogólnie symulacja polega na grupowaniu działań w
procesy wykonywane na pojedynczych dynamicznych obiektach (transakcjach),
które po wprowadzane do systemu, są przekazywane przez kolejne bloki z
rejestrowaniem ich stanu od chwili pojawienia się w systemie aż do chwili zaniku.
Na wstępie omówione zostaną ogólne własności języka i przedstawione
niektóre podstawowe pojęcia, umożliwiające wstępne zrozumienie szerokiego
zakresu zastosowań, mocy i obsługi tego języka w symulacji.
GPSS dostarcza zestaw abstrakcyjnych elementów różnych typów i zestaw
operacji, określanych jako bloki, które wykonują określone czynności dla tych
elementów. Transakcja jest takim elementem, który przechodzi przez ciąg bloków,
wprowadzonych do modelu badanego systemu. Stan elementu modelu określa
szczegóły sposobu działania bloku danego typu. Na przykład blok, który daje
możliwość dla pewnej transakcji na przejęcie kontroli nad wybranym sprzętem nie
pozwoli tego dokonać, jeżeli ten sprzęt jest już w stanie maksymalnej zajętości.
GPSS udostępnia wiele różnych rodzajów obiektów. Obiekt reprezentujący
wyposażenie lub urządzenie (ang. facilities np.: maszyna, procesor, pojazd), może
być w danej chwili używany (zajęty) przez co najwyżej jedną transakcję. Z kolei
obiekt cechujący się pewną ograniczoną pojemnością może reprezentować
magazyn (ang. storage), ale także np.: pamięć, ładowność pojazdu, czyli obiekty,
których pojemność określona jest wymaganiami projektowanego systemu.
Wreszcie, przełącznik logiczny jest prostym elementem (on/off), który może być
ustawiany i testowany w celu dokonania zmiany ścieżki przepływu transakcji
poprzez bloki modelu.
Należy podkreślić, że wszystkie omówione obiekty są abstrakcyjne. W
symulacji konkretnego modelu np. funkcjonowania fabryki, transakcje mogą
stanowić montowane jednostki, urządzenia mogą reprezentować spawającego
Modelowanie Procesów Dyskretnych
38
robota a przełączniki logiczne mogą być wykorzystane do symulacji awarii
maszyny lub do jej sterowania.
W przypadku modelowania sieci szybkiej komunikacji, transakcjami mogą być
przesyłane wiadomości, urządzeniami linie przesyłowe a z kolei magazyny
stanowić bufory pamięci. Niezależnie od zastosowań, obiekty GPSS stanowią
naturalne równolegle działające modele elementów i procesów badanego lub
projektowanego systemu w świecie rzeczywistym.
W trakcie przemieszczania się transakcji poprzez bloki, realizacja określonych
działań na obiektach, jest zapamiętywana w postaci wielu rodzajów statystyk
dostępnych w trakcie symulacji jak i włączanych automatycznie do generowanego
raportu w chwili zakończenia symulacji (np.: średnia ilościowa, średni czas
obecności, wartość maksymalna itp.). Dodatkowe wyniki i raporty są tworzone
przez procesy kolejkowe, które generują odpowiednie raporty statystyczne, takie
jak: maksymalna i średnia długość kolejki, średnie opóźnienie, odsetek transakcji,
które zostały opóźnione lub natychmiast obsłużone. Wyniki są gromadzone w
postaci wartości próbek w tabeli częstotliwości wystąpień (histogramie).
GPSS zapewnia zasadniczy mechanizm kontroli, który gwarantuje, że
współzawodnictwo pomiędzy transakcjami (na przykład za korzystanie z obiektu)
jest arbitralnie rozstrzygane i w ten sposób transakcje są przenoszone przez bloki
modelu w sposób uporządkowany i efektywny. Ten mechanizm kontroli jest
zarządzany także przez zegar GPSS’a, który stanowi podstawę czasu symulacji
modelu
Zegar GPSS’a jest także abstrakcyjny, mierząc czas w umownych jednostkach
zegarowych, interpretowanych odpowiednio przez projektanta. W modelu
procesów produkcyjnych jednostka zegarowa może odpowiadać sekundzie lub
minucie, podczas gdy w sieci komunikacyjnej bardziej odpowiednia może być
wyższa rozdzielczość np. rzędu milisekund. Z kolei w systemie logistycznego
zaopatrzenia będzie wymagana bardzo niska rozdzielczość rzędu godziny lub doby.
Zdefiniowane funkcje wspomagają realizacje różnych relacji w obliczeniach
numerycznych. Mogą one być wykorzystywane do generowania zmiennych
losowych z teoretycznych lub empirycznych rozkładów prawdopodobieństwa.
Zmienne losowe można wykorzystać do zmiany zachowania transakcji w
zależności od zachowania się całego systemu, wybranych obiektów lub atrybutów
transakcji.
Wartości zmienne są używane do wykonywania obliczeń arytmetycznych we
wszystkich implementacjach GPSS, przy czym charakteryzują się one
zróżnicowaną elastycznością w różnych w wersjach języka GPSS. GPSS/W,
GPSS/VX i GPSS/C pozwala na używanie wyrażeń arytmetycznych wszędzie tam,
gdzie jest dozwolone używanie wartości stałych.
Niektóre przypadki modelowanych sytuacji mogą skorzystać z koncepcji
zawartych w grupach jednostek jednakowego typu a w innych sytuacjach korzystne
będzie użycie bloków operujących na pojedynczych elementach.
Modelowanie Procesów Dyskretnych
39
Transakcja ma własny zestaw atrybutów numerycznych oraz prywatną nazwę
parametru, którą można wykorzystać do przechowywania różnych informacji
wymaganych przez użytkownika, takich jak numer identyfikacyjny części, rozmiar
lub waga przedmiotu reprezentowanego przez transakcję.
Szeroki zestaw standardowych atrybutów numerycznych (SNA) zapewnia
wygodny dostępu do automatycznego zapisu składników modelu, które mogą być
używane wszędzie tam gdzie jest dopuszczone użycie wartości numerycznych.
Przykładowo, jeżeli zmienna
Q$OBS
reprezentuje długość kolejki to może być
użyta w prostej sytuacji podjęcia decyzji o wyborze kolejki w bloku testującym
TEST L Q$OBS, FN$DOP, WYJSCIE
Przykładowe parametry bloku TEST pozwalają transakcji na przejście jeśli
aktualna długość kolejki o nazwie OBS jest mniejsza niż wartość zwracana przez
funkcję DOP lub w przeciwnym wypadku przekierowywuje ją do bloku WYJSCIE.
Z kolei funkcja DOP może zwrócić wartość zmiennej losowej o dowolnym
rozkładzie prawdopodobieństwa, wartość zmiennej z pory dnia czasu symulacyj-
nego lub wartość zależną od aktualnego parametru innych urządzeń np pojemności
(reprezentowanej przez parametr transakcji). Pierwszy znak wraz ze znakiem
dolara oznacza odniesienie się do predefiniowanych nazw systemowych SNA.
GPSS zapewnia możliwość interaktywnego śledzenia przebiegu symulacji,
które pozwala na ustawianie pułapek w modelu oraz obserwację parametrów
obiektów modelu podczas krokowego przebiegu symulacji. Każda kolejna wersja
pakietu symulacyjnego opartego na języku GPSS, wprowadza dodatkowe
innowacyjne narzędzia przeznaczone do debugowania i śledzenia symulacji w
sposób coraz bardziej efektywny. Uwarunkowane pułapki i animowane prezentacje
pozwalają na optymalizację procesu projektowania a dla gotowego modelu na
skrócenie rzeczywistego czasu badań symulacyjnych.
Wstępny, prosty przykład pozwoli na zapoznanie się z elementarnymi zasadami
programowania i podstawowymi blokami języka GPSS World. Program modeluje
obsługę sprzedaży biletów dla klientów oczekujących w indywidualnych kolejkach
do trzech kas. Założono że obiekty reprezentują kasjerów biletowych obsługu-
jących transakcje klientów.
Przykład nr 1
01 SIMULATE
02 TSObs EQU 30 ;
sredni czas obsługi
03 DTWej FUNCTION RN1,C3 ;
rozkład równomierny(RN) i ciągły
04 0,4/.5,2/1,1 ;
z 3-ma odcinkami liniowymi(C3)
05 GENERATE 10,FN$DTWej ;
zgłaszanie się klientów
06 QUEUE Kolejka ;
z ustawieniem na koncu
07 SEIZE Kasa ;
zajęcie stanowiska kasowego
08 DEPART Kolejka ;
z opuszczeniem kolejki
09 ADVANCE UNIFORM(2,TSObs-2,TSObs+2) ;
czas obsługi
Modelowanie Procesów Dyskretnych
40
10. RELEASE Kasa ;
zwolnienie kasy
11. TERMINATE 1 ;
zwolnienie jednej transakcji
12. START 100
W kolejnych wierszach modelu o numerach:
0
1.
SIMULATE
- opcjonalna instrukcja oznaczającą początek symulacji,
02.
TSObs EQU
- wartość
TSObs
= 30 to średnia czasu obsługi w kasie biletowej,
03,04. - linie definiują funkcję, która generuje przekształcenie ciągłej zmiennej
losowej z przedziału [0, 1) z pierwszego strumienia rozkładu normalnego
równomiernego (
RN1
), do zależności wg wartości zadanych punktów (z
interpolacją wartości pośrednich),
05. klienci przybywają średnio co 10 jednostek czasu z odchyleniem określonym
przez funkcje w liniach 03 i 04,
06. ustawienie się klienta na końcu kolejki,
07. kiedy kasa jest dostępna
następuje jej zajęcie oraz
0
8. opuszczenie kolejki, z zapisem czasu w statystykach kolejki,
09. zachodzi opóźnienie średnio o
TSObs
jednostek z odchyleniem o 2 jednostki
w obu kierunkach, związane z czasem obsługi klienta w kasie.
10. zwolnienie kasy i z umożliwieniem zajęcia jej przez kolejnego klienta.
11. zakończenie jednego cyklu obsługi klienta.
12. uruchomienie symulacji dla 100 klientów do momentu aż wszyscy zostaną
usunięci z procesu osiągając kolejno blok
TERMINATE
.
W linii 09 okres czasu w którym kasa jest zajęta jest losowo wybrany z
jednakowym prawdopodobieństwem (wg rozkładu równomiernego) z przedziału
od 28 do 32 jednostek a liczba określająca aktualny czas opóźnienia jest pobierana
z drugiego strumienia liczb losowych, a więc w stosunku do czasów wejścia,
czasy opóźnień są statystycznie niezależne.
Standardowy raport zawiera nagłówek, listę nazw stałych przypisanymi wartoś-
ciami i zmiennych z identyfikatorami numerycznymi oraz szereg danych statys-
tycznych z przebiegu symulacji np: ENTRY COUNT – liczba wejść do każdego
bloku, nazwa kolejki (QUEUE) i maksymalna jej długość.
GPSS World Simulation Report - s0bilet
Saturday, October 15, 2010 01:19:58
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 2998.582 7 1 0
NAME VALUE
DTWEJ 10001.000
KASA 10003.000
KOLEJKA 10002.000
TSOBS 30.000
Modelowanie Procesów Dyskretnych
41
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 136 0 0
2 QUEUE 136 35 0
3 SEIZE 101 1 0
4 DEPART 100 0 0
5 ADVANCE 100 0 0
6 RELEASE 100 0 0
7 TERMINATE 100 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
KASA 101 0.997 29.589 1 101 0 0 0 35
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
KOLEJKA 36 36 136 1 18.097 399.009 401.965 0
W modelu może być wiele równolegle przebiegających procesów w odrębnych
segmentach, ale pomiędzy nimi mogą występować wzajemne interakcje a o tym
który proces decyduje o zakończeniu symulacji określa sposób usuwania transakcji
w bloku
TERMINATE.
Ponadto w przypadku konieczności wyboru decyzji o
pierwszeństwie wykonania operacji można określić jej priorytet. Omówione
problemy wyjaśnia prosty przykład:
Przykład nr 2;
;
proces 1 który decyduje o zakonczeniu symulacji
;
gdy inny nie zmienia swojego licznika
01 GENERATE 10,0 ;
wprowadza co 10 jedn. z priorytet domyslny 0
02 TERMINATE 1 ;
zmienia (dekrementuje) licznik tranzycji
;
proces 2 – równoległy
03 GENERATE 20,0,,,-1 ;
priorytet niższy = -1 wprowadzi 49 transakcji
;
LUB po zmianie priorytetu
;
GENERATE 20,0,,,1
;
priorytet wyższy =1 wprowadzi 50 transakcji
05 TERMINATE ;
bez zmainy licznika - proces 1 decyduje o końcu symulacji
06 START 100 ;
zakonczenie symulacji po 1000= 100x10 jedn. czasu
Zakończenie symulacji następuje po upływie 1000 jedn. czasu ponieważ decyduje
o tym obsłużenie 100 transakcji procesu 1 w odstępach 10 jednostek czasu.
4.2.2 Opis podstawowych elementów języka GPSS ver World
Pełny opis języka zawiera ponad kilkadziesiąt instrukcji, z których większość
ma od 2 do 7 parametrów. Jest to wiedza, która może być wykorzystana tylko po
jej bardzo dobrym opanowaniu i będzie użyteczna w przypadku modelowania
złożonych i skomplikowanych procesów - wymaga sporego niekiedy długotrwa-
łego procesu szkolenia i praktycznego doświadczenia. Poniżej przedstawione
Modelowanie Procesów Dyskretnych
42
zostały tylko najbardziej podstawowe i najczęściej używane elementy języka oraz
ogólne zasady jego używania, których zastosowanie będzie wystarczające do
rozwiązania załączonych zadań. Pełny opis parametrów wraz z przykładami
załączono w pkt 6. Z kolei kompletny opis języka, można znaleźć w bogatej
dokumentacji dołączonej do pakietu GPSS World.
Transakcje (ang. Transaction)
Transakcja jest dynamicznym obiektem o ściśle określonym zbiorze atrybutów
(w GPSS Parameters). Transakcje są tworzone pojedynczo lub w zestawach w
bloku GENERATE a następnie podzas symulacji przechodzią przez kolejne bloki
niekiedy wraz z innymi jednostkami GPSS. W zestawie transakcja może się
składać z wielu identycznych elementów np: kilka towarów transportowanych
przez pojazd.
Sposobem na identyfikację transakcji w systemie (procesie) rzeczywistym i tym
samym na jej reprezentację po wprowadzeniu do modelu GPSS jest jej słowny
sposób opisu. Opis takie zawiera często użycie z czasownika np. jak: "wejście do
czegoś”, „przejście przez coś”, „zgłosić się do czegoś”, itp”. Ten czasownik może
reprezentować typ bloku w GPSS jak np w zdaniu, „Transakcja zajęła urządzenie”
(ang. Transaction SEIZE’s Facility), która bezpośrednio reprezentuje operację na
typie bloku SEIZE. Każda transakcja aktualnie podczas symulacji może być w
dokładnie jednym bloku, ale większość bloków może zawierać wiele transakcji.
Każda transakcja zajmuje jeden blok, potem następny i tak dalej, aż do jej
usunięcia (ang. TERMINATE) lub zakończenia symulacji. Transakcje czasami są
w stanie oczekiwania przed blokiem, aż odpowiednie korzystne warunki zostaną
spełnione uprawniające do jego zajęcia. Bloki zapisane w kolejnych liniach
programu GPSS przepuszczają kolejne transakcje, pod warunkiem, że nie natrafią
one na blok TRANSFER, który może ją przesłać do innego bloku nie będącego w
aktualnej sekwencji.
Systemowe atrybuty numeryczne (SNA)
Systemowe atrybuty numeryczne (SNA - System Numerical Attribute) są pre-
definiowanymi zmiennymi opisującymi ogólny stan symulacji (np.: symulowany
czas) a także związanymi z większością bloków (np. długością kolejki w bloku
QUEUE). Zmienne SNA udostępniają wartości numeryczne lub łańcuchowe i
mogą być stosowane w instrukcjach i wyrażeniach GPSS. Są one ściśle związane z
obiektami więc ich znaczenie najlepiej poznawać równocześnie z opisem tych
obiektów.
Modelowanie Procesów Dyskretnych
43
Obiekty blokowe
Obiekt blokowy (ang. Block entity) jest podstawowym elementem
strukturalnym programu symulacyjnego. Określenie to jest związane z możli-
wością przedstawienia programu symulacyjnego w postaci schematu blokowego
(patrz rozdz. 4.5). Bloki są identyfikowane poprzez nazwy, które sugerują ich
zastosowanie w realizacji pewnych akcji np: generowanie, zajęcie lub zakończenie
zwykle napisane dużymi literami odnoszą się odpowiednio do bloków
GENERATE, SEIZE i TERMINATE. Każdy z bloków ma listę argumentów
oddzielonych przecinkami. Kolejność pozycji argumentów będzie oznaczony
dużymi literami alfabetu w zwykłym porządku alfabetycznym. Bloki mogą mieć
opcjonalnie unikalne etykiety, których nazwy można wykorzystać w sugerowaniu
wykorzystania tego bloku w procesie rzeczywistym. Składnia bloku.
etykieta
TYPBLOKU A, B, C, ...
;
komentarz po średniku
Argumenty, które mogą być pominięte przyjmują domyślne wartości ale ich
pozycje muszą być zaznaczone przez przecinki. Wyjątkiem jest możliwość
pomijania argumentów domyślnych od końca listy np w przykładzie nr 2 linia 03.
Oznacz to, że gdy wszystkie argumenty końcowe są nieistotne lub domyślne to
mogą być pominięte wraz z przecinkami.
Lista i opis podstawowych (najczęściej używanych bloków)
GENERATE - blok tworzący transakcje, będą się pojawiały w symulacji w
określonym odstępie czasowym, ilości i z określonym priorytetem (w nawiasach
podano domyślne wartości).
GENERATE A,B,C,D,E
A – czas pomiędzy dwoma kolejnymi transakcjami (odstęp), (A=0)
B – rozrzut, (odchylenie, tolerancja) dla wartoći A, która jest wartością średnią
równomiernego rozkładu prawdopodobieństwa (B=0)
C – opóźnienie dla pierwszej transakcji,
D – maksymalna liczba ograniczająca liczbę wprowadzonych transakcji, (D =
∞
)
E – priorytet transakcji (E = 0 do 9)
Przykłady
GENERATE 50
;
transakcja jest generowana w odstępie co 50 jedn. czasu
GENERATE 20, 2.5 ;
odstęp czasu losowy o rozkładzie równomiernym w
;
przedziale [17.5, 22.5] lub 20
±
2.5
GENERATE (EXPONENTIAL(nr,
λ
,
β
)) ;
z parametrami rozkładu ekspotencjal-
;
nego
f(x) = 1/
β
exp(- (x-
λ
) /
β
)
GENERATE , , , 1
;
wygenerowanie pojedynczej transakcji
Modelowanie Procesów Dyskretnych
44
ASSIGN – blok przypisujący lub modyfikujący wartość parametru transakcji, -
jeżeli parametr nie istnieje to jest on tworzony:
ASSIGN A, B, C
A - numer parametru lub nazwa aktywnej transakcji opcjonalnie zakończona
znakiem + lub -, znak +/- oznacza, że wartość argumentu B należy
odpowiednio dodać do / odjąć od oryginalnej wartości parametru A.
B - wymagany argument (nazwa, numer, string, wyrażenie w nawiasach lub SNA)
C - opcjonalna nazwa funkcji, której wartość będzie mnożona przez B.
Przykłady
ASSIGN Licz+, 1
;
inkrementacja licznika Licz o 1
ASSIGN P1, 10
;
pierwszemu parametru transakcji przypisano wartosc 10
Stanowisko obsługi jednokanałowej - FACILITY
Stanowisko obsługi jest obiektem, posiadającym kilka cech, z których
najważniejszym jest własność zajętości. Stanowisko jest tworzone automatycznie
gdy pierwsza transakcja osiągnęła blok, który korzysta z tego stanowiska.
Stanowiska nie muszą być deklarowane i definiowane przez instrukcje sterujące.
GPSS posiada kilka bloków, które używają i wykonują akcje dotyczące stanowisk:
SEIZE A
- zajęcie stanowiska jednokanałowego A;
RELEASE A
- zwolnienie stanowiska jednokanałowego A.
A - nazwa lub numer stanowiska,urządzenia lub wyposażenia
Przykłady:
SEIZE Kasa
;
ustawienie się przy okienku o nazwie Kasa
RELEASE Kasa
;
odejście od okienka o nazwie Kasa
FAVAIL A - udostępnienie urządzenia jednokanałowego A (Facility AVAILable).
Przykład:
FAVAIL Kasa1 ;
ustawienie dostępności do stanowiska Kasa1.
FUNAVAIL (Facility UNAVAILable) ustawianie
niedostępności
(blokada)
urządzenia jednokanałowego i określenie dalszego losu tak zatrzymanej
transakcji.
FUNAVAIL A,B,C,D,E,F,G,H - zablokowanie stanowiska jednokanałowego
A – nazwa urządzania, stanowiska jednokanałowego
B – tryb traktowania transakcji: usunięcie (RE), kontynuacja (CO),
C – nr bloku dla przerwanej transakcji,
D – nr parametru przechowującego czas pobytu (gdy RE),
E – tryb traktowania dla wywłaszczonych transakcji (RE, CO),
F – nr bloku dla wywłaszczonej transakcji,
G – tryb traktowania dla transakcji opóźnionej,
H – numer bloku dla transakcji opóźnionej
Modelowanie Procesów Dyskretnych
45
Przykłady:
A B C D E F G H
FUNAVAIL Kasa1, RE, Kasa2, 30, RE, Rez, CO
Ustawienie niedostępności do stanowiska Kasa1.
C = Kasa2 - transakcja z Kasa1 jest przesyłana do bloku Kasa2,
D = 30 – parametr który przechowuje czas pobytu transakcji,
F = Rez - transakcje wywłaszczone wcześniej są przesyłane do bloku Rez
FUNAVAIL Kasa ; ustanowienie niedostępności stanowiska Kasa
Standardowe Atrybuty Numeryczne (SNA) – dla stanowiska jednokanałowego
FNrObiektu - zwraca stan zajętości stanowiska
FnrObiektu - zwraca wartość 1 gdy stanowisko jest aktualnie zajęte
oraz wartość 0 w przeciwnym wypadku
NrObiektu - symbol oznaczajacy liczbę/ nazwę obiektu.
Stanowisko wielokanałowe (grupa urządzeń) - STORAGE
Stanowisko wielokanałowe jest złożone z wielu nierozróżnialnych i równo-
uprawnionych jednostek pozwalających na obsługę wielu transakcji. Stanowisko
musi być jawnie zadeklarowane z podaniem rozmiaru przez instrukcję:
Nazwa STORAGE A
Nazwa - obowiązkowa etykieta reprezentująca identyfikator stanowiska
A – wymagany rozmiar (pojemność, ilość stanowisk, liczba jednostek składo-
wania itp., dostępnych dla transakcji).
Bloki GPSS, które mogą obsługiwać stanowiska wielokanałowe:
ENTER A,B uwarunkowane wejście i zajęcie stanowiska wielokanałowego
A - nazwa (identyfikator) stanowiska wielokanałowego
B - zajęcie B jednostek (domyślnie 1) ;
Warunki zajęcia to wolne B jednostek stanowiska i jego dostępność stanowiska A
LEAVE A,B - zwolnienie stanowiska wielokanałowego
A - nazwa (identyfikator) stanowiska wielokanałowego
B - zwolnienie B jednostek (domyślnie B=1) ;
SUNAVAIL A - blokuje stanowisko wielokanałowe (jest niedostępne)
A - nazwa (identyfikator) stanowiska wielokanałowego
SAVAIL A - odblokowanie stanowisko wielokanałowego ( jest udostępnione)
A - nazwa (identyfikator) stanowiska wielokanałowego
Ogólnie bloki ENTER i LEAVE maja po dwa argumenty, z których pierwszy
jest wymagany i wskazuje stanowisko wielokanałowe, które jest odpowiednio
Modelowanie Procesów Dyskretnych
46
zajmowane i zwalniane, natomiast drugi to liczba zajmowanych i zwalnianych
przez transakcję kanałów. Jeżeli tylko jeden kanał ma być zajęty lub zwolniony to
drugi argument można pominąć.
Bloki SAVAIL i SUNAVAIL wymagają tylko jednego argumentu, który repre-
zentuje blokowane i udostępniane stanowisko wielokanałowe. Gdy transakcja
pojawi się na wejściu do stanowiska wielokanałowego wykorzystuje (zajmuje)
jeden lub więcej kanałów określonych przez argument B. Transakcja może mieć
zakazane wejście do bloku ENTER jeśli on nie spełnia warunków obsługi.
Transakcja jest zatrzymana i oczekuje do czasu aż inne transakcje zwolnią kanały
przez wejście do bloku LEAVE.
Praktycznie bloki ENTER i LEAVE są używane do aktualizacji statystyk
związanych z obsługą stanowisk wielokanałowych, szereg zmiennych SNA służy
do ich zapamiętania np są to:
RNrObiektu – pozostała do wykorzystania (Rest) przez transakcje ilość kanałów
na stanowisku wielokanałowym NrObiektu,
SNrObiektu – użyta (zmagazynowana – Store) aktualnie ilość kanałów przez
transakcje na stanowisku wielokanałowym NrObiektu,
SANrObiektu – średnia użyta (zmagazynowana – Store Average) aktualnie ilość
kanałów przez transakcje na stan. wielokanałowym NrObiektu,
SCNrObiektu – ilość użytych kanałów (Store Count) na stanowisku
wielokanałowym NrObiektu,
SENrObiektu – sprawdza niedostępność stanowiska (Store Empty) przyjmując
wartość równą 1 jeśli stanowisko wielokanałowe NrObiektu jest całkowicie
niewykorzystane a wartość 0 w przeciwnym przypadku,
SFNrObiekt – sprawdza dostępność stanowiska (Store Full) przyjmując wartość
równą 1 jeśli stanowisko wielokanałowe NrObiektu jest całkowicie
wykorzystane a wartość 0 w przeciwnym przypadku,
SRNrObiekt – stopień wykorzystania (Utilization) stanowiska wielokanałowego
NrObiekt określający stosunek średniego czasu w którym stanowisko było
zajęte do całkowitego czasu symulacji wyrażona w postaci ułamka tysięcznego
SMNrObiekt - Maksymalna ilość kanałów używana na stanowisku
wielokanałowym NrObiektu,
STNrObiektu - Średni czas zajętości dla pojedynczego kanału używanego na
stanowisku wielokanałowym NrObiektu,
SVNrObiekt - Sprawdza dostępność stanowiska (Store Full) przyjmując wartość
równą 1 jeśli stanowisko wielokanałowe NrObiektu jest dostępne a wartość 0
w przeciwnym przypadku.
Kolejki i bloki kolejek
Kolejki są używane głównie do zbierania danych statystycznych, takich jak
aktualna długość, ilość wejść, średni czas pobytu i inne. Śledzą one także
transakcje, które są zablokowane przed wejściem na zajęte stanowisko
Modelowanie Procesów Dyskretnych
47
jednokanałowe i pełne stanowisko wielokanałowe. Analogicznie jak stanowisko
jednokanałowe kolejka jest tworzona gdy pierwszy obiekt transakcji osiągnie blok,
który używa kolejki. Kolejkę obsługuje dwuargumentowy blok QUEUE, w którym
zachodzi wzrost zawartości obiektów oraz DEPART, w którym, zachodzi
zmniejszenie zawartości obiektów w kolejce.
QUEUE
A,B – wejście do kolejki
A - nazwa lub numer z kolejki
B - opcjonalna liczba obiektów (domyślnie 1) wchodząca do kolejki A
DEPART A,B
A - nazwa lub numer z kolejki
B - opcjonalna liczba obiektów (domyślnie 1) wychodząca z kolejki A
Bloki z obsługą kolejki są ściśle jest związane z blokami obsługi stanowisk i ich
operacje są naprzemienne tj. SEIZE lub ENTER pomiędzy QUEUE i DEPART a
następnie RELEASE lub LEAVE. W w/w przykładzie nr 1 dotyczącym obsługi w
kasie biletowej osoba w kolejce (linia 08) opuszcza ją dopiero po pomyślnym
podejściu do kasy (linia 07).
Z obsługą kolejek związanych jest szereg zmiennych SNA, które są używane do
generowania danych statystycznych.
Przykładowo są to:
QNrObiektu - aktualna długość kolejki NrObiektu określona przez licznik ilości
transakcji
QANrObiektu - średnia ważona w czasie długość
QCNrObiektu - suma wszystkich wejść do kolejki NrObiektu.
QMNrObiektu - maksymalna długość kolejki NrObiektu
QTNrObiektu - średni czas pobytu transakcji w kolejce NrObiektu z
uwzględnieniem wszystkich transakcji.
QTABLE - deklaracja i inicjalizaja parametrów dla danych statystycznych
gromadzonych w postaci rozkładów częstotliwości
Nazwa QTABLE A, B, C, D
A - nazwa bloku kolejki
B - górna granica zapisu pierwszego zakresu częstotliwości.
C - rozmiar zakresu częstotliwości.
D – ilość zakresów częstotliwości.
ADVANCE
Blok ADVANCE jest jedynym blokiem, który jest ściśle związany z postępem
czasu. Gdy transakcja dochodzi do bloku ADVANCE jest ona opóźniana o
określoną ilość czasu symulacyjnego a następnie przechodzi do następnego bloku.
Składnia bloku jest następująca:
Modelowanie Procesów Dyskretnych
48
ADVANCE A, B
A - wymagany średni przyrost czasu.
B - opcjonalnie rozrzut, odchylenie, tolerancja dla wartości A która jest
wartością średnią rozkładu równomiernego, (B=0)
Przyrost czasu można określić na kilka sposobów. Jeśli jest tylko argument A to
określa on deterministyczny przyrost czasu. Jeśli są oba argumenty A i B a B nie
jest funkcją to przyrost czasu jest liczbą losową z przedziału A - B i A + B
włącznie. Jeśli B jest funkcją to jej wartość po pomnożeniu przez argument A
określa przyrost czasu, który może być zależny od innych zmiennych w symulacji.
FUNCTION
Funkcje GPSS funkcji są używane do określenia wartości na podstawie innych
argumentów np. liczb losowych i wartości systemowych SNA. Funkcja jest
określona przez linię nagłówka z poleceniem FUNCTION z parametrami i
ewentualnym komentarzem oraz w kolejno następujących po sobie liniach
specyfikację danych w postaci pary wartości x, f(x) oddzielonych znakiem / .
Nazwa FUNCTION A, B
; komentarz
x1,y1 / x2,y2 ...
... xn,yn
A – argument (zmienna niezależna - wejściowa)
B – oznacza typ funkcji i liczba par, która pojawią się w specyfikacji danych
będących liczbami stałymi, nazwami lub zmiennymi SNA.
Istnieje 5 różnych typów argumentów funkcji, z których najczęściej ma
zastosowanie typ C gdzie funkcja jest ciągła z interpolowanymi liniowo
wartościami pośrednimi lub typ D dla dyskretnych wartości funkcji gdzie każda
wartość argumentu lub gęstości prawdopodobieństwa ma przypisaną osobną
wartość.
Dla typu C jeśli argument zawarty jest w określonym segmencie linii, to jest
wykonywana interpolacja liniowa. Na przykład dla funkcji
Output FUNCTION V$Input,C5
1.1,10.1/20.5,98.7/33.3,889.2
93.5,2003/200.4,8743
jeśli V$Input wynosi 25, to FN$Output zwraca wynik obliczenia:
98,7 + (889.2-98.7) * (25-20.5) / (33.3-20.5).
Sterowanie kolejnością przepływu transakcji.
TRANSFER
Blok TRANSFER A,B,C umożliwia przeskok transakcji do innego bloku nie
będącego w sekwencji. Może on być: bezwarunkowy, warunkowy lub
probabilistyczny. Ogólnie tryb działania pracy dotyczący transferu określa
parametr A a B i C to numery bloków lub ich lokalizacje.
Tryb bezwarunkowy:
Modelowanie Procesów Dyskretnych
49
Parametr A – jest pusty a aktywna transakcja zawsze przechodzi do bloku B -
transakcja nigdy uzyskuje odmowy wejścia do bloku TRANSFER ale jeśli
dostaje odmowę wejścia do bloku docelowego B to pozostaje w bloku
TRANSFER.
Tryb losowy:
Parametr A określa prawdopodobieństwo (0–1) przy którym aktywna transakcja
przechodzi do bloku określonego argumentem C oraz z prawdopodobieństwem
1–A do bloku określonego przez operand B. Jeśli parametr B jest pusty to
transakcja przechodzi do następnego bloku sekwencyjnego (NSB) - jest to
najczęstsze zastosowanie bloku TRANSFER.
Tryb warunkowy:
Gdy parametr A jest równy BOTH to blok określony przez parametr B jest
testowany i gdy są warunki na przyjęcie aktualnej transakcji to następuje jej
przejście do tego bloku W przeciwnym wypadku testowany jest blok C i on
przejmuje transakcję. Kiedy żaden ze wskazanych bloków nie może przejąć
transakcji, czeka ona w bloku TRANSFER na spełnieni któregokolwiek warunku
Składnia:
TRANSFER A,B,C
A – brak parametru oznacza przejście bezwarunkowe do etykiety w parametrze B
albo słowo BOTH (przejście warunkowe) albo wartość prawdopodobieństwa
przejścia np wartość p,
B – etykieta przejścia bezwarunkowego albo pierwsza etykieta dla przejścia
warunkowego albo etykieta przejścia o prawdopodobieństwie 1-p dla transakcji,
C – druga etykieta przejścia (przejście warunkowe) albo etykieta przejścia o
prawdopodobieństwie p
Przykłady
TRANSFER , Wyjscie ; przejście bezwarunkowe do bloku z etykietą Wyjscie
TRANSFER BOTH, S1,S2 ;przejście warunkowe – w pierwszej kolejności
; do bloku z etykietą S1, a gdy jest niemożliwe do bloku z etykietą S2
TRANSFER .35, S1, S2 ; przejście losowe z prawdopodobieństwem 0.65
; do bloku z etykietą S1 i z prawdopodobieństwem 0.35 do bloku z etykietą S2
TEST
Blok TEST porównuje wartości, zwykle zmienne SNA i steruje przejściem
transakcji na podstawie wyników porównania z użyciem zwykłych operatorów
relacyjnych. Jest to kolejny sposób, aby umożliwić niesekwencyjne działania
symulacji. Składnia bloku testującego ma postać:
TEST O A, B, C - sterowanie przejściem transakcji z badaniem warunku;
O – operator warunkowy, typ relacji (G, GE, E, NE, LE, L),
Oznaczenia:
G – większe; GE – większe lub równe; E – równe; NE – nierówne;
LE – mniejsze lub równe; L – mniejsze
Modelowanie Procesów Dyskretnych
50
A – pierwszy argument relacji (nazwa/numer obiektu, wartość wyrażenia),
B – drugi argument relacji (nazwa/numer obiektu, wartość wyrażenia),
C - etykieta (numer) bloku dla przypadku False.
Przykłady:
TEST LE Q$S1,4,KONIEC
;
zajęcie stan. S1, gdy kolejka przed nim jest nie
większa od 4; w przeciwnym przyp. przejście do bloku z etykietą KONIEC
TEST E Steruj, 3, Transport
;
gdy kod sterowania Steruj jest równy 3 to
transakcja przechodzi dalej, jeżeli nie, to idzie do bloku Transport
GATE
Blok GATE podobnie jak TEST steruje przejściem transakcji ale na podstawie
stanu urządzeń jest to następny sposób, na niesekwencyjne działanie symulacji.
Składnia bloku testującego ma postać:
GATE O A,B Sterowanie przepuszczeniem transakcji z badaniem warunku;
O – operator warunkowy, kodowanie stanu urządzenia
(FNV, FV, I, LS, LR, M, NI, NM, NU, SE, SF, SNE, SNF, SNV, SV, U),
A – nazwa lub numer obiektu testowanego,
B – etykieta (numer) bloku dla przypadku nieprawdy . Oznaczenia:
Stanowisko Facility:
FNV/FV– (nie)dostępne; NI/I – (nie)jest w przerwaniu; NU/U – (nie)jest w użyciu
Przełącznik Logic switch: LS / LR – ustawienie/ zerowanie
Blok MATCH: NM /M– (nie) posiada powiązaną(ej) transakcję(i)
Stanowisko Storage:
SE/SF –jest puste/pełne; SNE/SNF – nie jest puste/pełne ;
SNV/ SV –(nie)jest dostępne; (nie to samo co pełne/puste);
Przykłady
GATE SNF Susz ;Zajęcie stanowiska Susz, gdy jest ono puste (Storage Not Full)
GATE NU Kasa1,Kasa2 ; Przejście do Kasa1, gdy jest wolna (NotUsed) , a w
przeciwnym przypadku przejście do stanowiska Kasa2
4.2.3 Przykłady programów
Przykład nr 3.
Prosty przykład harmonogramu produkcji częsci przedstawia Rys. 4.1. Surowiec
do produkcji z magazynu wejściowego jest podawany kolejno na transporter co 9
min. Następnie jest on po uchwyceniu przez robota, obrabiany mechanicznie i
malowany przez okres 12 min po czym robot jest zwalniany poprzez pozostawienie
części do wysuszenia na wolnym stanowisku w suszarce na okres 27 min. W celu
zwiększenia przepustowości suszarka może pomieścić równocześnie 2 części.
Gotowe części są wyprowadzane do magazynu wyrobów gotowych. Należy
napisać program modelujący opisany proces w języku GPSS zakładając, że
1. suszenie będzie modelowane blokiem 2-kanałowym w przeciwieństwie do 1-
kanałowej obróbki.
2. symulacja będzie przeprowadzona dla czterech 4 identycznych części
Modelowanie Procesów Dyskretnych
51
3. długość kolejki na transporterze będzie zarejestrowana na wykresie do 20 min
4. proces rozpoczyna się w pierwszej minucie czasu symulacji.
Rys 4.1 Przykład harmonogramu produkcji
Rozwiązanie - program
; Produkcja (kolejka, stanowiska jedno i wielokanałowe)
Susz STORAGE
2
;
2 stanowiska do suszenia
GENERATE
9,,1,4
;
co 9 min, od 1 min, 4 zadania
QUEUE
Transp
;
zajęcie miejsca na transporterze
SEIZE
Obrab
;
zajęcie obrabiarki
DEPART
Transp
;
zwolnienie miejsca na transporterze
ADVANCE
12
;
obróbka w czasie 12 min.
ENTER
Susz
;
zajęcie suszarki
RELEASE
Obrab
;
zwolnienie obrabiarki
ADVANCE
27
;
malowanie i suszenie (27 min.)
LEAVE
Susz
;
zwolnienie suszarki
TERMINATE 1
;
zakończenie zadania
START
4
;
uruchomienie symulacji dla 4 zadań
z1
z2
z3
z4
Kolejka
transporter
z1
z2
z3
z4
1
13
25
40
z1
z2
z4
Obróbka mechaniczna
1 obrabiarka
52
13
25
40
52
67
79
z1
z2
z3
z4
0
z1
z2
z3
z3
1
10
19
28
45
75
60
90
malowanie i
suszenie
2 stanowiska
Otoczenie
magazyn
produktów
Otoczenie systemu
magazyn cz
ęś
ci
z4
czas
?
Modelowanie Procesów Dyskretnych
52
Standardowy raport z symulacji
GPSS World Simulation Report – Prod3.12.1 Tue, Oct 18, 2010 00:18:21
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 79.000 10 1 1
NAME VALUE
OBRAB 10002.000
SUSZ 10000.000
TRANSP 10001.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE
4
0
0
2 QUEUE
4
0
0
3 SEIZE
4
0
0
4 DEPART
4
0
0
5 ADVANCE
4
0
0
6 ENTER
4
0
0
7 RELEASE
4
0
0
8 ADVANCE
4
0
0
9 LEAVE 4
0
0
10 TERMINATE
4
0
0
FACILITY ENTR UTIL. AVE. T.AVAIL. OWNER PEND INTER RETRY DELAY
OBRAB 4 0.646 12.750 1 0 0 0 0 0
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
TRANSP 1 0 4 1 0.266 5.250 7.000 0
STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY
SUSZ 2 2 0 2 4 1 1.367 0.684 0 0
Na Rys 4.2 przedstawiono graficzne wyniki symulacji przykładu 3.
Modelowanie Procesów Dyskretnych
53
Pozostałe przykłady objaśniające inne bloki a w szczególności dotyczące bloków
sterujących są zawarte i dostępne w plikach źródłowych na serwerze w katalogu do
ć
wiczeń oraz opisane w rozdz. 4.3. Ponadto należy skorzystać z dostępnego na
serwerze szczegółowego podręcznika i pomocy do wersji GPSS World.
Złożoność języka GPSS, konieczność pamiętania składni kilkudziesięciu bloków, z
których większość posiada wiele parametrów, powoduje że język ten traci na
popularności. Z drugiej jednak strony konieczność symulacji procesów
dyskretnych a szczególności procesów obsługi masowej jest coraz powszechniejsza.
Obserwuje się zatem pojawianie się na rynku coraz większej ilości aplikacji o
bardziej przyjaznej obsłudze, korzystającej z graficznego środowiska 3D
prowadzonej z powodzeniem przez osoby nie pracujące bezpośrednio w branży IT
(np. Flexim
http://www.flexsim.com/flexsim
),.
Rys 4.2 Wyniki symulacji - zajętość transportera w przykładzie nr 3
Modelowanie Procesów Dyskretnych
54
4.3 Przykłady do ćwiczeń i tematy zadań
Zadania powinny być wykonywane kolejno a wyniki zapisywane w plikach
ź
ródłowych z numerami zadań w postaci
zad
nr
.gps
i w raportach
zad
nr
.gpr
1. Obsługa stanowiska jednokanałowego z zadaną ilością zakończonych zadań
Problem: Ile wynosi czas obsługi i maksymalna długość kolejki w myjni
samochodowej dla 100 klientów napływających w sposób równomierny w
przedziale od 2 do 12 minut. Czas mycia samochodu (z manewrowaniem) wynosi
3 - 9 min. Rozwiązanie - Przykład programu w pliku Myjnia01
Zad 1.0 Napisz program symulujący pracę drukarki dla 20 plików jako urządzenia
jednokanałowego pobierającego pliki do drukowania z kolejki FIFO na
serwerze wydruku. Kolejka ma nieograniczoną pojemność, wydruki nadchodzą
w przedziale czasu od 5 do 10 min, a czas wydruku wynosi od 10 do 20 min
2. Obsługa z zadanym czasem stanowiska jednokanałowego
Zad 2.0 Napisz program symulujący 10 godz. pracę obsługi drukarki (w tym
20+60+20 min przerw) jako urządzenia jednokanałowego pobierającego pliki
do drukowania z kolejki FIFO zorganizowanej na serwerze wydruku. Kolejka
ma nieograniczoną pojemność, wydruki nadchodzą w przedziale czasu od 5 do
10 min, a czas wydruku wynosi od 10 do 20 min
Wskazówka - zastosować bloki z przykładu Myjnia01
Zdefiniować proces symulacji czasu złożony z jednego zadania o odpowiednim
czasie trwania i priorytecie 5
Zad 2.1 Modyfikacja Zad 2.0 - Zmiana (uproszczenie) generacji czasu symulacji -
uprościć usuwając blok opóźniający, pozostawić pozostałe parametry bez
zmian
Zad 2.2 Modyfikacja Zad 2.1 - Zwiększenie dokładności pomiaru czasu - zmiana
jednostki czasu na 0.1 min
Zad 2.3 Modyfikacja Zad 2.2 - Dwukrotne zwolnienie (w stosunku do zad 2.2)
zmniejszenie ilości nadchodzących zadań w jednostce czasu,
Zad 2.4 Modyfikacja. Zad 2.3 Dwukrotne przyspieszenie (w stosunku do zad 2.2)
zwiększenie częstości (ilości jw. porównać wyniki )
Modelowanie Procesów Dyskretnych
55
3. Obsługa stanowiska wielokanałowego (o identycznych parametrach )
Przykład obsługi myjni na jednym z wielu identycznych stanowisk Myjnia03)
Zad 3.0 Modyfikacja Zad 2.4 symulacja 8 godz. pracy urządzeń wielokanałowych
zespołu 3 drukarek DRUK Symulacja wydruku zadań na jednej pierwszej
wolnej drukarce wybranej z zespołu 3 identycznych drukarek
Wskazówka - zastos: STORAGE, ENTER, LEAVE (patrz Myjnia03.gps)
Zad 3.1 Modyfikacja Zad 3.0 - uszkodzenie (brak) jednej drukarki w zespole
Zad 3.2 Modyfikacja Zad 3.0 - uszkodzenie (brak) dwóch drukarek (porównać
wynik z Zad 2 o tych samych parametrach )
Zad 3.3 Modyfikacja Zad 3.0 - wszystkie drukarki po pierwszym wydruku
zatrzymują się
Zad 3.4 Modyfikacja Zad 3.0 - wprowadzenie nowego procesu obsługi dla zadań
uprzywilejowanych
Zadania uprzywilejowane do wydruku nadchodzą rzadziej, ale mają dłuższy czas
wydruku np co 10 min oraz mają najwyższy priorytet (uwaga szef profesor
może wyrzucić z roboty !!! )
4. Obsługa 2 stanowisk jednokanałowych z określeniem warunków wyboru
Przykład: Myjnia04.gpr (myjnia ręczna i automatyczna) zastosowanie bloku
TRANSFER do zmiany kolejności przemieszczania się zadań - mycie na dwóch
stanowiskach do których są indywidualne kolejki, wybór kolejki stanowiska
przypadkowy z określonym prawdopodobieństwem - samochody nie mogą
zmieniać stanowiska po wybraniu kolejki (Przykład)
Zad 4.0 Wprowadzenie dwóch drukarek DR1 i DR2 wraz z indywidualnymi
serwerami. Wybór sprzętu dla nadchodzących zadań jest uwarunkowany
jednakowym prawdopodobieństwem dla jednakowych drukarek jak w Zad 2.0)
Zad 4.1 Modyfikacja (4.0) poprzez zmianę prawdopodobieństwa i czasu obsługi.
Dobrać prawdopodobieństwo dla przypadku gdy drukarka DR1 przyspieszyła
dwukrotnie wydruk
Zad 4.2 Modyfikacja (4.0) poprzez usuniecie warunku prawdopodobieństwa i
czasu obsługi drukarki
Zad 4.3 Modyfikacja (4.0) z jednym serwerem wydruku wprowadzić wybór
bezwarunkowy ( warunek BOTH A, B określa wybór A a gdy zajęte B )
5. Obsługa 2 stanowisk jednokanałowych z określeniem warunków wyboru
dobranym wg aktualnego stanu obsługi (parametrów)
Przykład Myjnia05 (myjnia ręczna i automatyczna) zastosowanie bloku TEST
Zad 5.0 Obsługa sterowania zadaniami na 2-ch stanowiskach jednokanałowych
Modelowanie Procesów Dyskretnych
56
6. Porównanie obsługi zadań wg zasady FIFO i SPT
Symulacja pracy narzędziowni
Pewien pracownik pracuje w narzędziowni a jego zadaniem jest sprawdzenie,
konserwacja i przyjmowanie/wydawanie narzędzi, uzywanych przez mechaników
naprawiających maszyny. Narzędzia te są zbyt kosztowne i jest ich równocześnie
zbyt wiele, by każdy mechanik posiadał je w swoim podręcznym wyposażeniu
naprawczym. Czas pomiędzy dwoma kolejnymi zapotrzebowaniami na wydanie
tych narzędzi oraz czas potrzebny na przygotowanie i wydanie potrzebnego
narzędzia
(czas
obsługi
mechanika)
zależą
od
mechanika.
Rozkłady
prawdopodobieństw i ich parametry dla czasów pomiędzy zapotrzebowaniami oraz
obsługi dwóch typów mechanika są następujące:
Zad 6.0 Pracownik narzędziowni stosuje regulamin obsługi FCFS (pierwszy
przyszedł, pierwszy obsłużony: First Come, First Served). Jednakże jest także
propozycja zastosowania SPT (najkrótszy czas obsługi: Shortest Processing
Time), ponieważ prawdopodobne jest zmniejszenie wtedy średniej liczby
mechaników oczekujących na obsługę przez pracownika narzędziowni. Może to
wtedy spowodować oszczędności, ponieważ: (1) zmniejszony zostanie czas
oczekiwania w narzędziowni, (2) zmniejszony zostanie czas naprawy psujących
się maszyn. Zbuduj model 8-godzinnego dnia pracy narzędziowni dla dwóch
wariantów regulaminu obsługi mechaników. Czy regulamin SPT spowoduje
zmniejszenie liczby mechaników oczekujących na obsługę?.
Wskazówka: Wykorzystać priorytety obsługi zadań
Modelowanie Procesów Dyskretnych
57
4.4 Obsługa pakietu GPSS World
Zapoznanie się z obsługą pakietu symulacyjnego GPSS World Student
przeprowadzone będzie na przykładzie programu
prod3.gps
omówionego w
rozdz. 4.2.2.
1.
W katalogu path
/cw4/GPSS/
uruchomić
GPSSws.exe
2. Otworzyć plik
prod3.gps
w katalogu path/cw4/
File -> Open
3. Zapoznać się z treścią programu w oknie edytora
4. Uruchomić symulacje (Rys 4.3)
Command -> Create Simulation
W wyniku przeprowadzonej pomyślnie symulacji uzyskano dodatkowe okna
standardowy raport (REPORT) oraz w oknie JOURNAL tzw. dziennika
Rys. 4.3 Okno główne
Modelowanie Procesów Dyskretnych
58
zawierającego ślad symulacji przedstawiający w czasie rzeczywistym komunikaty
o wybranych zdarzeniach i ich parametrach.
Zawartość okien można zapisać, wydrukować i wykorzystać w szczegółowej
analizie procesu
- w dzienniku można zapisać wyniki śledzenia TRACE / UNTRACE).
- wyniki śledzenia obserwujemy także na bieżąco w trybie pracy krokowej
5. Symulacja krokowa.
Eliminujemy automatyczny START wprowadzając
komentarz w ostatniej linii .
; START
Następnie kompilujemy
Command -> Create Simulation
Powtarzamy wielokrotnie
Command -> Step 1
Wyniki obserwujemy
w oknie dziennika(Rys 4.4)
lub w oknie obiektów blokowych (BLOCK ENTITIES ) (Rys 4.5)
Okno z obiektami blokowymi włączamy jednorazowo przez
Command -> Window ->
Simulation Window -> Block Window
Rys 4.4 Podstawowe okna po uruchomeniu przykładu
Modelowanie Procesów Dyskretnych
59
W bieżącym oknie bloku pracę krokowa można kontynuować przy pomocy ikony
STEP
6. Generowanie wykresów
Wykresy przedstawione będą w szerszym horyzoncie czasowym
W tym celu :
Usuń ograniczenie na ilość zadań - pozostaw
GENERATE 9
Zapisz program pod nowa nazwą
Prod30
Otwórz okno wykresu
Simulation Window -> Plot Window
Wprowadź (Rys 4.5 ) etykietę wykresu , wyrażenie i tytuł okna
(w uproszczeniu wspólną nazwę) oznaczająca długość kolejki
Q$Transp
Zakres czasu
t
max
= 1500 min domyślnie od t
min
= 0
Zakres osi pionowej
[0, 100]
Uruchom
START 100
Rys 4.5 Komunikaty w trybie pracy krokowej i w blokach obiektów
Modelowanie Procesów Dyskretnych
60
Wynik na Rys 4.6
Rys 4.5 Edycja parametrów wykresu
Rys 4.6 Wynik symulacji w oknie wykresu – długość kolejki
Modelowanie Procesów Dyskretnych
61
7. Skalowanie
Szczegóły wykresu zobaczymy po zmianie skali Rys 4.8
Parametry wykresu można zmodyfikować (Rys 4.7) przez
Edit -> Plot Window
Wprowadzamy
Zakres czasu
t
max
= 200 min ,
Zakres osi pionowej
[0, 20]
Rys 4.7 Modyfikacja parametrów wykresu
Modelowanie Procesów Dyskretnych
62
Rys 4.8 Wynik symulacji w oknie wykresu – wg nowej skali
Modelowanie Procesów Dyskretnych
63
4.5 Inne wersje pakietów GPSS
GPSS jako język wszedł do niektórych pakietów symulacyjnych także dla układów
ciągłych. Przykładem może być implementacja w pakiecie SIMULA (Rys 4.9, 4.10,
4.11) gdzie wprowadzono graficzną realizację programu przy pomocy symboli
blokowych.
W wersji internetowej WebGPSS budowę programu można też zrealizować
przy pomocy elementów schematu blokowego (Rys 4.12) - przykład takiej
realizacji przedstawia Rys 4.13.
Rys. 4.9 SIMULA Okna: schematu blokowego, symboli bloków i ich parametrów oraz
wyników wykreślnych i raportu statystycznego
Modelowanie Procesów Dyskretnych
64
Rys. 4.11 SIMULA - Okna symulacji
Rys. 4.10 SIMULA Okno raportu statystycznego
Modelowanie Procesów Dyskretnych
65
Rys 4.12 Symbole schematu blokowego GPSS Web
Rys. 4.13 Przykład schematu blokowego modelu procesów
Modelowanie Procesów Dyskretnych
66
Przykład zastosowania schematu blokowego przedstawia Rys 4.14. Jest to
fragment schematu blokowego GPSS, który został zastosowany do praktycznego
rozwiązanego pewnego złożonego problemu. Szczegóły tego schematu są
niedostępne, ze względu na prawa autorskie, ale złożoność ogólnej struktury
przekonuje nas o aktualności problematyki i o stosowanych narzędziach
symulacyjnych. Rozwiązany problem dotyczy budowy modelu procesu
logistycznego - organizacji transportu i produkcji na Dalekim Wschodzie w tzw.
łańcuchu dostaw. Szczegółowy opis procesu jest dostępny w artykule
"
http://www.elogmar-m.org/misc/simulationELogisticsSupplyChain.doc
"
Literatura do rozdz. 4
http://www.minutemansoftware.com/
http://www.webgpss.com/
Extract from
a Time- and
Cost-based
GPSS
Model of an
Intermodal
Supply Chain
from the
Far-East to
NW-Europe
Extract from
a Time- and
Cost-based
GPSS
Model of an
Intermodal
Supply Chain
from the
Far-East to
NW-Europe
Rys. 4.14 Model blokowy GPSS złożonego problemu logistycznego
ź
ródło:
http://www.elogmar-m.org/misc/simulationELogisticsSupplyChain.doc
Modelowanie Procesów Dyskretnych
67
5. PROGRAMOWANIE SYSTEMÓW DYSKRETNYCH
5.1 Wprowadzenie
Programowanie systemów dyskretnych, w głównej mierze opiera się na
tworzeniu oprogramowania do symulacji komputerowej dyskretnych procesów
zachodzących w modelach systemów rzeczywistych. Symulacja komputerowa jest
metodą,
która
w
pewnym
zakresie
używając
odpowiednich
modeli
matematycznych pozwala na odtwarzanie zjawisk zachodzących w świecie
rzeczywistym (niekiedy uzyskujemy jedynie ocenę niektórych parametrów i
właściwości symulowanego systemu rzeczywistego). Istotne jest w tym przypadku
modelowanie przy użyciu programów komputerowych i praktyczna realizacja
symulacji z wykorzystaniem sprzętu komputerowego. Symulacja umożliwia
uzyskanie informacji o procesach, dla których bezpośrednia obserwacja jest
niemożliwa lub zbyt kosztowna.
Symulacja procesów dyskretnych - dotyczy procesów, których stan zmienia się
tylko w dyskretnych punktach czasu i zależy od zmian stanów systemu.
Do istotnych zalet symulacji komputerowych należy możliwość przetestowania
procesu w sposób oszczędny i bezpieczny, z jednej strony unikając błędów i
kosztów związanych z testami i poprawkami dla układu rzeczywistego a z drugiej
także wczesnego wykrywania błędów i świadomego symulowania sytuacji
awaryjnych. Modelowanie czasu w systemie pozwala na jego skalowanie i w
efekcie skrócenie czasu przeprowadzenia wielu badań symulacyjnych i znalezienia
najlepszych rozwiązań możliwych do zastosowania w rzeczywistości. Z symulacji
może skorzystać zarówno projektant jak i przyszły użytkownik, którzy wspólnie
mając do dyspozycji środki wizualizacyjne, mogą poznać ograniczenia, lepiej
zrozumieć proces i wspólnie skonsultować najlepsze rozwiązania.
Symulacja jest tylko pewnym przybliżeniem rzeczywistości i stąd wynikają
także jej wady oraz ograniczenia w uzyskaniu zadawalających rezultatów.
Konieczne jest w tym przypadku duże doświadczenie projektanta, ażeby
adekwatnie do założonego celu symulacji uwzględnić w modelu wszystkie jego
aspekty. W przypadku złożonych problemów symulacyjnych istotne mogą być
także koszty samego oprogramowania symulacyjnego, przeprowadzanych testów,
generowania wyników symulacyjnych a także konieczność zaangażowania w
projekcie grona specjalistów w celu interpretacji złożonych wyników.
Z reguły koszty symulacji są pomijalne i warto ją przeprowadzać, ale należy
jednak przeanalizować jej zastosowanie biorąc pod uwagę dalsze prognozowanie
kosztów.
Modelowanie Procesów Dyskretnych
68
5.2 Proces projektowania symulacji
W rozdziale tym przedstawiony zostanie ogólny plan etapów symulacji,
opracowany na podstawie [Branks, Carson, Nelson and Nicol „Discrete Event
System Simulation”] i omówiony pod kątem symulacji jako pewnego
przedsięwzięcia projektowego. Rysunek 5.1 przedstawia ogólną postać takiego
przedsięwzięcia, złożonego z szeregu etapów.
1. Problem, Cel
i Harmonogram
2. Model
Abstrakcyjny
3. Zbior
Danych
4. Model
Symulacyjny
5.Weryfika-
cja Modelu
6. Badania
Symulacyjne
Rys 5.1 Plan etapów projektu symulacji
Modelowanie Procesów Dyskretnych
69
Etap 1: Sformułowanie problemu. Cel i harmonogram.
Symulowana rzeczywistość i występujące zjawiska powinny być dobrze
sprecyzowane. Programista lub analityk w przypadku wieloosobowego
zespołu projektowego sporządza specyfikację wymagań. Na tym etapie
powinien być jasno sformułowany cel symulacji. Są to istotne założenia, które
powinny być w postaci dokumentu uzgodnione z ewentualnym klientem lub
zespołem kontrolno-nadzorczym. Istotne jest też na tym etapie określenie i
uzgodnienie ogólnego harmonogramu, przydziału zasobów i oszacowanie
kosztów.
Etap 2: Model Abstrakcyjny.
Zbudowanie modelu, w którym rzeczywistość zostaje zastąpiona przez
abstrakcyjne modele matematyczne. Formalizm reguł matematycznych
wspomaga dalsze zrozumienie procesu i uściśla wstępne założenia. Na tym
etapie wymagane są niekiedy konsultacje specjalistyczne z zakresu dziedziny
symulowanej rzeczywistości.
Etap 3: Zbiór Danych.
Zebranie danych wejściowych jest konieczne do skonkretyzowania badanego
procesu i do weryfikacji adekwatności przyjętego modelu abstrakcyjnego. Na
tym etapie powinien być opracowywany plan testów jakości. Z uwagi na
efektywność czasową etap te można wykonać równolegle w stosunku do 2-go
etapu.
Etap 4: Model symulacyjny.
Zaprogramowanie symulacji jest najważniejszym etapem, w którym następuje
zastosowanie narzędzi symulacyjnych, języków oraz procedur bibliotecznych
do realizacji programu modelu, jego wstępne uruchomienie i przetestowanie.
Na tym etapie wymagana jest przede wszystkim specjalistyczna wiedza
programisty.
Etap 5: Weryfikacja modelu.
Weryfikacja modelu pozwala na wychwycenie błędów projektowania, które
wymuszają konieczność powrotu do wcześniejszego etapu. Zasadniczą
poprawność modelu należy zweryfikować wg opracowanych na etapie 3 testów
jakości.
Etap 6: Badana symulacyjne.
Przeprowadzenie badań symulacyjnych jest zasadniczym celem projektu. Na
tym etapie należy zadbać o dobrą dokumentację, która będzie pomocna nie
Modelowanie Procesów Dyskretnych
70
tylko w realizacji praktycznej rzeczywistego układu ale także stanowiła istotny
element w realizacji przyszłych projektów.
Omówiony proces projektowania jest tylko pewnym szablonem i powinien być
skonkretyzowany w zależności od szczególnych okoliczności projektu.
Zasadniczym kryterium są tutaj nie tylko cele projektowania, ale także
wykorzystywane środki programistyczne. Zawężając problematykę do zakresu
symulacji komputerowej należy sprecyzować podstawowy cel projektu, a przede
wszystkim wykorzystywane narzędzia programistyczne.
Cel projektu może być:
C1: Ogólny - narzędzia, pakiet symulacyjny z ewentualnym uszczegółowieniem
na system dyskretny, ciągły i współbieżny.
C2: Szczegółowy – aplikacja dla ściśle sprecyzowanego zagadnienia lub ich
pewnej klasy wynikającej z założonego obszaru zastosowań branżowych.
W zakresie środków programistycznych można zastosować:
P1: Pakiet symulacyjny - gotowe dostępne na rynku narzędzie oparte często na
określonym języku symulacyjnym wyższego poziomu dopasowane do
bardziej lub mniej ogólnych zastosowań i o zróżnicowanej funkcjonalności.
P2. Język programowania poziomu niższego (proceduralny lub obiektowy)
wraz pakietem wspomagającym projektowanie aplikacji i niekiedy
wyposażony w dodatkowe biblioteki pozwalające na realizacje wybranych
podproblemów symulacyjnych.
Biorąc pod uwagę w/w wymienione podziały najbardziej złożonym projektem
jest kombinacja (C1, P2) wymagająca bardzo dobrego przygotowania teore-
tycznego w aspekcie teorii systemów, a także praktycznego w zakresie
wykorzystania narzędzi informatycznych. Decyzja o zastosowaniu tej kombinacji
ma też sens w przypadku przewidywanego wielokrotnego profesjonalnego
wykorzystania. Często zaczątkiem tego rozwiązania może być wieloletnia praktyka
w realizacji pozostałych kombinacji (C2, P1) i (C2, P2) oraz (C2, P2). Z uwagi na
szeroką dostępność pakietów, rozwiązanie (C2, P1) jest stosowane dosyć często,
chociaż wymaga ono niekiedy dość dużego wstępnego nakładu pracy.
Atrakcyjność tego rozwiązania polega też na mniejszym zaangażowaniu
przyszłych użytkowników przeprowadzających badania symulacyjne w zakresie
wiedzy IT.
Złożone i poważniejsze problemy powinny też być rozwiązywane na bardziej
szczegółowym poziomie weryfikacji, w którym symulacja jest pewnym istotnym
etapem, ale nie zasadniczym celem. Taki model przedstawia sieć działań na Rys
5.2, w którym dodatkowo należy zweryfikować prawidłowy wybór koncepcji
rozwiązania i określenie modelu analitycznego, a także ocenić wyniki badań
symulacyjnych, które potwierdzą decyzję o wdrożeniu realizacji układu fizycznego.
Modelowanie Procesów Dyskretnych
71
1 Problem / Cel
2. Model
Koncepcyjny
Analityczny
4. Program
Symulacyjny
5.Weryfikacja
Programu
6. Badania
Symulacyjne
Rys 5.2 Plan etapów złozonego projektu z zastosoaniem
symulacji komputerowej
3.Weryfika-
cja Modelu
7.Weryfikacja
Badań
Przerwanie
8 Budowa. Wdrożenie
układu rzeczywistego
Symulacyjne
NO
OK
OK
OK
NO
NO
Modelowanie Procesów Dyskretnych
72
Często na podstawie wyników symulacji określa się kryteria jakości i w tym
przypadku symulacja może być elementem automatycznie działającego programu
optymalizacyjnego
–
wybierające
najlepsze
rozwiązania.
Przykład
tak
postawionego problemu ilustruje rys 5.6
5.3. Elementy modelu symulacyjnego
Zawężając rozważania do zakresu metod symulacji dyskretnej należy wyróżnić
wiele elementów modelu, ale do podstawowych należą: zdarzenia, działania i
procesy. Są one składnikami każdego schematu organizującego przebieg obliczeń
symulacyjnych, chociaż w szczegółowych opisach pakietów i algorytmów
symulacyjnych mogą być używane inne równoważne i dodatkowe określenia np:
obiekty i ich atrybuty, uwarunkowane zgłoszenia, transakcje, operacje, czynności,
stany itp.
Podane elementy wynikają także z podstawowej definicji symulacji procesu
dyskretnego podanej przez R. E. Shanon’a i zmodyfikowanej przez J. B. Evans’a:
Obiekty opisane atrybutami po spełnieniu określonych warunków kreują w
ramach działań sekwencje zdarzeń zmieniających stan systemu.
Rozpoczynając budowę modelu należy jednoznacznie opisać problem, który
będzie rozwiązany metodami symulacyjnymi. Istotna w opisie jest identyfikacja
zdarzeń i działań, które występując zmieniają stan obiektów. Mimo, że zdarzenie
jest „nieuchwytną migawką” tzn. nie jest związane z upływem czasu to jednak jest
ono bardzo często od niego uzależnione, występując w określonej chwili
(wymuszone czasem zdarzenie synchroniczne) lub uwarunkowane wystąpieniem
innych zdarzeń. Czasami wiele zdarzeń może wystąpić w tej samej chwili czasu,
ale w sekwencji przyczynowo-skutkowej ale także niestety w nieokreślonej. W tym
przypadku możemy wybrnąć z kłopotu przez ustalenie priorytetu, który może
jednak podnieść nam złożoność modelu. Z uwagi na istotną rolę zdarzeń
wymagamy w opisie słownym nawet pewnej nadmiarowości, w rodzaju „początek
czegoś” i koniec „czegoś” gdzie to „coś” jest logicznie związane z określonym
działaniem.
Reasumując, zdarzenie w określonym chwilowym czasie wiąże się ze zmianą
stanu obiektów reprezentowanych w systemie poprzez zmianę ich atrybutów, ale
także poprzez wprowadzanie nowych i usuwanie istniejących obiektów.
Z kolei działanie, przyjmując odpowiednią szczegółowość modelu może się
składać z jednej lub wielu niepodzielnych operacji, które mogą wpływać na zmianę
stanu systemu. Czasami działania określane są też mianem czynności.
Ciąg uporządkowanych w czasie zdarzeń związanych z każdym pojedynczym
obiektem jest określony mianem procesu, który przebiega od chwili wejścia
obiektu do systemu aż do chwili jego wyjścia. W ten sposób też działania na
Modelowanie Procesów Dyskretnych
73
obiektach określone są poprzez chronologiczne zdarzenia wchodzące w skład
procesu. Zdarzenia mogą zachodzić w sposób:
- bezwarunkowy, który jest bezpośrednio zależny od czasu,
- warunkowy, który jest pośrednio zależny od czasu poprzez zmiany stanu
systemu, uzależnione z kolei od innych z czasem związanych zdarzeń.
Omówione pojęcia ilustruje Rys. 5.3, przedstawiający historię zdarzeń związaną z
powtarzającym się prostym procesem produkcyjnym.
Często używanymi pojęciami w opisywaniu procesów dyskretnych jest pojęcie
transakcji, które przyjęło się z angielskiego odpowiednika transaction spotykanego
w dokumentacji pakietów symulacyjnych. Transakcje opisują przemieszczanie się
obiektu oraz zmiany jego stanu.
Budując model symulacyjny systemu dyskretnego należy w nim wyróżnić
następujące elementy:
Działanie
Obróbka e1
0
Zdarzenie
Poczatek
obróbki e1
Zdarzenie
Nadejscie
e2
Działanie
Czekanie e2
Zdarzenie
Poczatek
obróbki e2
Zdarzenie
Nadejscie
e1
Działanie
Obróbka e2
Działanie
Malowanie e1
Zdarzenie
Koniec
obróbki e1
Działanie
Malowanie e2
Proces
Produkcja e1
Zdarzenie
Koniec
malowanie e1
Zdarzenie
Koniec
malowania e2
Proces
Produkcja e2
czas
Rys 5.3. Ilustracja pojęć: zdarzenie, działanie i proces
Modelowanie Procesów Dyskretnych
74
- zegar systemowy - rejestruje czas modelowanego systemu rzeczywistego,
- kalendarz systemowy - sterowany zegarem systemowym, to zbiór informacji
o zdarzeniach (typ zdarzeń i parametry zdarzeń),
- transakcje, obiekty mobilne pojawiające się w systemie jako zdarzenia,
(zgłoszenia), które posiadają argumenty przemieszczają się, zmieniają zasoby
systemu (obiekty stacjonarne) i tym samym mają wpływ na zmianę stanu
systemu,
- zasoby mogą być pojedyncze lub złożone, w odróżnieniu do pozostałych
obiektów są obiektami statycznymi systemu, określane są jako jednokanałowe
i wielokanałowe stanowiska obsługi.
5.4 Metody symulacji dyskretnej
Omawiając w sposób bardziej ścisły metody symulacji dyskretnej należy także
omówić szczególne przypadki symulacji, dla których jest ona przeprowadzana w
warunkach zależnych od zewnętrznych sygnałów (czynników). Można zapewnić
możliwość interakcji użytkownika z programem symulacyjnym w trakcie
prowadzenia obliczeń w tym śledzenia realizacji symulacji z otrzymywaniem
bieżących wyników oraz wprowadzania zmian do modelu w trakcie działania
programu symulacyjnego. Istotna jest możliwość zawieszenia wykonywanej
symulacji np: w celu przejęcia sterowania procesem, zmiany parametrów a nawet
struktury modelu. W tak prowadzonej symulacji często jednak trzeba zapewnić
odpowiednią szybkość przeprowadzanych obliczeń dostosowaną do operatora,
która nie może być zbyt duża ze względu na ograniczoną szybkość jego reakcji
oraz także zbyt małą biorąc pod uwagę sensowny czas symulacji. Bardzo ważne
jest rozróżnienie pojęcia czasu symulowanego i czasu rzeczywistego obliczeń
symulacyjnych. W przypadku, gdy te czasy pokrywają się można przyjąć, że mamy
do czynienia z tzw. symulacją w czasie rzeczywistym w przeciwnym przypadku
zapewniając stały współczynnik proporcjonalności łatwo określamy symulację z
uwzględnieniem skali czasu.
Biorąc pod uwagę rzeczywiste uwarunkowania czasowe i dodatkowo
połączenie ze wspomnianą wcześniej symulacją interaktywną uzyskuje się
symulator o specyficznych zastosowaniach uwzględniający także procesy ciągłe np.
w celach treningowych lub edukacyjnych. Systemy symulacyjne o takim
charakterze są częściowo omówione w rozdz. 5.5.
W kolejnych rozdziałach omówione będą dwie podstawowe metody symulacji
dyskretnej ze szczególnym uwzględnieniem zastosowanej algorytmizacji.
Modelowanie Procesów Dyskretnych
75
5.4.1. Metoda planowania zdarzeń.
Metoda planowania zdarzeń (event oriented discrete simulation) oparta jest na
kalendarzu zdarzeń, specjalnej struktury będącej zbiorem opisanych zdarzeń.
Zastosowany kalendarz zdarzeń definiuje kolejność zdarzeń bezwarunkowych
wraz ze szczegółową specyfikacją czynności, które powinny być zrealizowane po
tym zdarzeniu. Jest to zbiór zawierający dane o typie, atrybutach i czasie
wystąpienia zdarzenia zorganizowany w postaci listy lub kopca. Aktualny czas
wyznacza zawsze pierwsze zdarzenie na liście a uporządkowanie (planowanie)
ustala się na podstawie atrybutów czasów pozostałych zdarzeń. W szczególności
należy:
- zapewnić ogólne sterowanie przebiegiem symulacji w oparciu o dynamiczny
kalendarz zdarzeń,
- zapamiętać w kalendarza tylko zdarzenia bezpośrednio zależne od czasu
(bezwarunkowe),
- zaplanować kolejne zdarzenia bezwarunkowe dla działań, które zostały
określone dla wcześniejszego zdarzenia,
- wprowadzić działania związane z zaistnieniem zdarzenia warunkowego do
czynności dotyczących zdarzeń bezwarunkowych, które będą rozpatrywane
tylko przy okazji działań bezwarunkowych.
Wprowadzanie zdarzeń w systemie ma charakter planowania czasów oraz typów i
parametrów zdarzeń bezwarunkowych, które będą zachodzić w systemie.
Wystąpienie zdarzenia bezwarunkowego w symulacji dyskretnej wg metody
planowania zdarzeń, pociąga za sobą wykonanie sekwencji czynności związanych
z wystąpieniem tego zdarzenia, w tym dotyczących zdarzeń warunkowych.
Przykładowo po zakończeniu obróbki należy zwolnić obrabiarkę, sprawdzić
kolejkę następnych zgłoszonych części do obróbki, a następnie zgodnie z
regulaminem kolejki wprowadzić do obróbki kolejną część. Charakterystyczne w
tej metodzie jest planowanie sposobu generowania następstwa zdarzeń
bezwarunkowych.
Rysunek 5.4 przedstawia szkic algorytmu symulacyjnego omawianej metody
planowania zdarzeń. Algorytm rozpoczyna się ustaleniem stanu początkowego i
parametrami modelu symulacyjnego a także przyjęciem wartości czasu
symulacyjnego, odpowiadającej wartości początkowej czasu rozpoczęcia
pierwszego zdarzenia występującego w kalendarzu. Kolejno należy wykonać
działania związane z obsługą tego zdarzenia. Jest to najbardziej złożona część
algorytmu, ponieważ wśród wykonywanych czynności może zachodzić zdarzenie
bezwarunkowe, czynności zdarzeń warunkowych oraz zaplanowanie poprzez wpis
do kalendarza następnych zdarzeń. W kolejnym etapie należy zaprogramować
usunięcie zrealizowanego zadania z kalendarza i zaktualizować czas symulacji
Modelowanie Procesów Dyskretnych
76
Warunki
początkowe
Czy Koniec ?
t
P
= t
N
Usunięcie 1-go
Zdarzenia
T
N
Aktualizacja
czasu
Rys. 5.4 Algorytm planowania zdarzeń.
Działanie 1-go
Zdarzenia
zgodnie z wystąpieniem następnego zdarzenia bezwarunkowego. Omówione etapy
algorytmu będą cyklicznie powtórzone z badaniem warunku zakończenia symulacji.
Analizę szczegółowa algorytmu przeprowadzimy na prostym modelu obróbki
na wielu identycznych obrabiarkach. Założymy, że bezwarunkowo następuje
pojawienie się części do obróbki oraz biorąc pod uwagę zadany czas obróbki także
bezwarunkowe jest zdarzenie dotyczące zakończenia obróbki. Natomiast zdarzenie
dotyczące rozpoczęcia obróbki, jest zdarzeniem warunkowym, ponieważ ta
Modelowanie Procesów Dyskretnych
77
czynność zależy od istnienia, co najmniej jednej wolnej obrabiarki i części do
obróbki.
Zgodnie z ogólnym schematem symulacyjnym Rys 5.4 w pętli głównej istotne jest
określenie opisujące jedynie procedurę związaną z obsługą pierwszego zadania na
liście zadań czasowych bezwarunkowych natomiast złożoność symulacji kryje się
w wykonaniu procedur opisujących realizację tych zadań i ich planowaniu z
uwzględnieniem zadań warunkowych.
Procedury te dotyczą:
- nadejścia części do obróbki: zaplanowanie przyjęcia następnej części,
sprawdzenie dostępności obrabiarki i odpowiednio zajęcie jej i zaplanowanie
zakończenia obróbki lub w przeciwnym wypadku wstawienie na końcu kolejki.
- zakończenia obróbki: jeżeli jest w kolejce część do obróbki to należy ją usunąć z
kolejki i zaplanować zakończenie jej obróbki a w przeciwnym wypadku
obrabiarka powinna być zwolniona.
Reasumując metoda opiera się na szeregowaniu zdarzeń czasowych i realizacji
zdarzeń warunkowych w ramach procedur czasowych. W złożonych problemach w
porządkowaniu zdarzeń oprócz omówionego typowego wstawiania nowych zadań
oraz ich usuwania mogą również zachodzić zdarzenia związane z odwołaniem
zdarzeń lub ich realokacją związaną ze zmianą czasu ich wystąpienia.
Ponadto powiększeniu może ulec także ilością zdarzeń i wtedy istotne może być
zastosowanie odpowiednich struktur danych i algorytmów które zapewnią
optymalna złożoność obliczeniową w realizacji opisanych operacji.
5.4.2. Metoda przeglądania działań.
Algorytm metody przeglądu i wyboru działań (activity scanning approach)
polega na wyborze działań, które z nich z chwilą zajścia określonego zdarzenia
powinny być rozpoczęte, a które zakończone. Wyboru dokonuje się przeglądając
wszystkie zadania zależne od czasu jak i od stanu systemu i wybór działań polega
na rozpatrywaniu wszystkich działań systemu celem określenia, które z nich z
chwilą zajścia określonego zdarzenia powinny być rozpoczęte, a które zakończone.
Atrybuty czasowe obiektów mogą określać chwilę symulowanego czasu (charakter
bezwzględny) lub czas pozostający do pojawienia się zdarzenia (charakter
względny). Wynikają stąd dwa przypadki algorytmu aktualizacji czasu, które
przebiegają następująco:
I. Czas względny
1. wybieranie najmniejszego dodatniego atrybutu czasu t
min
2. zmniejszenie wszystkich atrybutów czasy o t
min
3. dodanie t
min
do czasu systemowego.
Modelowanie Procesów Dyskretnych
78
II Czas bezwzględny
1. wybieranie najmniejszego dodatniego atrybutu czasu t
min
większego od
czasu systemowego,
2. przyjęcie t
min
jako czas systemowy
Oznacza to:
-
wprowadzenie do kalendarza zdarzeń bezwarunkowych, bezpośrednio
zależnych od czasu oraz zdarzeń warunkowych,
-
rozpatrywanie czynności związanych ze zdarzeniami warunkowymi
niezależnie od wystąpienia zdarzeń bezwarunkowych,
-
sterowanie przebiegiem symulacji w oparciu o listę warunków, jakie
powinny być spełnione by zaszło w systemie określone zdarzenie.
Wprowadzanie zdarzeń w systemie odbywa się poprzez cykliczne sprawdzanie
listy warunków, które powinny być spełniane przy zachodzeniu zdarzeń.
Algorytm przebiegu symulacji modelu zbudowanego w oparciu o metodę
przeglądu i wyboru działań przedstawia rysunek 5.5. Po ustaleniu warunków
początkowych systemu (stan początkowy systemu, parametry systemu) należy
wykonać badanie listy warunków wystąpienia zdarzeń dla chwili czasu systemu, w
której zajdzie najbliższe zdarzenie (t
min
). Jeżeli dla określonego zdarzenia spełnione
są warunki jego zajścia, to oznacza to, że doszło do zajścia tego zdarzenia (zmiany
stanu systemu) i należy wtedy przesunąć czas systemu do chwili t
min
wystąpienia
tego zdarzenia i wykonać procedurę czynności związanych z tym zdarzeniem
(obsługi zdarzenia). Powyższe czynności ulegają powtórzeniu z badaniem warunku
zakończenia obliczeń symulacyjnych.
Rozpatrzmy przykładową symulację wielokanałowego, otwartego systemu
obsługi. Konstrukcja modelu symulacyjnego opisującego ten system przy
zastosowaniu metody przeglądu i wyboru działań oparta jest na analizie warunków
zajścia wszystkich zdarzeń systemu, bezwarunkowych i warunkowych. Algorytm
symulacji funkcjonowania tego systemu obsługi jest następujący:
1.
Ustalenie warunków początkowych.
2.
Sprawdzenie, czy spełniony jest jakikolwiek warunek końca symulacji i
gdy jest spełniony, to zakończenie obliczeń symulacyjnych, w przeciwnym
przypadku przejdź do kroku 3.
3.
Skasowanie flagi zmiany stanu (będzie ustawiana w chwili zmiany stanu)
4.
Sprawdzenie dla wszystkich zdarzeń warunków ich zajścia i jeżeli warunek
ten jest spełniony, to wykonanie czynności obsługi tego zdarzenia i
ustawienie flagi zmiany stanu.
5.
Jeżeli flaga zmiany stanu jest ustawiona to powrót do pkt 3
6.
Zwiększenie czasu systemowego i przejście do kroku 2.
Modelowanie Procesów Dyskretnych
79
Inny przypadek zastosowania algorytmu przeglądu przedstawiono na Rys 5.6,.
Jest to specjalistyczny algorytm programu realizujący symulację sieci Petriego
wraz optymalizacją i z generacją wykresów Gantta Rys 5.7.
Warunki
początkowe
Czy Koniec ?
T
N
aktualizacja
czasu
Rys. 5.5. Algorytm przebiegu symulacji dyskretnej
w metodzie przeglądu działań.
Obsługa zdarzeń
Warunki zajścia zdarzeń
z ustawieniem flagi
zmianu stanu
flaga zmiany ?
skasuj flage zmiany stanu
T
Modelowanie Procesów Dyskretnych
80
Rys 5.6 Algorytm symulatora sieci Petriego
Modelowanie Procesów Dyskretnych
81
Opis podstawowych procedur algorytmu z rys 5.6
−
Input_Net_Data - dane wejściowe struktura i stałe parametry sieci,
−
Init_Place_Vec - dane inicjujące wartości znakowania początkowego,
−
Init_Simul_Data - warunki początkowe symulacji (np globalny czas),
−
End_Simulation - warunki zakończenia symulacji (odtwarzanie stanów),
−
Fire_Off
- zakończenie wzbudzenia tranzycji,
−
Mark_Move
- określenie nowego znakowania osiągalnego,
−
Freon
- uwarunkowane wzbudzenie tranzycji,
−
No_Time_Fire
- zmiana stanu dla tranzycji o zerowym czasie wzbudzenia,
−
Tracing_Output - zapamiętanie bieżącego stanu z ewentualną wizualizacją,
−
Next_Global_Time - obliczenie następnej chwili zmiany znakowania,
−
Act_Local_Times - obliczenie i aktualizacja lokalnych czasów (zegarów)
−
Histogram
- histogramowa analiza wyników symulacji,
−
Find_Cycle
- określenie czasu cyklu pracy systemu,
−
Simul_Reports
- obliczenie i zapamiętanie wskaźników jakości,
−
EndSearch
- warunki zakończenia przeglądu,
−
Statistic_Acc
- obróbka statystyczna dopuszczalnych rozwiązań
Rys 5.7 Przykładowe wyniki z symulatora sieci Petriego
Modelowanie Procesów Dyskretnych
82
5.4.3. Przegląd innych metod.
W rozdziale zostały przedstawione jedynie wybrane podstawowe algorytmy
symulacji dyskretnej. Wraz z rozwojem zarówno ogólnych pakietów symulacyj-
nych a także specjalistycznych pojawiają się także nowe metody symulacji.
Budowane są także biblioteki procedur, które można wykorzystać w modelowaniu
wykorzystując ogólno dostępne języki programowania. Bardzo często nowe
metody powstają na bazie innych metod i są one oparte na opisanych metodach
łącząc zalety metody planowania i przeglądu. Do takich metod należy metoda ABC
łącząca omówione metody. Z metody planowania przyjęty jest czas pierwszego
zdarzenia (Advance of simulation time), wybór jego obsługi (Bounded event) i
usuniecie z kolejki. Z kolei metoda przeglądu wprowadza uwzględnienie zdarzeń
warunkowych (Conditional events) ich wybór i wykonanie. włączając w algorytm
kontrolę flagi zmiany stanu. Powstają także pewne modyfikacje gdzie przykładem
może być metoda przeglądu i wyboru działań, która z kolei w połączeniu z metodą
planowania określana jest jako metoda interakcji procesów (process interaction
approach). W tych rozwiązaniach stosuje się metody aktywowania, zawieszania i
opóźniania procesów.
W efektywnym projektowaniu programu w szczególności dla złożonych
problemów, konieczny jest podział funkcjonalny i strukturalny. Taki podział
pozwala też na implementacje gotowych do wykorzystania uniwersalnych bibliotek
procedur W związku z tym przedstawiona zostanie koncepcja tzw. podejścia
trójwarstwowego [Fishman, George S „Concepts and methods in discrete event
digital simulation”] Zakłada ona występowanie trzech warstw
- poziom koordynatora (Executive), który przejmuje rolę zarządzającą przebiegi
symulacji (aktualizacja czasu sterowanie wykonywaniem procedur i
zakończeniem symulacji.
- poziom procedur (Operations) zasadnicze funkcje programu, które mogą być
zgrupowane jako moduły i przyporządkowane do danych obiektów, mogą też
być różnymi blokami procedur, które są wykonane przez obiekty.
- poziom pomocniczy (Detailed routines) będący zbiorem procedur wspomagają-
cych warstwę procedur (np. generatory liczb losowych, generatory statystyk i
ich wykresów, procedury kontroli błędów itp.)
Wyróżnione są cztery typy koordynatorów:
- Zdarzeniowy (Event)
- Działaniowy (Activity)
- Procesowy (Process)
- Podejście trójfazowe (The three-phase approach)
Szczegółowy opis można znaleźć w literaturze [Micheal Pidd "Computer
Simulation in Management Science] i na stronach internetowych.
Modelowanie Procesów Dyskretnych
83
W opisach bardzo często zachodzi duże podobieństwo, które trudno ściśle
sprecyzować w przypadku ich ogólnego charakteru. Stąd często nie ma różnicy de
facto a wynika ona jedynie z zastosowanego nazewnictwa. W związku z
powstaniem nowych języków lub raczej rozbudowy ich dotychczasowych wersji
np. przez wprowadzenie elementów programowania obiektowego powstają nowe
metody symulacyjne, które bazując na podstawowych algorytmach wykorzystują
elementy programowania obiektowego. W wyniku takich działań powstaje szereg
bibliotek dla różnych języków np. dla języka Java.
Wśród programistów zajmujących się budowaniem modeli symulacyjnych
pewną popularność uzyskał oparty na Javie obiektowy Framework Desmo-J
http://desmoj.sourceforge.net/home.html
http://asiwww.informatik.unihamburg.de/themen/sim/forschung/Simulation/Desmo-J/
Skrót „DESMO-J" pochodzi od słów "Discrete Event Simulation and MOdelling in
Java" i sama już nazwa wskazuje na dwie istotne właściwości:
Desmo-J wspiera paradygmat symulacji dyskretnych zdarzeń spełniając
wszystkie wymagania symulacji zdarzeń występujących w dyskretnych
punktach czasu.
Desmo-J jest zaimplementowana w powszechnie uzywanym przez programistów
języku Java.
Framework DESMO-J posiada wiele cech, które znacznie ułatwiają projektowanie
symulacji w postaci:
- zestawu komponentów takich jak: kolejki, generatory liczb pseudolosowych i
kolekcje danych określające zachowanie modeli, bytów, wydarzeń czy
procesów i abstrakcyjne klasy, które zmuszają programistę do projektowania
zgodnie z przyjętymi zasadami.
- infrastrukturę symulacji tzn.: środowisko planowania, listę wydarzeń i zegar
czasu symulacji
- automatyczne generatory raportów z przebiegu symulacji na podstawie
informacji pobieranej z każdego symulowanego obiektu
DESMO-J jest zbudowana z wielu pakietów:
Modelowanie Procesów Dyskretnych
84
•
desmoj.core.simulator
- zawiera klasy rdzenia, wykorzystywane
do zbudowania modelu i rozpoczęcia eksperymentu
•
desmoj.core.dist
– jest źródłem metod generujących liczby
pseudolosowe
•
desmoj.core.exception
zawiera klasy dla wewnętrznego
obsługiwania wyjątków i może bezpiecznie zostać zignorowany przez
programistów.
•
desmoj.core.report
- automatyczne generowanie raportów w wielu
formatach, najczęściej w formacie XML.
•
desmoj.core.statistic
– wspiera opracowanie wyników
statycznych generowanych po zakończonej symulacji – obejmują funkcje:
max, min, średnia, odchylenie standardowe, histogram, suma.
•
desmoj.core.advancedModellingFeatures
– posiada
mechanizmy zapewniające zaawansowaną na poziomie abstrakcyjnym
synchronizację przebiegu symulacji.
•
desmoj.extension.
zawiera składniki,ułatwiające budowanie
modelu w domenach aplikacji np logistyka i produkcja.
•
desmoj.extension experimentation
- podstawowy graficzny
interfejs użytkownika ułatwiający prowadzenie eksperymentu i prezentacje
wyników w technologich 2d i 3d
ź
ródłó
http://desmoj.sourceforge.net/basic_features.html
Modelowanie Procesów Dyskretnych
85
5.5. Sterowanie i monitoring procesów dyskretno-ciągłych
Systemy monitoringu i sterowanie procesami technologicznymi z obsługą
przerwań czasowych i sprzętowych z reguły zapewniają:
1.
Odbiór danych sygnałów ciągłych i dyskretnych: analogowe, impulsowe,
binarne i stany obiektów.
2.
Wysyłanie danych lokalnych i retransmisja odebranych do stacji nadrzędnych.
3.
Rejestracja danych z obiektów technologicznych w tablicach systemowych.
4.
Wizualizacja znakowa pomiarów i stanu obiektów na ekranach synoptycznych
a także z uwzględnieniem animacji graficznej stanu i pomiarów dla
wybranych procesów.
5.
Rejestrowanie i archiwizacja stanów awaryjnych.
6.
Sygnalizacja wizualna i dźwiękowa zdarzeń i sytuacji awaryjnych.
7.
Obsługa na ekranie zestawu o zaistniałych zdarzeniach i sytuacjach
awaryjnych i z podaniem aktualnego ich statusu.
8.
Raportowanie danych w zadanym zakresie czasu i poziomie dyskretyzacji i
wyników zagregowanych w określonych przedziałach czasowych.
9.
Monitorowanie stanu transmisji w sieciowej strukturze sterowników.
10.
Wysyłanie i odbiór poczty komputerowej.
11.
Przygotowanie danych (kompresja) dla tablicy synoptycznej).
12.
Zestawienie komend i poleceń sterujących, pomoc.
13.
Obsługa menu systemowego (GUI) użytkownika.
14.
Obsługa konserwatorska i testująca stany pracy sytemu.
Zadania i wyposażenie na poziomach hierarchicznego rozproszonego systemu
(Rys.5.8)
1.
Poziom Centralny(CentrCtr) - konsola operatorska, synoptyka graficzna,
raporty, archiwizacja, badanie trendów, transmisja globalna, retransmisja.
2.
Regionalny (RegCtr) - konsola operatorska, ekran tryb graficzny, agregacja
danych, raporty, archiwizacja, transmisja, obsługa tablicy synoptycznej.
3.
Lokalny (LocCtr) - konsola operatorska, ekran tekstowo-semigraficzny,
transmisja globalna, agregacja, skalowanie, obsługa komend sterowania
zdalnego.
4.
Obiektowy (ObjCtr) - brak stałej konsoli, obsługa mikroprocesorowa: odczyt z
układów AKP, obsługa sterownia, algorytmy regulacji bezpośredniej,
transmisja lokalna
.
5.
Obiekty (Obj n) Automatyki Kontrolno Pomiarowej (AKP): układy pomiarowe,
czujniki, przetworniki A/C i C/A, liczniki, rejestry, inne układy i bramki
logiczne, specjalizowane układy mikroprocesorowe.
Modelowanie Procesów Dyskretnych
86
6.
Obiekty Procesu Technologicznego - (urządzenia i media technologiczne)
napędy maszyn roboczych, materiały, surowce, układy: transportowe, zasilające,
kontrolujące i sterujące.
CentrCtr
Adr 000
ObjCtr
Adr 111
RegCtr
Adr 100
RegCtr
Adr 200
LocCtr
Adr 110
LocCtr
Adr 120
LocCtr
Adr 210
ObjCtr
Adr TSN
TSN
Obj A
TSN
Obj B
Obj C
Obj F
Obj E
Obj D
obiekty poza sytemowe,
tylko wizualizacja brak
pomiarów i sterowania.
retransmisja
ObjCtrAd
r
211
tablica
synoptyczn
a
Rys. 5.8. Wyposażenie poziomów hierarchicznego systemu
Modelowanie Procesów Dyskretnych
87
Realizacja tak złożonych zadań wymaga ścisłej klasyfikacji wszystkich
projektowanych funkcji i zgrupowania ich w funkcjonalnych modułach. Na
rysunku (Rys 5.9) przedstawiono pewien przykładowy ogólny podział na takie
moduły. Z założonej funkcjonalności wynika także, opracowanie odpowiednich
struktur danych i związków zachodzących między nimi, które zapewnią efektywny
do nich dostęp i ich obsługę. Rozwiązanie tego problemu będzie przedmiotem
ć
wiczeń.
Prog. Główny
stzuw
110
Dane Systemu
Obsł. Konsoli
console
Obsługa
Ekranów
display
Obsługa
Transmisji
obstra
Transmisja
transm
Archiwizacja
archiv
Obsł. przerw.
czasowych
timedate
Inicjalizacja
Konfiguracja
conf
110
Raporty
reports
Disk
Printer
Sie
ć
monitor
Keybord
obiekty ekran
synopt
ekr
110
??
strumienie
danych
wywoływanie
funkcji
obsługa
przerwań
Rys. 5.9. Schemat związków międzymodułowych
Modelowanie Procesów Dyskretnych
88
5.5.2. Przykłady aplikacji monitoringu procesów technologicznych.
Ć
wiczenia
Przedstawione w pkt. 5.5.1 założenia doczekały się praktycznej realizacji, w
postaci dwóch aplikacji. Ze względu na ich historyczny charakter (lata 1989-92 i
1994-97) posiadają one dość rygorystyczne ograniczenia w zakresie interakcji z
użytkownikiem wynikające z limitowanego w tamtych czasach dostępu do
wielkości i jakości sprzętu a także oprogramowania. Warto jednak poznać te
rozwiązania ponieważ one dalej obowiązują tylko, że są ukryte w złożonych
procedurach i dostępne na najniższym poziomie w profesjonalnych rozwiązaniach.
Uwaga:
path/
oznacza indywidualną ścieżkę do przekopiowanych z serwera
materiałów do ćwiczeń
A. Uruchomienie aplikacji RPW (Rys 5.10)
1. Zmień rozdzielczość ekranu na 800x600 i włącz autoukrywanie paska zadań w
menu Start
2. W katalogu path
/
cw5/RPW
uruchomić s.bat
3. Przejść na ekrany ZUW, KP3, Nastawn, wykonać sterowanie wybraną zasuwą.
4. Prześledzić opis stanu obiektów i pomiarów na ekranie Legenda, wysłać pocztę
i zakończyć program
Rys. 5.10. Ekran główny RPW
Modelowanie Procesów Dyskretnych
89
Rys. 5.11. Ekran KP4 – sterowanie zasuwą
Rys. 5.12. Ekran ZUW
Modelowanie Procesów Dyskretnych
90
B. Aplikacji konsolowa na platformie systemu Win XP – Rys. 5.13
1. W katalogu
path
/
cw5
/zuw/
uruchomić s.bat.
2. Przejść klawiszami strzałek na ekran Zbiorniki RII )
3. Włączyć CapsLock (symulacja awarii transmisji) i po pewnym czasie
wyłączyć (ok ½ minuty) zaobserwować i zinterpretować efekt migotania
danych na ekranach.
4. Przejść na ekran Awarie (Rys 5.14) – wykonać strzałkami przewijanie ekranu.
5. Podjąć próbę odbioru poczty (menu główne) – obsłużyć komunikat.
6. Napisać i wysłać pocztę ( menu główne – nadrzędne)
Rys 1.2
Rys. 5.14. Ekran awarii
Rys. 5.13. Ekran Zbiorniki
Modelowanie Procesów Dyskretnych
91
C. Opracowanie algorytmu programu testującego przerwanie i projektu
podstawowej obsługi.
Na tym etapie zostanie uruchomiony i przetestowany przykład programu
będący niewielkim ale podstawowym fragmentem z zaprezentowanych w punktach
A i B złożonych funkcjonalnie aplikacji. Fragment ten dotyczy między innymi
dyskretnego synchronicznego w czasie procesu wyświetlania danych pomiarowych
na ekranie. Należy podkreślić że większość zdarzeń w omawianych systemach jest
czasowo uwarunkowana (np: animacje, dźwięki, synchroniczna transmisja,
timeout’y określające czasy reakcji użytkownika na wybrane zdarzenia itp.).
Ponadto istotnym założeniem jest bezpośrednie wykorzystanie obsługi przerwania
czasowego sterowanego impulsami zegara czasu rzeczywistego pozwalające na
bardzo szybką i niezawodną obsługę zdarzeń. Szybkość i niezawodność obsługi
jest często bardzo istotnym warunkiem realizacji sterowania procesami
szybkozmiennymi i ważnymi z punktu widzenia bezpiecznego ich przebiegu.
Zadanie dotyczy uruchomienia aplikacji konsolowej.
1. W katalogu path
/
cw6/
uruchomic
ztint1.exe.
(zad. time interrupt)
2. Zaobserwować na ekranie (Rys 5.15) zmiany czasu, animację mijających
sekund oraz wydruk wartości z 1 sekundowym time'outem.
3. W katalogu path
/
cw6/
uruchomić ztint
2.exe.
4. Wykonać polecenia z klawiatury: wpisz tekst i steruj strzałkami.
5. Uruchomić jeszcze np 2 razy aplikacje ztint
1.exe
i zaobserwować
równoległą realizację wszystkich procesów obliczeniowych (obserwowana
współbieżność była prawidłowo zrealizowana dopiero od wersji. Windows
NT )
6. Wybrać wersję kompilatora TC2 lub MC4, wchodząc do odpowiedniego
katalogu i zapoznać się z funkcjami obsługi przerwania czasowego testując
wskazany program źródłowy:. zmodyfikować wydruk, wygenerować sygnał
dźwiękowy.
a) wer. TC2. plik
path
/
cw
6/tc2/c
tintc.c
:
zapoznać się z funkcjami
w programie oraz edytorem
tc
, kompilacją i wykonaniem
Ctrl+F9
b) wer. MC4 plik
path
/
cw
6/ctint
.c
:
zapoznać się z funkcjami w
programie z edytorem -
mec
, kompilacją -
ct
, linkowaniem -
lkt
i
wykonaniem
ctint
7. Opracować algorytm obsługi wydruku i następnie pozostałych operacji
odwołując się do obsługi przerwań z zegara i z klawiatury i wzorując się na
działaniu
ztint1.exe
, Na podstawie opracowanego algorytmu napisać
Modelowanie Procesów Dyskretnych
92
program
zad5.c
. Uwaga w zadaniu wykorzystać wstępnie przygotowany
program z procedurami obsługi przerwań plik
ctintc.c
8. Opracować własny projekt programu modelującego układ rzeczywisty.
Wzorując się na działaniu
ztint2.exe
, rozszerzyć obsługę zdarzeń i
procesów dyskretnych wzbogacając program o własne pomysły. Opracować i
załączyć do projektu strukturę danych, przeprowadzić symulację testującą
Rys. 5.15. Ekrany dla programów
zad1mtime
i
zad2mtime
Modelowanie Procesów Dyskretnych
93
program
ż
ródłowy ctintc.c
/**************************************************************************
* *
* PROGRAM CTINTC.C *
* *
* Test procedur zarzadzajacych obsluga przerwania czasowego *
* *
**************************************************************************/
#define MAIN
#include <conio.h>
/* int getch(void); int kbhit(void); */
#include <stdio.h>
/* sprintf(tekst,wzorzec, par,...), puts(tekst),
int cprintf(*char),int putch(int),int ungetch(int);*/
#include <dos.h>
/* getvect(INT), setvect(INT, Funkcja ) */
#include <time.h>
/* time_t czas; time( &czas );
tt = *localtime( &czas ); struct tm tt; */
#define INT 0x1C
/* numer dla przerwania czasowego 18 razy na sek */
/* Prototypy funkcji wlasnych modulu */
void Intr_Init( void );
void interrupt far Intr_Obsluga( void );
void Intr_Close( void );
static void (interrupt far * intr_old )();
/* poprzednie przerwanie */
/*-----------------------------------------------------------------------
| PROCEDURA Intr_Init
| CEL: Procedura inicjalizuje obsług
ę
- przerwania czasowego kod 1C.
| PARAMETRY: brak.
| ODWOLANIA:
| -----------------------------------------------------------------------*/
void Intr_Init( void ) {
intr_old = getvect( INT );
/*zapamietaj aktualna obsługe*/
setvect( INT, Intr_Obsluga);
/* ustaw now
ą
obsług
ę
*/
}
/*--------------------------------------------------------------------------
| PROCEDURA Intr_Close
| CEL: Procedura odtwarza obsług
ę
przerwania czasowego
| PARAMETRY: brak.
| ODWOLANIA:
-------------------------------------------------------------------------*/
void Intr_Close( void ) {
setvect(INT, intr_old);
/*odtworzenie obsługi przerwania*/
}
/*--------------------------------------------------------------------------
| PROCEDURA Intr_Obsluga( void ){
| CEL: Procedura obsługiwana przez przerwanie czasowe
| PARAMETRY: brak.
| ODWOLANIA:
-------------------------------------------------------------------------*/
Modelowanie Procesów Dyskretnych
94
void interrupt far Intr_Obsluga( void ){
/* ????????????
tutaj napisz kod funkcji zgodny z
opracowanym na
ć
wiczeniach algorytmem symulacji . */
};
/*--------------------------------------------------------------------------
| PROCEDURA MAIN
| CEL: Koordynuje i obsługuje podstawowe zadania systemu ...
| PARAMETRY: brak.
| ODWOLANIA:
-------------------------------------------------------------------------*/
int main()
{
// PROGRAM testujacy
int i=15000;
char buf1[80];
clrscr();
// MS4 system("cls");
Intr_Init();
gotoxy(40,10);
// MS4 _settextposition(10,40);
sprintf(buf1,"%10d",i);
cprintf(buf1);
// MS4 _outtext(buf1)
Intr_Close();
gotoxy(25,20);
getch();
return 0;
}
Modelowanie Procesów Dyskretnych
95
5.6 Systemy SCADA/HMI
Systemy pozyskiwania danych procesowych z graficzną wizualizacją
SCADA/HMI (Supervisory Control And Data Acquisition/Human Machine
Interface).
I. Uruchomienie przykładowego projektu (Rys 5.16).
1. Wykonać kopię katalogu
cw7
w
"
C:\Documents and Settings\
swoj_login
”
2. Otworzyć okno poleceń (konsolę) w katalogu
"
C:\Documents and Settings\
swoj_login
\cw7
”
3. Uruchomić
log
swoj_login
(mapowanie katalogu na dysk K:)
4. Uruchomić programy do komunikacji DDE, np
Excel Zeszyt1.xls
Histdata,
tymczasowo zatrzymać aktualizację łącza, ustawić dla
uwikłanych formuł:
Narzędzia/Opcje/Przeliczanie – Iteracje = Tak ,
Maksymalna liczba iteracji = 1
5. Uruchomić w trybie wykonywalnym (Viewer - runtime)
intouch
wskazać
K:\newapp\example
i kliknąć prawą ikonę,
zignorować brak klucza i potwierdzić wybór
okno2
dokończyć aktualizację łącza
DDE np.Excel Zeszyt1.xls
6. Uruchomić w trybie projektowania okien (Window Maker)
intouch
wybrać projekt
K:\newapp\example\
i kliknąć lewą ikonę) a następnie zignorować brak klucza i potwierdzić
wybór okno
2
II. Wizualizacja i sterowanie w przykładowym modelu układu.
7. Obsłużyć kolejno:
- przycisk lub przełącznik lub tekst [Wyłączony/Załączony] lub Ctrl+Shift+S,
-
zaobserwować linię czasu na wykresie,
- zmienić Ciśnienie i Force
- zaobserwować pojawianie się i odwoływanie alarmów i oraz zmiany na
wykresie,
- nacisnąć przycisk, moto 10[On/Off],
- zaobserwować wyniki na przyrządzie wskazówkowym oraz w opisach
tekstowych nacisnąć przycisk Otwórz Okno o1,
- zmodyfikować okres trendu historycznego zmienić parametr i zamknąć okno
8. Powrót na ekran projektowania i przegląd elementów modelu układu.
Modelowanie Procesów Dyskretnych
96
9. Słownik zmiennych systemowych (ze znakiem $) oraz użytkownika menu
Special/ Tagname Dictionary/ Select
.
10. Skrypty i właściwości wyzwalające zdarzenia wg pkt 7 ( Double Click)
- ogólne aplikacji - menu Special/ Scripts/ Application Scripts/ On Startup
- obiektów – np podwójne kliknięcie przycisku moto / Action / On Key Down
- tekst Zal/Wył., obsługa okna Sterowanie Message i przycisków On /Off i
klawisza Ctrl+Shift+S
- tekst Alarm, obsługa kolorów i migotania Sterowanie Message
- Force, realizacja Next Links dla opcji
User Inputs = Analog Text Color = Analog zaobserwować zmianę kolorów
11. Realizacja pozostałych elementów - kliknij na wykres oraz wybrane obiekty
- zinterpretuj parametry modelu układu
12. Realizacja połączenia DDE np. Intouch => Excel
Zeszyt1.A4 = VIEW|TAGNAME ! t0
Zeszyt1.A1 = VIEW | TAGNAME ! Cisnienie
Zeszyt1.B1= 25 los()=> Zakłocenie Cisnienia(ZmDDE)
5.16a Przykładowe okno aplikacji
Modelowanie Procesów Dyskretnych
97
5.16b Przykładowa konfiguracja kanału DDE obiekt
5.16 c Przykładowa konfiguracja kanału DDE system
Modelowanie Procesów Dyskretnych
98
Realizacja prostego projektu - na dowolnie wybrany temat
Opracowanie projektu prostej aplikacji - wizualizacja i sterowanie wybranym
układem z wykorzystać połączenie dwukierunkowego DDE
- wykorzystać narzędzia (Rys 5.17) do zamodelowania ekranów synoptycznych
własnego projektu)
Przykładowy ekran projektu przedstawia Rys 5.18
5.16 d. Przykładowa konfiguracja kanału DDE system cd
Real-Time
Trend
Button
Wizard
Rys 5.17 Narzędzia do projektowania okien
Modelowanie Procesów Dyskretnych
99
Intouch ver 10.0
Aktualnie firma Wonderware udostępnia wersję Demo w wersji 10.0,
której wybrane ekrany Rys 19, … Rys 21- przedstawiają aplikację w stanie
edycji modelu a Rys 22. w stanie symulacji Na ćwiczeniach należy
zapoznać się z rozszerzona funkcjonalnością tej wersji.
Rys 5.18 Przykładowy ekran projektu
Modelowanie Procesów Dyskretnych
100
Rys 5.20 Lista zmiennych systemowych i procesowych
Rys 5.19 Edycja zmiennych - Windows/Tagname Directory/Select Tag
Modelowanie Procesów Dyskretnych
101
Rys. 5.21. Program skryptu
.
Rys 3.22 Ekran symulacji procesu
Modelowanie Procesów Dyskretnych
102
Literatura (do rozdz. 5.).
1. Kondratowicz L., Modelowanie symulacyjne systemów. WN-T, 1978.
2. Perkowski P.: Technika symulacji cyfrowej, WN-T, Warszawa 1980.
3. Tyszer J., Symulacja cyfrowa, WN-T, Warszawa 1990.
4. Raczynski S. ""Modelling and Simulation”, Wiley; 2006
5. Winiecki W., Jacek Nowak J., Stanik S., Graficzne zintegrowane środowiska
programowe do projektowania komputerowych systemów pomiarowo-
kontrolnych. Wydawnictwo MIKOM, 2001.
6. Woolfson M.M., Pert G.J. ""An introduction to computer simulation"", Oxford
University Press, USA, 1999
7. Evans J.B, Structures of discrete event simulation: an introduction to the
engagement strategy"", Prentice Hall, 1988
Strony internetowe.
1.
http://warp.cpsc.ucalgary.ca/
2.
http://www.dcs.ed.ac.uk/home/hase/simjava/
3.
http://jist.ece.cornell.edu/jist-user/
4.
http://asi-www.informatik.uni-
hamburg.de/themen/sim/forschung/Simulation/Desmo-J/
5.
www.astor.com.pl/www/Produkty_i_technologie/
6.
http://www.wonderware.com.pl/www/index.php/wizualizacja-hmi/wonderware-
intouch.html