430 likes | 611 Views
Prognozowanie i symulacje. wprowadzenie do symulacji. Badany system. Eksperyment na modelu systemu. Eksperyment na istniejącym systemie. Model matematyczny. Model fizyczny. Symulacja. Rozwiązanie analityczne. Metody analizy systemów. Podstawowe pojęcia. model = opis systemu
E N D
Prognozowanie i symulacje wprowadzenie do symulacji
Badany system Eksperyment na modelu systemu Eksperyment na istniejącym systemie Model matematyczny Model fizyczny Symulacja Rozwiązanie analityczne Metody analizy systemów
Podstawowe pojęcia • model = opis systemu • model symulacyjny = wyróżnianie i formalizacja cech systemu oraz ustalanie zależności pomiędzy nimi, zachodzących w czasie • modele statyczne i dynamiczne • modele stochastyczne i deterministyczne • modele zdarzeń dyskretnych i ciągłych
Podstawowe elementy modelu AWESIM! sieć (network) • węzły (nodes) • czynności (activities) instrukcje kontrolne blok animacji GEN,"PRITSKER","SERIAL WORK STATIONS", 1/1/1996,1; LIMITS,500,-1,-1,2,-1,-1; NETWORK; INIT,0,300; FIN;
Podstawowe pojęcia • obiekt – element powodujący zmiany stanu modelowanego systemu w miarę przechodzenia przez model, np. klient, pojazd, informacja • atrybut – cecha obiektu, np.: • czas pojawienia się w systemie • czas niezbędny do obsłużenia • rodzaj • zbiór – miejsce oczekiwania obiektów na obsługę
Panel główny AWESIM! 3.0 najpierw krótko omówimy podstawowe węzły oraz instrukcje kontrolne
Węzeł CREATE Służy do wprowadzania obiektów do systemu, z reguły pierwszy w kolejności Node Label - etykieta węzła, opcjonalnie, jednak czasem konieczne Time Between - czas pomiędzy pojawianiem się obiektów Time of First - czas pojawienia się pierwszego obiektu Save TNOW - numer atrybutu, na którym zapisywany jest czas pojawienia się obiektu Max to Create - maksymalna liczba tworzonych obiektów Max Branches to Take - maksymalna liczba gałęzi, wzdłuż których utworzone obiekty mogą się przemieszczać od tego węzła (powtarza się w niemal wszystkich węzłach)
WęzełQUEUE Stosowany do modelowania złożonych procesów decyzyjnych, gdy obiekt pojawia się i oczekuje na obsługę, gdzie dyspozycja związana z obiektem zależy od stanu stanowiska oraz liczby obiektów oczekujących na obsługę w kolejce • Node Label - etykieta węzła • File # - numer zbioru, w którym przechowywane są obiekty z danej kolejki, numerujemy nadając unikalne wartości • Init. # in Queue - liczba obiektów w kolejce w momencie rozpoczęcia symulacji • Queue Capacity - pojemność kolejki, czyli ile obiektów może stać w kolejce
WęzełQUEUE • Full Action - bez akcji, przepuszczanie lub blokowanie obiektu, który pojawia się w węźle QUEUE. W przypadku, gdy kolejka jest pełna: • BALK - przepuszczenie obiekt, czyli przeniesienie do innego węzła w sieci lub usunięcie z systemu w przypadku braku etykiety takiego węzła • BLOCK - obiekt oczekuje tak długo, aż znajdzie się miejsce w kolejce • NONE - nie powoduje blokowania ani przepuszczania, w przypadku gdy kolejka ma ograniczoną pojemność, obiekty które w niej się nie mieszczą są usuwane z systemu w sposób niekontrolowany
Węzeł TERMINATE Stosowany do usuwania obiektów z sieci • Node Label - etykieta węzła • Term. Count - liczba obiektów, po których przejściu następuje zakończenie symulacji Gdy w sieci jest kilka węzłów TERMINATE to osiągnięcie przez jeden z nich warunku zakończenia powoduje zakończenie symulacji
Węzeł COLCT Zbieranie statystyk budowane z wykorzystaniem funkcji dostępnych pod przyciskiem F(x) znajdującym się przy polu Value. COLCT # - indeks określający numer kolejny statystyki Value - rodzaj zmiennej lub wyrażenie, którego wartości mają być rejestrowane Identifier - opis węzła (tekst informujący o zbieranych statystykach, ustalamy sami) Gdy chcemy wyniki na histogramie: # of Cells - liczba przedziałów histogramu Lower Limit - granica pierwszego przedziału histogramu Cell Width - szerokość przedziału histogramu
Czynność ACTIVITY Activity # - numer identyfikacyjny czynności Duration - czas trwania czynności Condition - prawdopodobieństwo lub warunek zaistnienia czynności End Node Label - etykieta węzła końca czynności # of Servers - liczba identycznych równolegle działających stanowisk obsługi (tylko czynności obsługi) Identifier - etykieta opisująca czynność, tworzymy sami
Czynności - do czego służą • określa się w nich czasy przypisane do obiektów przepływających przez sieć • czynności wychodzące z węzłów, gdzie są zbiory to czynności obsługi • w czynnościach obsługi określamy liczbę stanowisk (servers) • wybór czynności może mieć charakter probabilistyczny (prawdopodobieństwo PROB)) • wybór może też mieć charakter warunkowy (COND) • czynności można nadać numer. Jest on wykorzystywany jako indeks w funkcjach np. NNACT(I) - liczba obiektów znajdujących się w czynności, gdzie I numer czynności, oraz w raporcie
Węzeł GOON A B węzeł kontynuacji, stosujemy, gdy chcemy „rozgałęzić” drogę obiektów” • Node Label - etykieta węzła • Max Branches to Take - maksymalna liczba czynności, po których może poruszać się wychodzący z węzła obiekt • A - Wybór czynności według prawdopodobieństwa • B - Wybór czynności według warunku
Instrukcje sterujące GENERAL (GEN) • Name - identyfikator autora projektu • Project - nazwa projektu • Date - data zapisu projektu • # of runs - liczba przebiegów symulacyjnych, które mają być przeprowadzone • Attempt Execution - dokonać próby wykonania programu • Warn of Destroyed Entities - informowanie o usuwanych obiektach • Max Errors - max liczba błędów, po której ma być wstrzymana symulacja w praktyce - wystarczy tylko liczba przebiegów, domyślnie - 1
Instrukcje sterujące - LIMITS • Instrukcja LIMITS jest stosowana do zdefiniowania wielkości i struktury danych. Musi znajdować się zaraz po instrukcji GEN. • Globals - zmienne globalne systemu • Attributes - zmienne związane z obiektem my stosujemy tylko atrybuty
Instrukcje sterujące - INITIALIZE • Służy do określania czasu rozpoczęcia i zakończenia symulacji oraz do inicjalizacji statystyk, zmiennych i zbiorów • Begin time - czas rozpoczęcia przebiegu symulacyjnego • Finish time - czas zakończenia przebiegu symulacyjnego • Clear statistics between runs - jeżeli Yes wyzerowanie tablic statystyk pomiędzy przebiegami • Up to COLCT # - od tego numeru statystyki nie są zerowane między przebiegami dla nas istotny jest tylko czas zakończenia
Założenia Klienci przybywają do banku co 3 minuty. Obsługa w okienku trwa 5 minut. Zadaniem modelującego jest zbadanie, ile należy uruchomić okienek, aby w rezultacie otrzymać optymalne wyniki odnośnie do: • czasu, jakie klienci spędzali w banku • długości kolejek 3. wykorzystania okienek
Analiza systemu pod kątem budowy modelu • zmiany stanu są powodowane przemieszczaniem się klienta w systemie, tak więc obiektem w modelu jest klient • określamy węzły i czynności sieci, które reprezentują procesy podczas przepływu obiektów • każdemu obiektowi mogą być przypisane atrybuty, których wartości pozwalają na określenie czasów pobytu • określamy, jakie statystyki będą zbierane w węźle collect
Model AWESIM! - sieć węzeł QUEUE węzeł TERMINATE węzeł CREATE węzeł COLECT
Model AWESIM! – budowa sieci • w panelu głównym AWESIM! wybieramy moduł konstruktora sieci • wybrane sieci • pozostałe, dostępne • wciskamy New • otwiera się rozwijane pole wyboru węzła, które można także przywołać poprzez Edit-Add • wybieramy CREATE
Węzeł CREATE • wybieramy pozycję węzła po lewej stronie ekranu • wprowadzamy parametr Time Between • dla czasu bieżącego (TNOW) oznaczamy atrybut nr 1 (ATRIB[1]) • wciskamy OK
Węzeł QUEUE • wybieramy pozycję dla węzła na prawo od poprzedniego • nadajemy numer zbiorowi • wciskamy OK
Węzeł COLLECT • w pole Value wpisujemy określenie statystyki, która ma zostać zebrana w węźle COLLECT, czyli TNOW-ATRIB[1] • wprowadzamy nazwę w polu Identifier, np. „czas w banku”
Węzeł TERMINATE • wybieramy miejsce • wciskamy OK
Czynności • najeżdżamy kursorem na węzeł, z którego czynność wychodzi, klikamy, puszczamy mysz, najeżdżamy na drugi węzeł, klikamy • nadajemy poszczególnym czynnościom numery • dla czynności obsługi – oznaczmy czas w Duration oraz liczbę serwerów w # of servers (w ćwiczeniu czas obsługi = 5, a liczba serwerów początkowo 1)
Model AWESIM! – budowa sieci • sprawdź, czy Twoja sieć wygląda podobnie, jak poniżej • nazwij ją i zachowaj • wybierz ją i wciśnij Add • sprawdź, czy w panelu głównym pod słowem Network pojawiła się nazwa Twojej sieci
Instrukcje sterujące • wciśnij Control-New • cztery linie instrukcji są obowiązkowe • pole dialogowe otwiera się po dwukrotnym naciśnięciu nazwy (lub Edit-Insert)
Instrukcje sterujące • w instrukcji General wpisz swoje dane, nazwę projektu, datę, liczbę przebiegów 1 • w Limits – w Max Atrib – 2, do liczby wykorzystanych atrybutów dodajemy 1, z pozostałych zmiennych nie korzystaliśmy • w Net – zostawiamy wartości domyślne • dodajemy instrukcję Initialize, wpisujemy 400 w Finish Time (czas zakończenia symulacji) • Fin nie wymaga żadnych parametrów • zachowaj zestaw instrukcji i nazwij, przypisz poprzez SetCurrent
Przeprowadzenie symulacji • wciśnij Report-Output-Echo, w celu uzyskania raportu z poprawności składni sieci modelu i instrukcji sterujących • jeżeli raport Echo nie wykazał błędów – przejdź do pozycji Intermediate, czyli raportu z poprawności pod względem możliwości przeprowadzenia symulacji • raport Summary – wyniki liczbowe symulacji
Raport Summary Część nagłówkowa – informacje ogólne ** AweSim SUMMARY REPORT ** Sun Mar 15 21:50:44 2004 Simulation Project : wiczenie 4 Modeler : Wrona Date : 15/03/04 Scenario : BASECASE Run number 1 of 1 Current simulation time : 400.000000 Statistics cleared at time : 0.000000
Raport Summary Statystyki z węzła COLLECT: • średni czas klienta w banku – 84 j. czasu ** OBSERVED STATISTICS REPORT for scenario BASECASE ** Label Mean Standard Number of Minimum Maximum Value Deviation Observations Value Value CZAS W BANKU 84.000 46.476 80 5.000 163.000
Raport Summary Raport z wykorzystania zbiorów: przeciętna kolejka w zbiorze 1 – 26,6 j. czasu, zaś maksymalny czas oczekiwania – ok.. 80 j. czasu ** FILE STATISTICS REPORT for scenario BASECASE ** File Label or Average Standard Maximum Current Average Number Input Location Length Deviation Length Length Wait Time 1 QUEUE Line 3 26.668 15.404 54 53 79.604 0 Event Calendar 3.000 0.000 3 3 5.263
Raport Summary Raport z wykorzystania czynności ** ACTIVITY STATISTICS REPORT for scenario BASECASE ** Activity Label or Average Standard Entity Maximum Number Input Location Utilization Deviation Count Utilization 1 Line 2 0.000 0.000 134 1 3 Line 6 0.000 0.000 80 1 Activity Current Number Utilization 1 0 3 0
Raport Summary Raport z wykorzystania czynności obsługi: serwer w czynności obsługi 2 został wykorzystany w 100% przez czynność przeszło 80 obiektów (czyli tylu klientów zostało obsłużonych ** SERVICE ACTIVITY STATISTICS REPORT for scenario BASECASE ** Activity Label or Server Entity Average Standard Number Input Location Capacity Count Utilization Deviation 2 Line 4 1 801.000 0.000 Activity Current Average Maximum Maximum Number Utilization Blockage Idle Time Busy Time or Servers or Servers 2 1 0.000 0.000 400.000
Optymalizacja modelu • uzyskane wyniki są niezadawalające – długie kolejki oraz czasy oczekiwania na obsługę, czyli jedno okienko jest niewystarczające • dodajemy więc jeszcze jeden serwer w czynności obsługi, zachowujemy zmiany • ponawiamy symulację
Wyniki modelu po optymalizacji • średni czas obsługi przy dwóch okienkach zmalał do 5 j. czasu, czyli do samej obsługi • kolejki nie występowały • obsłużono ponad 130 klientów • wykorzystanie serwerów wyniosło ok. 80%
Założenia Kierownictwo banku zdecydowało, że nie chce otwierać drugiego okienka na stałe, ale doraźnie, gdy kolejka przekroczy kilka osób. Zadaniem modelującego jest zbadanie zależności pomiędzy maksymalną liczbą osób w kolejce 1, czasem średnio spędzonym przez klienta, liczbą klientów obsłużonych przez okienko 2 oraz wykorzystaniem okienka 2
Realizacja zastosujemy opcję Balk w węźle QUEUE • Queue capacity ustawiamy na początkowo na 3, potem będziemy zmieniać • przy akcji Balk wpisujemy nazwę węzła, do którego kierujemy obiekty po przekroczeniu pojemności kolejki • dodajemy węzeł QUEUE o etykiecie wybranej przy Balk i numerze zbioru = 2 • łączymy nowy węzeł QUEUE z węzłem COLLECT
Wyniki po kolejnych zmianach maks. długości kolejki w i węźle QUEUE otrzymano: