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.