• Nie Znaleziono Wyników

4. Symulacja zdarzeń dyskretnych

4.4. Realizacja procesu symulacji

W symulacji dynamicznej, tzn. takiej, w której uwzględnia się wpływ czasu na zmiany zachodzące w systemie (w omawianej w rozdziale 7 metodzie Monte Carlo wpływ czasu jest najczęściej pomijany), kluczowym zagadnieniem jest odwzorowanie w modelu upływu czasu. Czas jest rejestrowany jako zmienna zwana czasem symula-cji i zapamiętywany w obiekcie zwanym zegarem symulasymula-cji (lub po prostu zegarem). Na początku symulacji zegar ustawia się na wartość zero i od tej pory wskazuje on liczbę jednostek czasu symulowanego, które upłynęły od chwili początkowej. Okre-ślenie czas symulacji oznacza czas zegarowy według wskazań zegara symulacji, a nie rzeczywisty czas wykonywania obliczeń. Czynnikiem decydującym o czasie obliczeń jest liczba zdarzeń występujących w trakcie symulacji.

Uaktualnianie zegara (czyli sterowanie upływem czasu) jest bardzo ściśle związa-ne ze zdarzeniami, które pojawiają się w modelu. Istnieją dwie podstawowe metody uaktualniania czasu zegarowego (por. [Gordon 1974]). Według pierwszej, czas zega-rowy jest ustawiany na chwilę, w której ma wystąpić zdarzenie (tzw. metoda kolej-nych zdarzeń). W drugiej metodzie, zegar zwiększa się o stały przyrost czasu i każdo-razowo sprawdza się, czy jest to czas wystąpienia jakiegoś zdarzenia (metoda stałego kroku). W obu podejściach zegar wymusza chronologiczne porządkowanie zdarzeń.

Metoda kolejnych zdarzeń pozwala na nieuwzględnianie okresów braku aktywno-ści systemu. Po zajaktywno-ściu wszystkich zmian stanu w czasie odpowiadającym danemu zdarzeniu, czas symulacyjny zostaje przesunięty do chwili zajścia kolejnego zdarze-nia, w której zachodzą następne zmiany stanu (odpowiadające kolejnemu zdarzeniu). W ten sposób okres braku aktywności systemu zostaje całkowicie pominięty.

Symulację systemów dyskretnych wykonuje się zwykle według metody kolejnych zdarzeń, natomiast symulację systemów ciągłych – metodą stałego kroku. Ogólnie rzecz biorąc, system ciągły modelujemy za pomocą ciągłych równań, opisujących zmiany atrybutów w czasie. Opis systemów dyskretnych związany jest ze zdarzeniami wywołującymi zmiany jego stanu.

4.4.2. ZDARZENIA WARUNKOWE I BEZWARUNKOWE, ZAWIESZONE I RÓWNOCZESNE

Istnieją dwa typy zdarzeń: zdarzenia bezwarunkowe, które są bezpośrednio za-leżne od czasu oraz zdarzenia warunkowe, które pośrednio zależą od czasu i wy-znaczone są stanami systemu. Pojawienie się zdarzenia bezwarunkowego nie jest uzależnione od jakichkolwiek warunków panujących w modelu – zdarzeniem bez-warunkowym jest np. nadejście nowego klienta. Zdarzenia warunkowe zaistnieją natomiast tylko wtedy, gdy pozwoli im na to stan systemu – np. rozpoczęcie obsłu-gi na stanowisku jest możliwe tylko wtedy, gdy stanowisko jest wolne, a inne zgło-szenia nie oczekują w kolejce.

W dyskretnych modelach symulacyjnych należy wziąć pod uwagę możliwość jednoczesnego zajścia dwóch lub więcej zdarzeń (tzw. zdarzenia równoczesne). Jak-kolwiek oznacza to, że zdarzenia te zachodzą w systemie w tej samej chwili, to jed-nak program symulacyjny będzie obsługiwał je kolejno. Kolejność obsługi może zostać wymuszona priorytetami, według których zdarzenia będą wybierane. Jeżeli nie ustalono natomiast odrębnej zasady porządkowania zdarzeń, wybór zdarzeń do-konany zostanie losowo.

Jeżeli zdarzenie nie może być wykonane w zaplanowanym czasie, to określa się je jako zawieszone. Zapis dotyczący takiego zdarzenia musi być przechowywany aż do momentu zmiany blokujących warunków. Zapisy takie umieszcza się często na spe-cjalnej liście zwanej listą zdarzeń zawieszonych. Program powinien przeglądać tę listę po każdej zmianie stanu systemu w celu określenia, czy nowe warunki sprzyjają uak-tywnieniu któregoś ze zdarzeń. Może tu zajść reakcja łańcuchowa: przetworzenie jed-nego zdarzenia może odwiesić w tej samej chwili czasu zegarowego jedno lub więcej zdarzeń, które z kolei odwieszają następne. Prowadzi to do omówionego zagadnienia zdarzeń równoczesnych.

Rozważmy sytuację przedstawioną na rysunku 4.3, prezentującą listę zdarzeń za-wieszonych. Zapisy rozmieszczone są w porządku priorytetów i przeglądane są od priorytetu najwyższego do najniższego.

Rys. 4.3. Przeglądanie zdarzeń zawieszonych Źródło: [Gordon 1974]

Gdy w danej chwili zostały zakończone wszystkie możliwe czynności, uaktual-niany jest czas zegarowy, który zaczyna wskazywać czas następnego (przyszłego) zdarzenia. Po aktualizacji czasu zegarowego do listy dołącza się nowe zdarzenie według priorytetu. Przeglądanie listy zdarzeń zawieszonych rozpoczyna się od zapi-su o najwyższym priorytecie. Po napotkaniu informacji o zdarzeniu, które może być zrealizowane, wykonuje się wszystkie czynności o zerowym czasie trwania związa-ne z danym zdarzeniem. Przeglądanie ponawiazwiąza-ne jest od początku listy. Po przetwo-rzeniu wszystkich zdarzeń możliwych w danej chwili program znowu uaktualnia czas zegarowy.

Wielokrotne przeglądanie zdarzeń bywa bardzo czasochłonne. Proces ten można usprawnić, jeżeli istnieje sposób rozpoznawania działania, którego wynikiem będzie odwieszenie zdarzenia. Takie zdarzenie może być wtedy uczynione nieaktywnym albo przez usunięcie go z listy zdarzeń zawieszonych, albo przez wprowadzenie odpowied-niej informacji bezpośrednio do zapisu zdarzenia. Zdarzenie będzie wtedy podczas przeglądania pomijane aż do zmiany wskaźnika.

4.4.3. KALENDARZ ZDARZEŃ I OBSŁUGA PROCESU SYMULACJI

Informacje o wszystkich planowanych zdarzeniach przechowywane są w kalendarzu zdarzeń. Jest to obiekt dynamiczny, który steruje upływem czasu w trakcie symulacji. Terminy wystąpienia wszystkich zaplanowanych zdarzeń przechowywane są w nim w sposób uporządkowany według dnia i godziny. Kalendarz dopuszcza też możliwość przechowywania zdarzeń o tym samym terminie realizacji. Są one realizowane sekwen-cyjnie, w kolejności zapisu do kalendarza. W miarę przebiegu procesu symulacji, infor-macje zawarte w kalendarzu zdarzeń są uaktualniane, tzn. wykreślane są z niego dane do-tyczące zdarzeń już zrealizowanych (lub będących w trakcie realizacji), a dopisywany jest czas wystąpienia nowych zdarzeń. Pobranie zdarzenia z kalendarza powoduje przesunię-cie zegara symulacji na godzinę odpowiadającą terminowi realizacji zdarzenia. W zależ-ności od typu pobranego zdarzenia inicjowany jest odpowiedni proces jednostkowy.

Kierunek przeglądania Wysoki Priorytet Niski A B C D E F G

Proces symulacji dyskretnej przebiega od zdarzenia od zdarzenia, a jego kluczo-wym elementem jest właśnie kalendarz, którego zadaniem jest przechowywanie pla-nowanych zdarzeń i sterowanie zegarem symulacji. Sposób pobierania zdarzeń z ka-lendarza może być jednak różnie zorganizowany i w odmienny sposób mogą być wykonywane procedury logiczne, będące wynikiem realizowania zdarzeń w modelu. Wyróżnia się (por. [Gordon 1974], [Seila i in. 2003], [Kelton i in. 2007]) metodę pla-nowania zdarzeń, metodę wyboru działań i metodę interakcji procesów. Podstawą różnicowania metod symulacji dyskretnej jest wybór jednego z trzech typów elemen-tów (zdarzenia, procesu, działania) i uczynienie z niego centralnego typu obiekelemen-tów, z punktu widzenia którego planuje się strukturę modelu.

Rys. 4.4. Schemat logiczny procesu symulacji dyskretnej

Schemat logiczny procesu symulacji przedstawiono na rys. 4.4. Na początku nastę-puje wczytanie lub zainicjowanie parametrów systemu oraz zmiennych symulacyjnych. Następnie rozpoczyna się symulacja realizowana w sposób iteracyjny. Najpierw okre-ślamy, czy symulacja powinna być dalej wykonywana. Jeżeli nie zaistniały warunki kończące symulację, to z kalendarza zdarzeń pobierane jest zdarzenie, które powinno być zrealizowane w pierwszej kolejności. Czas symulacji uaktualniany jest na czas rea-lizacji zdarzenia pobranego z kalendarza. Zdarzenie jest następnie wykonywane, tzn. realizowane są czynności związane z wystąpieniem tego typu zdarzenia. Jeżeli z

poja-wieniem się zdarzenia wiążą się inne, przyszłe zdarzenia, czasy wystąpienia tych zda-rzeń muszą zostać zaplanowane, a informacje o tym zapisane w kalendarzu zdazda-rzeń.

Decyzja o kontynuowaniu procesu symulacji może być związana z zaplanowanym czasem obserwacji, ale można też wybrać inne warunki końcowe: np. określić liczbę klientów, którzy będą obsłużeni lub maksymalną liczbę klientów, która może być od-notowana w systemie.

4.5. TECHNIKI MODELOWANIA ZDARZEŃ DYSKRETNYCH