Sprawozdanie – projekt i implementacja symulatora Sieci SMO 1

Wojskowa Akademia Techniczna, Podstawy symulacji, Zajęcia laboratoryjne

Projekt i implementacja symulatora sieci

SMO

Sprawozdanie

Autor: Michał Kierzkowski, I8E1S1

Prowadzący zajęcia: mgr inż. Michał Kapałka

Ocena:

Część modelowa

Część implementacyjna

Oceniany element

Punkty

Oceniany element

Szczegółowość modelu

/15 Wprowadzanie danych

„Elastyczność” modelu

/5 Przebieg symulacji

Prezentacja aspektów dynamicznych

/15 Wyniki symulacji

Zbierane charakterystyki

/5 Wykorzystanie bibliotek symulacyjnych

Sprawozdanie cz. 1

/10 Wykonywanie eksperymentów

Organizacja kodu

Sprawozdanie cz. 2

Suma punktów

/50 Suma punktów

Michał Kierzkowski, I8E1S1

Sprawozdanie – projekt i implementacja symulatora Sieci SMO 2

Wojskowa Akademia Techniczna, Podstawy symulacji, Zajęcia laboratoryjne

Ocena

Ocena

1.Część modelowa

1.1 Wybrany system SMO -założenia

* czas pomiędzy kolejnymi napływami zgłoszeń do systemu: zmienna losowa o rozkładzie Weibulla

* zmienna losowa oznaczająca czas obsługi pojedynczego zgłoszenia w gnieździe: O1=rozkład wykładniczy

O2=rozkład Erlanga

O3=rozkład normalny

*prawdopodobieństwa przemieszczenia się zgłoszenia po danym łuku;(wartości domyślne) p1=0,64

p2=0,35

p3=0,72

* długości kolejek poszczególnych SMO(wartości domyślne):

L1=nieograniczona

L2=7-możliwe straty

L3=9-możliwe straty

* algorytmy kolejek:

AL1=FIFO z priorytetami

AL2=FIFO

AL3=LIFO-możliwe straty

* liczba stanowisk obsługi w gniazdach(wartości domyślne): M1=4

M2=2

M3=3

* ilość zgłoszeń jednocześnie napływających do systemu: R=? określane na początku symulacji

* Interesant posiada zniecierpliwienie

Michał Kierzkowski, I8E1S1

Sprawozdanie – projekt i implementacja symulatora Sieci SMO 3

Wojskowa Akademia Techniczna, Podstawy symulacji, Zajęcia laboratoryjne

1.2. Model systemu – obiekty, aktywności, zdarzenia

System zawiera 4 główne typy obiektów:

Generator(GObj)

Inicjowanie obiektu

Generowanie interesantów

Dodawanie interesantów do kolejki

Kolejka(QObji)

Inicjowanie Obiektu

Kolejkowanie interesantów

Usuwanie interesantów jeżeli pełna kolejka

Gniazdo(SObji)

Inicjowanie obiektu

Obsługa interesantów

Usuwanie interesantów z kolejki

Losowanie gdzie dalej ma iść interesant i ustawienie tej wartości w IntObji Interesant(IntObji)

Inicjowanie obiektu

Usuwanie interesanta jeżeli upłynął czas zniecierpliwienia Usuwanie interesanta(usuwanie samego siebie)

Michał Kierzkowski, I8E1S1

Sprawozdanie – projekt i implementacja symulatora Sieci SMO 4

Wojskowa Akademia Techniczna, Podstawy symulacji, Zajęcia laboratoryjne

1.3. Model – aspekty dynamiczne

Obiekt Generator(GObj) tworzy nowe obiekty typu Interesant(IntObj) w odstępach czasu wyrażonych jako zmienna losowa o rozkładzie Weibulla są to obiekty które będą badane w ciągu trwania symulacji.

Interesant jest obsługiwany w gniazdach w odstępach czasu równych zmiennej losowej o odpowiednim rozkładzie.

W Gniazdach po obsłużeniu interesanta generowane jest prawdopodobieństwo o rozkładzie takim jak rozkład zmiennej losowej określającej czas obsługi w gnieździe. Na podstawie wygenerowanego prawdopodobieństwa wybierany jest dalszy kierunek interesanta.

Jeżeli minie czas zniecierpliwienia interesanta i nie zostanie on obsłużony w tym czasie zostaje zniszczony.

Jeżeli interesant po obsłużeniu w gnieździe 3 został ponownie skierowany do gniazda 1

ustawiany jest mu wyższy priorytet i jest obsługiwany przed nowszymi interesantami.

Jeżeli kolejka jest przepełniona interesant jest usuwany.

Michał Kierzkowski, I8E1S1

Sprawozdanie – projekt i implementacja symulatora Sieci SMO 5

Wojskowa Akademia Techniczna, Podstawy symulacji, Zajęcia laboratoryjne

1.4. Dane wejściowe

Możliwość uruchomienia programu z ustawieniami domyślnymi wtedy podajemy liczbę interesantów do symulacji lub możliwe jest dowolne skonfigurowanie poprzez podanie dodatkowo:

