I.Wprowadzenie do programu

Transkrypt

I.Wprowadzenie do programu
Wprowadzenie do programu Extendsim
Wersja robocza – Jacek Zabawa 2009; Extend blocks copyright 1987-2009 Imagine That inc.
Zadanie: zbudowanie modelu symulacyjnego systemu z pojedynczym stanowiskiem obsługi.
Czas symulacji: 10 minut. Częstotliwość przybywania obiektów: średnio co 15 sekund,
odstępy wg rozkładu wykładniczego. Czas obsługi: 18 sekund. Chcemy wyświetlić wykresy
długości kolejek z 4 przebiegów (po 10 minut).
Uwagi wstępne:
Funkcjonowanie konektorów, czyli elementów łączących poszczególne bloki
Zalecane jest włączenie opcji (Model | Connection lines)
Model realizujący założenia zadania – postać graficzna
Krok 1. Przygotowanie do modelowania.
W celu reprezentacji poszczególnych części systemu wykorzystamy odpowiednie bloki
zawarte w bibliotekach (libraries) Extendsim. Potrzebne będą następujące biblioteki
standardowe:
Biblioteka zdarzeń dyskretnych (obiektów dyskretnych) (Item.LIX)
Plotter Library (Plotter.LIX)
Tworzymy nowy model, naciskając przycisk ekranowy
lub wybierając komendę menu:
File | New model. Warto od razu zmienić styl połączeń między blokami przez komendę
menu: Model | Connection Lines | Ctrl-Shift-A
Krok 2. Wczytanie wybranych bibliotek.
Zanim wprowadzimy bloki do naszego nowego modelu musimy sprawdzić czy biblioteki są
aktywne a jeśli nie to je należy wczytać:
Wczytane biblioteki można sprawdzić przez komendę menu: Library a wczytać przez Library
| Open Library. Wczytywanie np. Item oraz Plotter odbywa się następująco:
Otwieramy katalog folder z bibliotekami do wyboru
Wybieramy Item.lix i naciskamy “Open”
Powtarzamy proces dla Plotter.lix
Teraz można już wykorzystać dowolny blok z dostępnych wczytanych bibliotek przez
komendę menu: Library | tu wybieramy żądaną bibliotekę np. Item | i wybieramy grupę oraz
konkretny blok Routing – Create. Możemy także wyszukać odpowiedni blok w wykazie
alfabetycznym (w tym trybie widzimy także ikonkę bloku): Library | Item | Open Library
Window
Krok 3. Dodanie poszczególnych bloków do modelu symulacyjnego.
Najpierw wprowadzimy bloki z biblioteki Item
EXECUTIVE
Blok Executive– zarządza przebiegiem symulacji. Domyślnie symulacja trwa aż do end time
wyrażonego w jednostkach czasu (ale podawanego w okienku Run | Simulation Setup | End
simulation at time !) lub liczbie zdarzeń zliczonych w tym bloku.
Dodajemy go zawsze w pierwszej kolejności (Library | Item.lix | Executive)
Ikona koła reprezentująca blok Executive musi być pierwszą ikoną bloku licząc od strony
lewej (najlepiej żeby znajdowała się w lewym górnym rogu ekranu roboczego).
Podwójne kliknięcie otwiera okienka dialogowe sterujące działaniem bloku i dzięki temu
możemy wprowadzić zmiany parametrów standardowych.
CREATE
Blok Create (w grupie Routing) – umożliwia wprowadzenie obiektów (ang. items, units) lub
wartości liczbowych przebywających w poszczególnych blokach przez pewien czas
(symulacji). Po pierwsze należy określić tryb generowania obiektów (ang. Select Block
Behavior), najważniejsze z nich to: generowanie obiektów w losowych odstępach czasu
(Create items randomly, opcja domyślna), generowanie obiektów wg harmonogramu (Create
items by schedule) oraz generowanie wartości liczbowych w losowych odstępach czasu
(Create values randomly).
Należy określić rozkład czasu między generowaniem (pojawianiem się kolejnych obiektów,
ang. Specify a distribution for time between arrivals (TBA)) oraz jego parametr (np. mean –
średni czas między obiektami) w odpowiedniej zakładce. Można zatem zmienić typ rozkładu
lub pozostawić domyślny (Exponential - rozkład wykładniczy). Przed uruchomieniem modelu
należy sprawdzić jednostki czasu (Time units).
Omówienie zakładki Create. No item at start time –opcja niezaznaczona powoduje że w
momencie “start” pojawia się pierwszy obiekt wytworzony w bloku Create. „Maximum items
generated” – jeśli podano wartość, oznacza ograniczenie liczby obiektów wytworzonych w
Create. „Stop simulation if items are unable to leave” – Jeśli zaznaczono, to jeśli wytworzone
w bloku obiekty nie mogą być przyjęte przez żaden blok (np. wszystkie podłączone bloki są
pełne) to symulacja zostanie zatrzymana (pojawi się okienko z odpowiednim komunikatem).
Jeśli opcja nie będzie zaznaczona, to takie obiekty zostaną „zagubione”.
Blok Create dodajemy zwykle w drugiej kolejności (Library | Item | Routing | Create).
QUEUE
Blok kolejki Queue (w grupie Queues) – umożliwia przechowywanie obiektów zanim będą
mogły zająć kolejny blok (np. stanowisko obsługi). Działa jak bufor.
Tryb działania kolejki ustalany jest za pomocą ustawień w zakładkach Queue i Options. W
zakładce Queue zostawiamy domyślne ustawienie (Select queue behavior: sorted queue)
oznaczające działanie bloku jako kolejki z odpowiednim regulaminem (Select sort method).
Domyślny regulamin to (First in, first out: pierwszy przyszedł, pierwszego obsłużono). Inne
regulaminy to (Attibute value) – szeregowanie obiektów wg wartości wybranego atrybutu,
(Last in, first on) – szeregowanie jak w stosie, (Priority) – szeregowanie na podstawie
wartości tzw. priorytetu. W zakładce Options określamy (Maximum queue length) czyli
pojemność kolejki wyrażoną w liczbie obiektów, może być to również pojemność
nieskończona (Infinity ∞). Opcja (Renege items) oznacza uwzględnienie możliwości
opuszczenia kolejki przed czasem: albo po zbyt długim oczekiwaniu albo po wykryciu na
konektorze renege wartości TRUE (czyli 1). Opcja (Minimum wait time) służy zatrzymaniu
obiektu w kolejce przez określony minimalny czas nawet jeśli obiekt normalnie mógłby
kolejkę opuścić (modelowanie przenośnika lub czasu transportu). Opcja (Wait time based on
shift) umożliwia wyłączenie obliczania czasu oczekiwania w kolejce w zależności od stanu
skomunikowanego z nią bloku Shift.
Omawiany blok znajdziemy w (Library | Item.lix | Queues | Queue).
ACTIVITY
Blok modelujący działanie, operację, stanowiska obsługi – Activity. Służy zasymulowaniu
czynności trwającej przez pewien czas, wymagającej skorzystania z ograniczonych zasobów,
z tym że czas wykorzystania danej jednostki zasobu ma charakter elementarny, niepodzielny.
Umożliwia symulowanie pracy nad obiektem która trwa przez pewien czas. Najważniejsze
zakładki to Process, Shutdown i Preempt. W zakładce Process definiujemy liczbę (Define
capacity) obiektów które mogą przebywać w tym bloku jednocześnie (nazywamy to
pojemnością albo liczbą kanałów obsługi). Może być to również pojemność nieskończona
(Infinity ∞). Pojemność bloku można także regulować za pomocą konektora wejściowego C.
Następnie określamy zakładany czas (i jednostkę czasu) przebywania (obsługi) pojedynczego
obiektu w tym bloku (Delay is:). Może być to wartość podawana na konektor wejściowy D
(from the „D” connector), zadeklarowana jako stała (a constant), równa wartości danego
atrybutu (an item’s attribute value), określana jako losowa (specified by a distribution) lub
wiązać wartość danego atrybutu z parametrami wybranego rozkładu (from a lookup table).
Gdy chcemy zamodelować wielozadaniowość bloku wybieramy opcję (Simulate multitasking
activity). Zakładka Shutdown umożliwia zamodelowanie wyłączania bloku Activity, za
pomocą wysyłania odpowiedniego sygnału lub obiektu na konektor SD. Opcja (value
connection) oznacza włączanie i wyłączanie na podstawie wartości sygnału SD a opcja (item
connection) wyłączanie trwające pewien czas po pochłonięciu obiektu przez wejście SD.
Blok znajduje się w grupie: (Library | Item.lix | Activities | Activity).
EXIT
Blok „Wyjścia” Exit – umożliwia usunięcie obiektu z systemu (obiekt ginie z pola widzenia,
przestaje być dla nas interesujący). Informacja o liczbie obiektów pochłoniętych przez Exit
dostępna jest na konektorach wyjściowych.
Blok “Wyjścia” dostępny jest w (Library | Item.lix | Routing | Exit).
PLOTTER, DE MULTISIM
Blok „Wykres wielokrotnych przebiegów w modelach zdarzeń dyskretnych” Plotter, DE
Multisim – umożliwia wyświetlenie czterech ostatnich przebiegów symulacyjnych.
Blok dostępny jest w (Library | Plotter.lix | Plotter, DE Multisim).
Ogólne wskazówki dotyczące rozmieszczenia i łączenia bloków:
Bloki zazwyczaj ustawia się w jednym rzędzie w taki sposób, aby obiekty przepływały od
lewej do prawej strony. Skomunikowanie (łączenie) bloków polega na połączeniu kwadratów
z czarnymi kółkami (po prawej stronie bloku poprzedzającego) z kwadratami po lewej stronie
bloku następującego. Wykonuje się to prosto i standardowo: należy kliknąć na kwadracie,
przytrzymać i ciągnąć aż do uzyskania połączenia (prawidłowe połączenie będzie zaznaczone
grubą, zaczernioną linią).
Bloki można także łączyć za pośrednictwem napisów (named connections). Klikamy na puste
miejsce w modelu graficznym i wpisujemy ciąg znaków. Można go następnie powielić
(skopiować) w innym miejscu. Potem łączymy jeden z napisów z wyjściem bloku a drugi z
wejściem drugiego bloku.
Jeśli chcemy osadzić na pulpicie modelu obok bloków fragmenty okienek dialogowych (lub
wykresy) należy skorzystać z narzędzia Clone layer
elementy na pulpit.
i przeciągnąć żądane
Krok 4. Uruchomienie symulacji
Zaczynamy od ustalenia podstawowej jednostki czasu, długości przebiegu i liczby
przebiegów. Run | Simulation Setup, zakładka Setup.
End time oznacza moment zakończenia symulacji wyrażony w globalnej jednostce czasu.
Start time oznacza moment rozpoczęcia symulacji wyrażony w domyślnych jednostkach
czasu (domyślnie wynosi 0). Runs oznacza liczbę przebiegów (powtórzeń symulacji od Start
Time do End Time). Za pomocą (Global time units) ustalamy globalną (domyślną) jednostkę
czasu w modelu. Zalecane przyjęcie konkretnej jednostki i sprawdzenie jednostek czasu
takich jak Create, Activity itd.
Porównaj aktualne ustawienia End Time z ustawieniem bloku Executive
simulation at end time w zakładce Control.
opcji Stop
Należy następnie sprawdzić jednostki czasu w blokach Create oraz Activity i w razie potrzeby
poprawić tak aby były zgodne z założeniami.
W celu uruchomienia symulacji wybieramy Run lub klikamy zieloną strzałkę . Jeśli chcemy
zobaczyć obiekty poruszające się między blokami to włączamy animację: | Run | Show 2D
animation lub naciskamy przycisk po lewej stronie „królika” aby przybrał on kolor zielony
bez czerwonego przekreślenia. Uwaga: wykonywanie animacji zwiększa znacznie
czas obliczeń. Animację można wyłączyć przez | Run | Show animation, zniknie wtedy
"ptaszek" przy tej opcji.
Krok 5. Wykorzystanie wyników symulacji
Zebranie wyników symulacji może odbywać się w następujący sposób:
pola w zakładkach Results w poszczególnych blokach (można je „klonować” do modelu),
konektory wyjściowe poszczególnych bloków, wykresy (Plotter), zapisywanie w bazie
danych (blok Write (I)) oraz blok Information i History.
Dla sporządzenia sensownych analiz nie wystarczy pojedynczy przebieg symulacyjny.
Powinno się zapisywać istotne rezultaty po każdym przebiegu. Można także stosować analizę
wrażliwości, dokonując odpowiednich, krokowych zmian wartości parametrów symulacji (np.
intensywności strumienia zgłoszeń i obserwując zmiany wyników). Celem jest przetestowanie
różnych kombinacji strumieni wyjściowych i wielkości zasobów i reguł poruszania się
obiektów.
Krok 6. Poniżej zamieszczono model rozszerzony o losowość czasu obsługi na stanowisku
obsługi. Założenia: trójkątny rozkład czasu obsługi: (15,18,21). Wartość najbardziej
prawdopodobna wyodrębniona jako parametr.
W modelach w pakiecie EXTENDSIM obowiązują zasady pchania i ssania.
Zasada „PCHANIA” – zachodzi wypychanie obiektów – nawet jeśli przyjmujący blok nie jest
przygotowany na przyjęcie (tzn. na zassanie). Zasada „SSANIA” – bloki z wejściem
obiektowym „zasysają” obiekty poprzez konektor wejściowy i po obsłudze przesyłają na
konektor wyjściowy (jeśli taki w danym typie bloku występuje). Jeśli jednak obiekt ten nie
może opuścić (być zassanym z wyjścia przez inny blok) bloku, to następne obiekty nie
zostaną wpuszczone na wejście i wtedy obiekty te mogą być utracone. Przeciwdziałanie temu
niekorzystnemu zazwyczaj zjawisku polega na umieszczeniu w odpowiednich miejscach
kolejki – bufora (o sensownych pojemnościach).
Dodane bloki:
HISTORY
History – blok dostępny jest w (Library | Item.lix |Information | History). Używany do
rejestrowania czasu i wartości atrybutów obiektów pojawiających się w pewnym miejscu w
modelu.
RANDOM NUMBER
Random number – blok dostępny jest w (Library | Value.lix | Inputs | Random number).
Blok wysyła (w razie potrzeby) wartości liczbowe zgodnie z założonym rozkładem losowym.
Parametry rozkładu podaje się w okienku dialogowym Distributions lub pozyskuje przez
konektory wejściowe (mają pierwszeństwo).
CONSTANT
Constant - blok dostępny jest w (Library | Value.lix | Inputs | Constant).
Blok wysyła wartość pochodzącą z konektora wejściowego powiększoną o stały czynnik
wpisany w okienku dialogowym Options (Constant Value). Jeśli konektor wejściowy jest
wolny, wysyłana jest wartość tylko z okienka dialogowego.
Najważniejsze przyciski w belce narzędziowej:
1 2
3
4
5 6
7 8 9 ABC D EF G
H
1 – Tworzenie nowego modelu
2 – Otwieranie (wczytywanie) istniejącego modelu (rozszerzenie: .mox)
3 – Regulowanie skali wyświetlenia modelu (tzw. zoom)
4 – Uruchomienie symulacji
5 – Zatrzymanie symulacji w jej trakcie
6 – Wstrzymanie symulacji (tzw. pauza)
7 – Włączenie lub wyłączenie animacji. Obecnie animacja jest wyłączona
8 – Przyspieszenie animacji
9 – Spowolnienie animacji
A – Block\Text layer; tryb odpowiedni dla przesuwania bloków i wprowadzania tekstów na
pulpit; operacje na blokach i tekstach
B – Draw layer; tryb odpowiedni dla wprowadzania rysunków, tryb grafiki; operacje na
blokach rysunkowych
C – Clone layer; tryb odpowiedni dla czynności klonowania wewnętrznych okienek (i ich
części) bloków na pulpit
D – All layers; tryb odpowiedni dla czynności przesuwania wszystkich elementów
ekranowych w modelu na odpowiednie miejsce; także bezstratne kopiowanie między
okienkami;
E – Wybór koloru (tekstów, ramek itp.)
F – Wybór wzorca graficznego (np. wypełnienia ramek)
G – Shapes; wybór kształtów rysunkowych w trybie grafiki
H – Icon tools; użyteczne w budowaniu bloków hierarchicznych
Ad 4. Odpowiada poleceniu (Run | Run simulation) – skrót klawiaturowy Ctrl-R
Ad 5. Odpowiada poleceniu (Run | Stop simulation) – skrót klawiaturowy Ctrl-.
Ad 6. Odpowiada poleceniu (Run | Pause simulation) – skrót klawiaturowy Ctrl-/
Bloki sterujące symulacją w czasie rzeczywistym, spoza bibliotek
(Model | Controls)
Slider – realizuje funkcję potencjometra suwakowego w pewnym zakresie wartości
Switch – realizuje funkcję przełącznika (włączony lub wyłączony, czyli 1 lub 0)
Meter – realizuje funkcję „prędkościomierza”, „amperomierza” itp.
Bloki informacyjne, statystyczne i pomocnicze (wykonywanie obliczeń)
Information (Item) - wyświetla informacje o
obiektach przepływających przez wyznaczone miejsce
w modelu, przede wszystkim o liczbie obiektów i
czasie między pojawieniem się kolejnych obiektów.
Mean & Variance (Value) - wyświetla statystyki
(średnia, wariancja, odchylenie standardowe i rozmiar
próbki itp.) wartości podawanych na wejście.
Math (Value) występujący w wielu odmianach ikon
(tu: dodawanie, Add) blok umożliwiający
dokonywanie operacji matematycznych.
Max & Min (Value) służący do wyznaczenia
maksimum albo minimum historycznego lub bieżącego
- z wielu konektorów wejściowych (wtedy
wyznaczony jest także numer ekstremalnego konektora
wejściowego).
Statistics (Value) zbierający podstawowe wyniki
(statystyczne) z wybranej grupy bloków występujących
w modelu (np. Activities).
Equation (I) – (Item). Wykonywanie działań
matematycznych zdefiniowanych w postaci:
wynik=zmienna_1 * zmienna_2 itd. przy założeniu że
wykonywane są gdy przez blok przepływa jakiś obiekt.
Zmienne mogą pochodzić z konektorów wejściowych
lub atrybutów przepływających obiektów.
Equation (Value) – (Value). Wykonywanie działań
matematycznych zdefiniowanych w postaci:
wynik=zmienna_1 * zmienna_2 itd. Zmienne
(argumenty funkcji) mogą pochodzić z konektorów
wejściowych.