Parametry rozkładów (dla generatora oraz gniazd)

Ograniczenia liczby interesantów dla poszczególnych kolejek Prawdopodobieństwa przemieszczania się po łukach

Liczba stanowisk obsługi w gniazdach

Sposób prezentowania działania symulacji- Śledzimy jednego interesanta czy wszystkich?

1.5. Dane wyjściowe

Wyświetlanie aktualnych informacji o stanie śledzonego interesanta Czas oraz aktualna pozycja

czas przebywania zgłoszenia (średnia i odchylenie standardowe), liczbę zgłoszeń (średnia i odchylenie standardowe),

liczbę zajętych kanałów (średnia i odchylenie standardowe) liczbę zgłoszeń w kolejce (średnia i odchylenie standardowe) prawdopodobieństwo obsłużenia zgłoszenia przez daną kolejkę Michał Kierzkowski, I8E1S1

Sprawozdanie – projekt i implementacja symulatora Sieci SMO 6

Wojskowa Akademia Techniczna, Podstawy symulacji, Zajęcia laboratoryjne

1.6. Wnioski

Modsim II jest językiem zorientowanym obiektowo dlatego dzięki dekompozycji obiektowej możliwe jest tworzenie rozbudowanych symulacji w stosunkowo prosty sposób. Ma wbudowane monitory które pozwalają śledzić konkretną zmienną dzięki czemu można zbierać statystyki działania symulacji.

Michał Kierzkowski, I8E1S1

Sprawozdanie – projekt i implementacja symulatora Sieci SMO 7

Wojskowa Akademia Techniczna, Podstawy symulacji, Zajęcia laboratoryjne

2. Część implementacyjna

2.1. Zaimplementowane obiekty

Obiekty zaimplementowane w moim programie można podzielić na 4 grupy: Generatory, Kolejki, Gniazda i Interesanci.

*Generatory

-Generator(GeneratorObj)- obiekt typu RandomObj generuje interesantów na potrzeby symulacji, zawiera metody:

ASK METHOD Init(...)

TELL METHOD Generuj(...)

*Kolejki

-Kolejka 1.(Kolejka1Obj)- obiekt typu RankedObj kolejka FIFO z priorytetami nieograniczona,

-Kolejka 2.(Kolejka2Obj)-obiekt typu QueueObj kolejka FIFO z ograniczoną liczbą miejsc,

-Kolejka 3.(Kolejka3Obj)-obiekt typu StackObj kolejka LIFO z ograniczoną liczbą miejsc, zawierają metody: ASK METHOD Init(...)

ASK METHOD Wstaw(...)

*Gniazda

-Zaimplementowałem 3 gniazda(Gniazdo1Obj,...) typu RandomObj które obsługują interesantów, zawierają metody:

ASK METHOD Init(...)

TELL METHOD Obsluga()

*Interesant(InterObj) typu RandomObj zawiera metody:

ASK METHOD Init(...)

ASK METHOD usun()

ASK METHOD ustawCzas()- ustawia czas utworzenia obiektu

ASK METHOD ustawWysw()- ustawia czy ma być wyświetlany

ASK METHOD zwiekszPriorytet();

Michał Kierzkowski, I8E1S1

Sprawozdanie – projekt i implementacja symulatora Sieci SMO 8

Wojskowa Akademia Techniczna, Podstawy symulacji, Zajęcia laboratoryjne

2.2. Wykorzystanie bibliotek symulacyjnych

-Do celów symulacji użyte zostały zmienne monitorowane typu SREAL oraz TSINTEGER.

Do monitorowania zmiennej SREAL trzeba było użyć obiektu RstatObj natomiast dla zmiennej TSINTEGER ItimedStatObj.

-Do generowania liczb pseudolosowych wykorzystane zostały wbudowane metody generujące liczby o odpowiednim rozkładzie. Użyte metody to: Weibull(shape,scale)-rozkład Weibulla

Exponential(mean)-rozkład wykładniczy

Erlang(mean,K)-rozkład erlanga

Normal(mean,sigma)-rozkład normalny

-W celu losowania gdzie ma udać się interesant została użyta metoda Sample() zaimplementowana w objekcie RandomObj która zwraca liczbę z przedziału 0-1.

-Dla generatora została zastosowana metoda która ustawia ziarno: ASK Generator1 TO SetSeed (FetchSeed(ziarno))

użytkownik podaje ziarno zanim uruchomi symulację.

-Monitory użyte w programie są powoływane poprzez metodę GETMONITOR np. monitor monitKol1 := GETMONITOR(ASK Kolejka1 TO dl, ItimedStatObj)- który monitoruje długość kolejki 1.

Następnie w celu wyświetlenia statystyk wykorzystana została metoda Mean()-średnia oraz StdDev()-odchylenie standardowe

-Do zaimplementowania kolejek zostały użyte obiekty QueueObj, StackObj, RankedObj.

Kolejka1Obj to kolejka FIFO z priorytetami dlatego użyty został obiekt RankedObj zapewniający ten typ kolejki. Wystarczyło jedynie przeciążyć metodę: Rank(IN a:ANYOBJ;IN b:ANYOBJ):INTEGER dostosowując ją do programu Kolejka2Obj to kolejka FIFO dlatego został użyty obiekt QueueObj Michał Kierzkowski, I8E1S1

Sprawozdanie – projekt i implementacja symulatora Sieci SMO 9

Wojskowa Akademia Techniczna, Podstawy symulacji, Zajęcia laboratoryjne

Kolejka3Obj to kolejka LIFO – został użyty oBiekt StackObj

-Czas obsługi oraz czas pomiędzy kolejnymi zgłoszeniami został rozwiązany poprzez użycie metody WAIT DURATION która powoduje wstrzymanie pracy obiektu na określony czas.

-Użyta została również metoda SimTime która zwraca aktualny czas symulacji. Metoda ta została użyta w celu wyświetlenia działania programu oraz obliczenia czasu przebywania zgłoszenia.

Michał Kierzkowski, I8E1S1

Sprawozdanie – projekt i implementacja symulatora Sieci SMO 10

Wojskowa Akademia Techniczna, Podstawy symulacji, Zajęcia laboratoryjne

2.3. Wprowadzanie danych wejściowych

Dane wejściowe wprowadzane są w konsoli. Po uruchomieniu programu ukazuje się menu z możliwością uruchomienia programu z ustawieniami domyślnymi lub z własnymi.

Niezależnie od wyboru aby uruchomić symulację należy podać:

-liczbę obiektów typu interesant które będą użyte do symulacji

-ziarno generatora

-sposób wyświetlania działania symulacji

Dodatkowo jeżeli wybrana zostanie opcja z ustawieniami własnymi można zmienić:

-parametry rozkładu Weibulla dla generatora

-parametry rozkładu wykładniczego dla gniazda1

-parametry rozkładu erlanga dla gniazda2

-parametry rozkładu normalnego dla gniazda3

-liczba stanowisk w gniazdach

-prawdopodobieństwa przemieszczenia się zgłoszenia po danym luku

-długości poszczególnych kolejek

Przy wyborze ustawień własnych nie jest wymagane definiowanie wszystkich powyższych elementów możliwe jest ustawienie tylko wybranych. Pozostałym zostaną przypisane wartości domyślne.

Michał Kierzkowski, I8E1S1

Sprawozdanie – projekt i implementacja symulatora Sieci SMO 11

Wojskowa Akademia Techniczna, Podstawy symulacji, Zajęcia laboratoryjne

2.4. Przebieg symulacji

Po wprowadzeniu wymaganych danych zostaje uruchomiona symulacja.

Sposób wyświetlania zależy od wyboru. Wyświetlany jest czas, działanie jakie zostało przeprowadzone na interesancie np. zakolejkowanie, numer interesanta.

Możliwe jest wyświetlanie dla jednego interesanta lub dla wszystkich Po zakończeniu symulacji wyświetlane są statystki zebrane w czasie symulacji. Statystyki te zostają dodatkowo zapisane do pliku.

Michał Kierzkowski, I8E1S1

Sprawozdanie – projekt i implementacja symulatora Sieci SMO 12

Wojskowa Akademia Techniczna, Podstawy symulacji, Zajęcia laboratoryjne

2.5. Wyniki symulacji

Dane wyjściowe zostają wyświetlone w konsoli oraz zostają zapisane do pliku.

Dane wyjściowe:

Wyświetlanie aktualnych informacji o stanie śledzonego interesanta Czas ,aktualna pozycja oraz numer interesant

czas przebywania zgłoszenia (średnia i odchylenie standardowe), liczbę zajętych kanałów (średnia i odchylenie standardowe) w poszczególnych gniazdach liczbę zgłoszeń w kolejce (średnia i odchylenie standardowe) prawdopodobieństwo obsłużenia zgłoszenia przez daną kolejkę(nie dotyczy kolejki numer 1

ponieważ jest to kolejka nieograniczona i wszystkie zgłoszenia zostają zakolejkowane) Michał Kierzkowski, I8E1S1

Sprawozdanie – projekt i implementacja symulatora Sieci SMO 13

Wojskowa Akademia Techniczna, Podstawy symulacji, Zajęcia laboratoryjne

2.6. Wielokrotne przeprowadzanie eksperymentów

Istnieje możliwość ponownego uruchomienia symulacji z poziomu konsoli.

Dane z wielu eksperymentów znajdują się w pliku dzięki czemu łatwo można porównać uzyskane wyniki.

Michał Kierzkowski, I8E1S1

Sprawozdanie – projekt i implementacja symulatora Sieci SMO 14

Wojskowa Akademia Techniczna, Podstawy symulacji, Zajęcia laboratoryjne

2.7. Wnioski

Zadanie to pozwoliło mi poznać metody symulacji przy wykorzystaniu języka MODSIM II.

Monitorowanie zmiennych odbywa się za pomocą monitorów które dostarcza język MODSIM II. W realizacji zadania podstawowymi metodami są TELL, WAIT oraz ASK.

Metody TELL oraz WAIT związane są z upływem czasu natomiast metoda ASK nie wytraca czasu symulacji.

Michał Kierzkowski, I8E1S1