1. Opis programu Arena
1.1.
Informacje ogólne o programie
Arena jest produktem firmy Rockwell Software
. Jest to pakiet dający możliwość
tworzenia modeli symulacyjnych w obszarze wytwarzania, transportu, magazynowania,
logistyki, dystrybucji, komunikacji i sprzeda
ży. Podstawowe wymagania sprzętowe to:
Microsoft Windows 95 (OSR–2) / 98, NT 4.0 (Service Pack 5 lub późniejszy), Windows
2000,
75 – 200 MB wolnego miejsca na dysku (w zależności od instalowanych opcji),
32 MB RAM (zalecane 64 MB lub więcej, w zależności od systemu operacyjnego),
zalecany jest procesor Pentium 300 MHz (lub wyższy).
Arena
jest w pełni kompatybilna z innymi aplikacjami Windows, wykorzystuje także
techniki OLE (Object Linking & Embeding) i ODBC (Open Database Connectivity). Poprzez
mechanizm OLE
można dołączać do modelu elementy typu „clipart”, części arkuszy
kalkulacyjnych (Excel
), dokumentów (Word) i prezentacji PowerPoint. Poprzez ODBC można
importować lub eksportować dane z modelu do arkuszy kalkulacyjnych i baz danych (np.
Acces, FoxPro, dBase). Arena
umożliwia import rysunków zapisanych w formacie .dxf
(programy CAD) oraz .vsd (Visio Drawing).
Arena
posiada kilka użytecznych aplikacji, które wspomagają proces tworzenia modelu
oraz opracowanie danych wejściowych i wyjściowych:
Input Analyzer jest uruchamiany poleceniem Tools / Input Analyzer. Może być używany
w celu dopasowywania rozkładów prawdopodobieństwa do wejściowych danych,
pochodzących np. z pomiarów dokonywanych w trakcie pracy systemu oraz dobierania
parametrów rozkładów tak, aby najlepiej oddawały charakter danych. Każdy tekstowy
plik, w którym dane są rozdzielone spacją, tabulatorem lub Enterem, jest odczytywany
przez Analyzera.
Rozkłady prawdopodobieństwa są dwojakiego rodzaju: teoretyczne – bazują na
matematycznych formułach i empiryczne – po dokonaniu podziału danych na grupy
oceniają wartości danych w każdej grupie. Każdy rozkład może być dyskretny, czyli
zwraca tylko wartości całkowite (np. rozkład Poissona) lub ciągły – zwraca wartości
rzeczywiste (np. wykładniczy, normalny). Analyzer wyświetla dane w postaci słupków i
dopasowuje rozkład, ale to użytkownik decyduje o wyborze rodzaju rozkładu.
Poprawność dopasowania jest sprawdzana trzema sposobami: średnie odchylenie
kwadratowe, test Chi
– Kwadrat i test Kołmogorowa – Smirnowa.
2
Process Analyzer (PAN) jest uruchamiany poleceniem Tools / Process Analyzer, działa
na plikach z rozszerzeniem .p
, które są generowane podczas symulacji modelu. PAN
pomaga użytkownikowi zorganizować symulację różnych konfiguracji modelu i wybrać
na
jlepszą z nich, w oparciu o przeprowadzoną analizę statystyczną otrzymanych
wyników. Po otwarciu okna PAN można stworzyć nowy projekt, który będzie zawierał
kilka scenariuszy. Scenariusz składa się z pliku programu z rozszerzeniem .p, zbioru
wartości wybranych parametrów wejściowych modelu (Controls) oraz zbioru wybranych
parametrów, których wartości otrzymuje się w wyniku symulacji (Responses). Aby
skutecznie wykorzystać możliwości PAN, należy – budując model – zdefiniować
odpowiednie zmienne, które następnie będzie można wykorzystać w scenariuszach.
Zmieniając wartości zmiennych i liczbę sztuk zasobów buduje się wiele scenariuszy, z
których PAN pomaga wybrać optymalny.
Output Analyzer jest aplikacją niezależną od Areny. Nie jest instalowany domyślnie
razem z
Areną, należy wybrać instalację „custom” i zaznaczyć odpowiednią opcję. Działa
na plikach wyjściowych z rozszerzeniem .dat, utworzonych w Arenie np. przez moduł
Statistic.
Są to pliki o nazwie określonej w polu Output File, np. plik.dat. Output Analyzer
pozwala wyznaczać przedziały ufności, przeprowadzać statystyczne porównania,
przedstawiać graficznie wyniki symulacji, filtrować dane, odrzucając wartości pochodzące
z okresu rozruchu (Warm
– Up) itp.
OptQuest jest uruchamiany poleceniem Tools / OptQuest for Arena. Służy do
poszukiwania optymalnej konfiguracji modelu (czyli optymalnego zestawu wartości
zmiennych) dla zadanego kryterium (np. minimalizacja kosztu). Jeżeli liczba zmiennych
jest duża, to sprawdzenie wszystkich kombinacji wartości zmiennych w PAN wymagałoby
zdefiniowania bardzo dużej liczby scenariuszy. OptQuest poszukuje rozwiązania
optymalnego wykorzystując heurystyki Tabu Search i Scatter Search. Zadając zakresy
wartości poszczególnych zmiennych oraz ich wartości początkowe, można określić
ograniczenia, jakie wartości zmiennych muszą spełniać.
Visual Basic pozwala użytkownikowi na tworzenie własnego kodu, który poszerza
możliwości Areny. W ten sposób można dodawać nowe zmienne animacji, pobierać
wartości wyjściowych statystyk, otrzymanych w trakcie symulacji, zmieniać wartości
parametrów modułów itp. Kod jest przechowywany razem z modelem w pliku .doe.
Poleceniem Tools / Show Visual Basic Editor
otwiera się edytor Basica, w którym można
bezpośrednio wprowadzać kod. Za pośrednictwem Basica można współpracować z
innymi aplikacjami Microsoft Office, np. Excel.
3
Podstawą Areny jest język symulacyjny SIMAN. Arena jest narzędziem przyjaznym
dla użytkownika, łatwo, przejrzyście i szybko daje dostęp do wszystkich funkcji języka
SIMAN
, nie wymagając jego znajomości. Istnieje możliwość bezpośredniego operowania na
kodzie SIMAN (polecenie Run / Run Control / Command
), co pozwala np. wykryć błędy,
sprawdzić działanie modelu. Wymaga to jednak znajomości komend języka. Po
uruchomieniu symulacji, Arena sprawdza model i generuje pliki z kodem SIMAN (pliki z
rozszerzeniem .mod i .exp
). Można również zobaczyć wygenerowany kod (polecenie Run /
SIMAN / View
) lub pisać własny (polecenie Run / SIMAN / Write). Panele Blocks i Elements
dają pełen dostęp do możliwości języka SIMAN, operując bezpośrednio na nim. Zawierają
wszystkie moduły z podstawowych trzech paneli (Basic Process, Advanced Process,
Advanced Transfer
) oraz dodatkowe, które zwiększają elastyczność modelowania.
Build Expression
jest bardzo użytecznym narzędziem dostarczanym przez Arenę.
Wspomaga budowanie różnego typu wyrażeń, także tych bardzo złożonych. Nie wymaga
znajomości składni wyrażenia, nazw i skrótów nazw zmiennych itp. Build jest wywoływany
kliknięciem prawego przycisku myszki w każdym polu, w którym można wprowadzić
wyrażenie liczbowe. Następnie wybiera się polecenie Build Expression. W efekcie pojawi się
okno
Builder’a. Przykładowe okno jest widoczne na rysunku.
Okno Build Expression
4
Obszar Expression Type
zawiera zmienne, atrybuty, rozkłady itp., pogrupowane
tematycznie, które mogą być elementami składowymi wyrażenia. Po kliknięciu myszką na
wybranej pozycji (np. Number In Process), w polu Current Expression pojawi
a się wybrany
element w odpowiedniej postaci i składni (Process 1.WIP), z domyślnym argumentem
(Process 1
) oraz w prawym górnym rogu ukazuje się jedno lub więcej okienko (w tym
przypadku jedno
– Process Name), w którym wybiera się argument dla danego wyrażenia
(okienka nie muszą się pojawiać, zależy to od wybranej pozycji). Po jego wybraniu,
wyrażenie przybiera postać Assembly Process.WIP. Przy wprowadzaniu symboli (w tym
przypadku = 0
) można korzystać z klawiatury lub z przycisków dostępnych w oknie.
Two
rzenie modelu polega na wyborze i umieszczeniu składowych elementów
(modułów) w głównym oknie modelu, odpowiednim ich połączeniu i zdefiniowaniu
parametrów. Arena automatycznie generuje kody źródłowe do symulacji (w języku
symulacyjnym SIMAN) i animacji (CINEMA).
Po otwarciu programu pojawia się okno nowego modelu.
Okno programu Arena
Częściami składowymi okna programu są:
Paski
narzędzi
Status Bar
Główne
okno
modelu
Project
Bar
Okno
danych
5
główne okno modelu (Flowchart View) zawiera elementy graficzne modelu, takie jak
schemat modelu, animację. Dwukrotne kliknięcie myszką na wybranym module otwiera
okno dialogowe, w którym można edytować dane. Dostęp do niektórych danych można
mieć tylko poprzez okno danych.
okno danych (Spreadsheet View) zawiera wszystkie dane dotyczące poszczególnych
obiektów modelu, np. nazwa, atrybuty, czas. Pojedyncze kliknięcie na wybranym module
w oknie głównym lub w Project Bar otwiera arkusz, w którym zgrupowane są dane
dotyczące wszystkich modułów wybranego typu umieszczonych w modelu. Okno danych
może być ukryte lub wyświetlone. Służy do tego opcja View / Split Screen lub ikonka
Toggle Split Screen
w pasku narzędzi Standard.
paski narzędzi pozwalają na szybszy dostęp do wielu funkcji, które znajdują się także w
głównym menu. Niektóre funkcje są dostępne tylko poprzez paski narzędzi.
Project Bar zawiera panele, w których umieszczone są moduły. Panele można
wyświetlać lub ukrywać za pomocą polecenia File / Template lub ikonek w pasku
narzędzi Standard (Template Attach / Detach). Klikając w Project Bar na zakładkę
wybranego panelu wyświetla się jego zawartość. Zakładka Reports zawiera spis kategorii
raportu, który jest wynikiem symulacji. Zakładka Navigate ułatwia poruszanie się po
modelu złożonym z wielu części (podmodele, animacja, wykresy itp.). Okno można ukryć
używając polecenia View / Project Bar.
Status Bar pokazuje informacje różnego typu, w zależności od aktualnie wykonywanej
czynności, np. współrzędne kursora myszki, nazwę wybranego obiektu, dane dotyczące
symula
cji w trakcie jej przeprowadzania. Okno można ukryć używając polecenia View /
Status Bar.
Zgodność Areny ze środowiskiem Windows powoduje, że większość operacji w Arenie
wykonywanych jest tak samo, jak w aplikacjach Windows (kopiowanie, zapisywanie, cofanie
operacji, drukowanie itp.).
1.2. Ograniczenia programu Arena
Akademicka wersja Areny jest przeznaczona tylko do nauki programu (np. na
uczelniach), w związku z tym posiada pewne ograniczenia. Budując model, można
korzystać prawie z wszystkich paneli (oprócz prywatnych paneli CSUtil i UtlArena), wszystkie
aplikacje (np. Output Analyzer, Visual Basic
) także są dostępne. Jednak nie można tworzyć
dużych modeli, ponieważ ustawiony jest limit na liczbę modułów używanych w jednym
modelu. Limit wynosi 50 wierszy mod
ułów (blokowych i danych), co pozwala na
modelowanie niewielkiego systemu (część modułów zajmuje więcej, niż jeden wiersz, np.
moduł Process dodaje do modelu trzy wiersze). Limit dla panelu Script i Contact Data jest
6
mniejszy
– 17 wierszy, a dla panelu Packaging – 10. Przekroczenie dozwolonej liczby
wierszy ma swoje następstwa – nie można zapisać modelu, ani uruchomić jego symulacji.
Jest to poważne ograniczenie możliwości użytkownika, nie pozwalające mu budować
złożonych systemów, a także zbytnio wnikać w szczegóły sztuki modelowania.
Kolejne ograniczenie związane jest z przeprowadzaniem symulacji modelu. W trakcie
symulacji liczba jednostek w systemie (czyli suma jednostek we wszystkich modułach) nie
może przekraczać 100 sztuk. Przekroczenie tego limitu powoduje wygenerowanie błędu i
przerwanie symulacji.
Inne ograniczenie jest narzucone na tworzenie animacji, która także nie może być zbyt
złożona, składająca się z wielu szczegółów. Dopuszczalna liczba obiektów graficznych to 50.
1.3.
Podstawowe definicje związane z programem
Jednostka (entity) jest dynamicznym obiektem w symulacji. Jest tworzona,
przemieszczana wewnątrz systemu, podlega obróbce lub obsłudze, a następnie jest
usuwana z systemu. Jednostką może być część, która wymaga obróbki w systemie
wytwarza
nia, rozmowa telefoniczna przychodząca np. do call center, klient, który czeka na
obsługę np. w banku lub urzędzie itp. System może zawierać wiele typów jednostek, każdy
typ jednostki może posiadać wiele ich rodzajów. Przykładowo, w systemie są do obsłużenia
klienci i rozmowy telefoniczne. Klientów można podzielić np. ze względu na rodzaj sprawy,
którą mają do załatwienia lub ze względu na rodzaj personelu wymaganego do obsługi.
Atrybut (attribute) opisuje cechy charakterystyczne jednostek, np. rodzaj, cz
as obsługi,
różnego typu koszty. Atrybut jest wspólny dla wszystkich jednostek, ale zazwyczaj nie
wszystkie jednostki mają taką samą jego wartość. To powoduje, że jednostki różnią się
pomiędzy sobą. Użytkownik może nadawać jednostkom własne atrybuty lub przydzielać
nazwę, wartość do atrybutów automatycznie dołączonych do jednostek.
Zmienna (variable
) opisuje cechy charakterystyczne systemu. Zmienna może być
definiowana przez użytkownika (np. współczynniki, czas czekania na obsługę) lub
wbudowana w program
(np. czas symulacji, liczba jednostek w kolejce). Może mieć postać
wektora lub macierzy. Jest szeroko wykorzystywana w modelowaniu, posiada wiele
użytecznych zastosowań.
Kolejka (queue
) jest miejscem, gdzie jednostki czekają np. na zajęcie zasobu, który
aktualnie obsługuje inną jednostkę. Po zwolnieniu zasobu, pierwsza czekająca jednostka
opuszcza kolejkę i przywłaszcza sobie zasób. Podczas animacji można zobaczyć, ile
7
jednostek czeka w każdej kolejce. Można ustawiać maksymalną długość kolejki, określać
r
eguły kolejkowania (np. FIFO, LIFO) itp.
Stacja (station
) jest miejscem w systemie, gdzie zachodzą pewnego typu procesy, np.
obróbka danego rodzaju jednostek, przybycie jednostek. Najczęściej stacje powiązane są z
przemieszczaniem się jednostek, definiując miejsca bieżącego pobytu i miejsca
przeznaczenia. Stacje mogą być punktem początkowym sekwencji modułów, zakończonej
np. modułem transportującym jednostki do innej stacji.
Zasób (resource) to dobro obecne w systemie (np. ludzie, maszyny, wyposażenie,
m
iejsce w magazynie), o które rywalizują jednostki. Jednostki, przechodząc przez system,
podlegają obróbce, obsłudze różnego typu. W tym celu zajmują określony zasób (lub
zasoby) i zwalniają go po zakończeniu procesu.
Podmodel (submodel) jest dogodnym spo
sobem modelowania dużych, złożonych
systemów. Dzieląc taki system na mniejsze części (podmodele), które mogą na siebie
oddziaływać lub nie, tworzy się hierarchicznie zorganizowany model. Można oddzielnie
sprawdzić działanie, poprawność każdego z podmodeli, a następnie połączyć je ze sobą.
1.4.
Główne menu programu
Z głównego menu można wybrać większość funkcji dostępnych w Arenie. Część z nich
dostępna jest także w paskach narzędzi, natomiast niektóre funkcje można uruchomić tylko z
pasków narzędzi.
menu File
Menu pozwala tworzyć nowe modele, otwierać,
zapisywać i zamykać istniejące, dołączać i ukrywać
panele z modułami w Project Bar. Umożliwia
importowanie rysunków z programów CAD zapisanych
w formacie .dxf
(które będą tłem animacji lub aktywnymi
jej częściami, np. maszynami) oraz z programu Visio
Drawing w formacie .vsd
. Można zdefiniować nową
paletę kolorów, zapisać ją i później ponownie otworzyć.
Dostępna jest opcja drukowania i wysyłania e–maili
bezpośrednio z Areny, do których można dołączyć
8
aktywny mode
l. Program pamięta również ostatnio otwarte pliki. Polecenie Exit zamyka
program.
menu Edit
Większość opcji dostępna w tym menu jest znana z innych
programów Windows. Można cofnąć i ponowić czynności,
wyciąć, kopiować i wklejać wybrane obiekty. Można też wkleić
link do dokumentu, który jest w schowku (Paste Link), a potem
zmodyfikować go (Links). Kolejne polecenia pozwalają
zduplikować, usunąć wybrany obiekt, a także zaznaczyć lub
odznaczyć obiekty w modelu. Opcja Entity Picture pozwala
zmieniać wygląd jednostek zdefiniowanych w modelu, a także
tworzyć nowe symbole jednostek i dołączać je do bibliotek
(pliki .plb). Polecenie Find
wyszukuje podany ciąg znaków w
modułach, a Properties pokazuje dodatkowe właściwości
obiektów. Insert New Object umożliwia wstawianie obiektów z
innych aplikacji, np. grafiki, dźwięku, arkusza kalkulacyjnego, a
następnie ich edycję (Obiekt).
menu View
Menu pozwala ustawić pożądany widok głównego okna
modelu za pomocą opcji Zoom, a także Views. Opcja
Named Views
umożliwia zdefiniowanie widoków poprzez
przypisanie danemu widokowi okna nazwy i klawisza
skrótu, co pozwala wywołać go w dowolnej chwili.
Kolejne trzy opcje to włączanie i ustawianie siatki oraz
automatyczne
dociąganie
do
linii
siatki
przemieszczanych
obiektów.
Layers
służy
do
definiowania warstw. Toolbars
pozwala wybrać, które
paski narzędzi będą widoczne. Zaznaczone pozostałe
opcje pokazują okno danych, Project Bar i Status Bar.
menu Tools
Arena
współpracuje z kilkoma
modułami,
które
można
wywołać z menu Tools. Input
9
Analyzer
dopasowuje rozkład statystyczny do danych pochodzących z obserwacji
rzeczywistego systemu. Process Analyzer
pomaga stworzyć wiele wersji symulacji i
analizować otrzymane wyniki. Contact Center dostarcza specjalne funkcje do modelowania
contact / c
all centers. Kolejne dwie opcje pozwalają importować i eksportować dane z/do
Access i Excel. OptQuest
pomaga wybrać takie ustawienia wejść modelu, aby uzyskać
określone wartości wyjść. Show Visual Basic Editor otwiera okno, w którym można zapisać
kod w języku Visual Basic. Options modyfikuje ustawienia Areny.
menu Arrange
Menu pozwala operować wybranymi modułami i elementami grafiki:
przesuwać na wierzch lub pod spód, grupować i rozgrupować,
odwracać obiekty dookoła linii w wybranym kierunku oraz obracać o
90
0
zgodnie z ruchem wskazówek zegara. Align ustawia obiekty
według ich górnego, dolnego, lewego lub prawego brzegu. Distribute
rozmieszcza obiekty równomiernie w poziomie lub w pionie, w
zdefiniowanej odległości. Flowchart Alignment rozmieszcza wybrane
moduły równomiernie w poziomie i w pionie. Snap to Grid ustawia
wybrane obiekty według linii siatki. Można także zmieniać punkty,
według których obiekty będą dociągane do siatki.
menu Object
Menu zawiera polecenia związane z logicznymi
połączeniami pomiędzy modułami. Connect pozwala
połączyć
dwa
moduły,
Auto
–
Connect
automatycznie
łączy
wstawiany
moduł
z
zaznaczonym modułem. Smart Connect sprawia, że
linie łączące moduły są wzajemnie równoległe i
prostopadłe. Zaznaczona opcja Animate Connectors
pokazuje
przemieszczające się jednostki w czasie
symulacji. Submodel
pozwala tworzyć model w
formie hierarchicznie zależnych podmodeli.
menu Run
Menu zawiera polecenia związane z przeprowadzaniem symulacji. Setup pozwala ustawić
parametry symulacji. Go uruchamia
lub wznawia symulację po przerwaniu, Step pozwala na
wykonanie jednego kroku symulacji, Fast
– Forward uruchamia symulację w szybkim tempie,
nie pokazując animacji. Pause zatrzymuje symulację, ponownie uruchomić można ją za
10
pomocą Go, Step lub Fast – Forward, Start Over pozwala powtórnie przeprowadzić
symulację, End umożliwia wyjście z trybu
symulacji do trybu modelowania. Check Model
sprawdza poprawność modelu przed jego
uruchomieniem, Review Errors przypomina
ostatnio wykryte błędy i uwagi. Run Control
d
ostarcza szeregu opcji użytecznych podczas
symulacji. Command
udostępnia okno, w którym
można zmieniać sposób działania programu,
Break
przerywa symulację w określonym
momencie, Break on Module
– na określonym
module. Watch
umożliwia śledzenie zmiennych
lub realizacji procesu. Highlight Active Module
podświetla w trakcie symulacji aktywny moduł.
Zaznaczenie Batch Run
przeprowadza symulację bez animacji. Polecenie SIMAN pozwala
ingerować w generowany automatycznie kod języka SIMAN.
menu Window
Menu umożliwia operowanie wyglądem kilku jednocześnie
otwartych okien, rozmieszczając je kaskadowo lub tak, że nie
zachodzą na siebie. Arrange Icons szereguje ikony wielu
zminimalizowanych okien. Można także wybierać pomiędzy
ustawieniami koloru tła użytkownika i systemowymi. Przejście
do wybranego okna otwartego modelu umożliwia lista w dolnej
części menu.
menu Help
Arena posiada bardzo rozbudowany
system
pomocy,
zawierający
objaśnienia
do
większości
opcji,
modułów,
aż
po
rozbudowane
przykłady modeli. Z każdego modułu
można
bezpośrednio
przejść
do
pomocy na jego temat. Arena Help
Topics
to kompletna pomoc, po której można się poruszać poprzez zakładki Zawartość,
Indeks, Znajdź. Using Help zawiera informacje o sposobie korzystania z pomocy. Następne
trzy opcje pozwal
ają przejść bezpośrednio do pomocy na temat trzech głównych paneli
11
wykorzystywanych w modelowaniu. Pozostałe trzy opcje zawierają linki do pomocy online i
informacji o używanej wersji programu.
1.5.
Paski narzędzi
Arena
posiada 8 pasków narzędzi z wieloma przyciskami. Część poleceń
uruchamianych z pasków jest także dostępna w głównym menu. Niektóre polecenia są
osiągalne tylko poprzez ikonki widoczne w paskach narzędziowych. Wybierając View /
Toolbar
można ustawić, które z nich mają być widoczne.
pasek narzędzi Standard
Pozwala otworzyć nowy lub już istniejący model, zapisać aktywny model, dołączyć
(Template Attach
) lub ukryć (Template Detach) panel z modułami w Project Bar. Dostępne
są również opcje drukuj, podgląd wydruku, wytnij, kopiuj, wklej, cofnij i ponów. Przycisk
Toggle Split Screen pokazuje lub ukrywa okno danych, View a Region
umożliwia
powiększenie wybranej części modelu, Zoom – ustawienie wielkości widoku dla całego okna.
Layers poz
wala definiować warstwy, Submodel – podmodele, a Connect – połączenia
pomiędzy modułami. Ostatni przycisk wywołuje pomoc programu Arena. Pozostałe sześć
przycisków związanych jest ze sterowaniem symulacją, dostępne są także w menu Run.
pasek narzędzi Draw
Pozwala rysować linie proste i łamane, łuki i krzywe, prostokąty, wielokąty i elipsy oraz
wstawiać tekst. Można także ustawiać kolor linii, wypełnienia, tekstu oraz tła głównego okna
mo
delu. Poza tym można wybrać styl linii i styl wypełnienia. Wciśnięty klawisz Shift podczas
rysowania pozwala narysować:
– linię poziomo, pionowo lub pod kątem 45
0
,
– krzywą / linię łamaną / wielokąt, których odcinki od punktu do punktu będą pionowe,
poziome l
ub pod kątem 45
0
,
– kwadrat zamiast prostokąta, koło zamiast elipsy.
12
pasek narzędzi Animate
Pozwala dołączać dodatkowe elementy do tworzonej animacji modelu lub poprawiać
standardową animację zawartą w niektórych modułach. Po kliknięciu na przycisk należy
wypełnić okno dialogowe, które się pojawi i umieścić element w modelu. Tym sposobem
można dodać:
– zegar (Clock) i datę (Date) wskazujące czas i dzień symulacji,
– pole zmiennej (Variable) i poziomu wartości (Level) danego wyrażenia, których
zmieniająca się w trakcie symulacji wartość będzie widoczna na ekranie,
– histogram (Histogram) i wykres (Plot) pokazujący graficznie zmiany danego
wyrażenia,
– zdefiniować inny wygląd i właściwości kolejki (Queue) i zasobu (Resource),
– globalny rysunek (Global) dla danego wyrażenia, który będzie się zmieniał wraz ze
zmianą jego wartości.
pasek narzędzi Animate Transfer
Pozwala dołączać nowe elementy animacji modelu, np. magazyn, obszar parkowania,
transporter, stacje, skrzyżowania, drogi transportu, segmenty przenośnika taśmowego.
pasek narzędzi View
Pozwala na szybszy dos
tęp do funkcji dostępnych w menu głównym View, np. tworzenie
widoków okien, powiększanie i pomniejszanie, ogólny i poprzedni widok, pokazanie siatki i
możliwość automatycznego dociągania do niej.
13
pasek narzędzi Arrange
Pozwala na szybszy dostęp do funkcji dostępnych w menu głównym Arrange np. przesuń na
wierzch lub pod spód, grupuj / rozgrupuj, odwracanie i obrót, ustawianie na górze, na dole, z
prawej, z lewej, rozmieszczanie.
pasek narzędzi Run Interaction
Pozwala na szybszy dostęp do funkcji dostępnych w menu głównym Run, np. sprawdzanie
poprawności modelu (Check), dostęp do okna poleceń pozwalającego ingerować w przebieg
programu (Command
), możliwość przerwania symulacji w danym momencie (Break) lub na
danym module (Break on Module
), śledzenie wartości zmiennych (Watch), widoczność lub
nie jednostek przesuwających się wzdłuż połączeń w trakcie animacji (Animate Connectors).
pasek narzędzi Integration
Pozwala na szybki dostęp do modułu, który przesyła dane do / z Areny (Module Data
Transfer
) oraz uzyskać dostęp do Visual Basica.
14
2. Podstawowe panele programu Arena
Panele można wyświetlać lub ukrywać za pomocą polecenia File / Template lub ikonek
z paska narzędzi Standard (polecenie Template Attach / Detach). Panele są plikami z
rozszerzeniem .tpo
, zawierają moduły używane w trakcie tworzenia modelu. Podstawowe
panele, za pomocą których można zbudować większość modeli, to Basic Process, Advanced
Process i Advanced Transfer
. Rzadziej używane są Blocks i Elements, które dają pełny
dostęp do języka SIMAN. Pozostałe panele zawierają specjalistyczne moduły, przydatne np.
w modelowaniu contact center.
Podstawowe typy modułów to:
moduły blokowe – są obiektami, które opisują dynamiczne procesy modelu. Można je
umieścić w oknie głównym i połączyć ze sobą, definiując tym samym przepływ jednostek.
W trzech podsta
wowych panelach moduły blokowe najczęściej mają kształt prostokąta z
kolorowym wypełnieniem (żółte, różowe, zielone, niebieskie). Przeniesienie modułu z
panelu do głównego okna odbywa się poprzez „złapanie” ikonki modułu lewym klawiszem
myszki i „przeciągnięcie” go do okna. Jednocześnie w oknie danych pojawia się pasek z
danymi do edycji. Po otwarciu okna dialogowego dowolnego modułu, pierwszym polem w
górnym, lewym rogu jest pole Name. Wprowadzona tam nazwa pojawi się na symbolu
modułu (czyli na kolorowym prostokącie), widocznym w modelu. Nazwy np. stacji,
kolejek, środków transportu należy wprowadzać w pola zatytułowane – odpowiednio –
Station Name, Queue Name, Transporter Name
. Wszystkie nazwy muszą być unikalne,
nie mogą się powtarzać.
moduły danych – definiują różne elementy procesu, np. jednostki, zasoby, kolejki,
zmienne, statystyki. Można je edytować tylko w oknie danych, gdyż nie są widoczne w
głównym oknie. W tym celu należy kliknąć na ikonkę modułu widoczną w Project Bar.
Kliknięcie prawym klawiszem myszki na wybrany pasek w oknie danych i wybranie opcji
Edit via Dialog
pozwoli na edytowanie modułu w okienku dialogowym. Moduły danych
wyglądają tak samo w każdym panelu, ikonka ma postać szaro – niebieskiej tabelki.
Moduł danych może zostać utworzony przez użytkownika lub automatycznie przez
program. Przykładowo, umieszczenie w modelu modułu blokowego, który wykorzystuje
np. zasób, kolejkę, zmienną, spowoduje pojawienie się wiersza w odpowiednim module
danych
– w tym przypadku Resource, Queue, Variable.
15
2.1.
Charakterystyka modułów z panelu Basic Process
Basic Process
zawiera moduły, które są niezbędne do zbudowania każdego modelu.
Często wystarczają, aby zbudować prosty model. Niektóre moduły, np. Create, Dispose,
muszą się znaleźć w każdym modelu. W skład panelu wchodzą następujące moduły
blokowe:
Assign jest stosowany do przydzielania nowej wartości zmiennym,
atrybutom jednostek i innym zmiennym systemowym. W
pojedynczym module można przypisać wartości wielu zmiennym,
atrybutom itp. Jednostce wchodzącej do modułu zostają przypisane
atrybuty, które ten moduł zawiera, w kolejności, w której są
wprowadzone do modułu. Oznacza to, że definiując atrybuty można
się opierać na tych określonych wcześniej, np. określenie na
początku, jakiego typu jest jednostka pozwoli później na przypisanie
atrybutów danym typom jednostek. Jednostka wchodząca do
modułu powoduje przypisanie nowych wartości wszystkim
zmiennym, które są w nim wymienione. Łącząc moduł Assign z modułem Record można
zbierać dodatkowe statystyki, np. czas pomiędzy zdarzeniami. Opcja Variable w polu
Assignments
nie pozwala przypisywać zmiennych tablicowych, do tego celu należy
używać opcji Other.
Batch jest modułem grupującym jednostki (wszystkie lub o wskazanym atrybucie) w
grupy o wielkości zdefiniowanej w polu Batch Size. Jednostka wchodząca do modułu jest
umieszczana w kolejce, dopóki nie zbierze się ich wymagana ilość. Wtedy opuszczają
moduł jako grupa jednostek. Grupować można na stałe (opcja Permanent), jeśli
informacje o poszczególnych członkach grupy nie będą wymagane w dalszej części
modelu lub tymczasowo (opcja Temporary)
– taka grupa musi być potem rozdzielona za
pomocą modułu Separate. Każda grupa posiada swojego przedstawiciela (representative
entity
), tworzonego w trakcie formowania się grupy, który przejmuje cechy
charakterystyczne poszczególnych jednostek z grupy. Jego atrybuty zależą od typu grupy
i opcji wybranej w polu Save Criterion
w następujący sposób:
– jeśli grupa jest stała, to wewnętrzne atrybuty każdej jednostki związane z czasem i
kosztami są sumowane i przydzielane przedstawicielowi, a atrybut Entity.CreateTime
jest obliczany jako minimalna wartość tego atrybutu wśród członków grupy. Atrybuty
specjalnego przeznaczenia (np. Entity.Sequence, Entity.Type
) mają takie wartości, jak
pier
wszy członek w grupie, jeżeli w Save Criterion wybrana jest opcja First, Sum lub
Product. Opcja Last
powoduje przydzielenie takich wartości atrybutom specjalnego
przeznaczenia, jak posiadane przez ostatniego członka w grupie. Wartości atrybutów
16
przydzielan
ych przedstawicielowi, które zdefiniował użytkownik, są takie, jak
pierwszego lub ostatniego członka w grupie (opcja First lub Last). Opcja Product
powoduje pomnożenie wartości atrybutu przez liczbę członków w grupie, a opcja Sum
– zsumowanie wartości tyle razy, ilu jest członków.
– jeśli grupa jest tymczasowa, to wewnętrzne atrybuty przedstawiciela, związane z
czasem i kosztami, są ustawiane jako zero, a atrybut Entity.CreateTime jest czasem
utworzenia grupy. Atrybuty specjalnego przeznaczenia (np. Entity.Sequence,
Entity.Type
) mają takie wartości, jak pierwszy członek w grupie, jeżeli w Save Criterion
wybrana jest opcja First, Sum lub Product. Opcja Last powoduje przydzielenie takich
wartości atrybutom specjalnego przeznaczenia, jak posiadane przez ostatniego
członka w grupie. Wartości atrybutów przydzielanych przedstawicielowi, które
zdefiniował użytkownik, są takie, jak pierwszego lub ostatniego członka w grupie
(opcja First lub Last). Opcja Product
powoduje pomnożenie wartości atrybutu przez
liczbę członków w grupie, a opcja Sum – zsumowanie wartości tyle razy, ilu jest
członków.
Po rozdzieleniu tymczasowej grupy
– za pomocą modułu Separate – przedstawiciel
grupy zostaje usunięty, a jednostki odzyskują niektóre swoje atrybuty o wartościach
takich, jakie mia
ły przed zgrupowaniem. Obok modułu pojawia się liczba, która w trakcie
symulacji wskazuje, ile jednostek czeka w danej chwili w kolejce.
Create tworzy jednostki na wejściu modelu. Jest modułem, który musi się znajdować w
każdym modelu. Pozwala określić typ przybywających jednostek (Entity Type), można to
zrobić także w module Assign, nadając wartości atrybutowi Entity.Type. Zdefiniowane
typy jednostek pojawią się automatycznie w module Entity, gdzie można zmieniać
domyślne ustawienia. Czas pomiędzy przybyciami kolejnych jednostek może być
określony planem (opcja Schedule w polu Type), który należy zdefiniować w module
Schedule
, wybierając w nim w polu Type opcję Arrival. Inny sposób określenia częstości
przybyć jednostek to podanie stałej liczby (Constant) lub wyrażenia (Expression), które
najczęściej zawiera rozkład wykładniczy Expo, najbardziej odpowiedni w tym celu. Wtedy
w polu Value
wprowadza się wartość średnią, a w polu Units – jednostki czasu. Pole
Entities per Arrival
służy do określenia, ile jednostek przybywa jednocześnie w danym
czasie, przy czym przybywające jednostki nie tworzą grupy. Pole Max Arrivals podaje
liczbę jednostek wprowadzonych do systemu podczas całej symulacji, przy czym Infinite
oznacza, że nie ma takiego ograniczenia. First Creation wskazuje, kiedy ma przybyć
pierwsza jednostka. Jednostce tworzonej przez moduł zostaje przypisanych
automatycznie kilka zmiennych, do których można się odwoływać w modelu, m. in.
Entity.CreateTime
– czas przybycia, Entity.SerialNumber – unikalny numer jednostki.
17
Decide jest modułem, który „podejmuje decyzje”, w którą gałąź jednostka ma być
skierowana, czyli którą trasą ma podążyć. Decyzje oparte są na warunkach (Condition)
lub prawdopodobieństwie (Chance). Jeśli jest jeden warunek (opcja 2 – way by
Condition
), wtedy moduł ma dwie gałęzie, przez które przechodzą jednostki spełniające
(gałąź True) lub nie (gałąź False) dany warunek. Np. jednostki spełniające warunek
Entity.Type = Part1
przejdą do gałęzi True, pozostałe – do False. Wybranie opcji N – way
by Condition
i podanie większej liczby warunków sprawi, że pojawi się tyle wyjść, ile jest
warunków. Każda jednostka zostanie przesunięta do wyjścia odpowiadającego
warunkowi, który spełnia. Ta sama zasada dotyczy stosowania prawdopodobieństwa.
Np. dla opcji 2
– way by Chance podanie w polu Percent True liczby 80 spowoduje, że
80% jednostek zostanie skierowanych do gałęzi True, 20% – do False. Przy wybieraniu
opcji N
– way by Chance ważne jest, aby suma prawdopodobieństw z wszystkich wyjść
nie była większa niż 100%. Wszystkie wyjścia muszą być połączone z modułami, można
dołączyć kilka wyjść do jednego modułu. Warunki mogą zawierać zmienne, atrybuty lub
wyrażenia, których zbudowanie ułatwia Build Expression, wywoływany przez kliknięcie
prawym klawiszem myszki w polu Value.
Dispose jest modułem umieszczanym na końcu modelu, który jest odpowiedzialny za
usuwanie jednostek z systemu. Podobnie jak Create
, musi się znajdować w każdym
modelu. Wszystkie statystyki
– zdefiniowane przez użytkownika i wbudowane – są
zapisywane w chwili wyjścia jednostki z systemu. Rodzaj zbieranych statystyk można
określić w Run / Setup / Project Parameters, gdzie zaznacza się odpowiednie pola
wymienione na obszarze Statistics Collection
. Jednostki, które wcześniej zostały
zgrupowane tymczasowo w module Batch
, muszą być rozdzielone przed wyjściem, do
czego używa się modułu Separate. W trakcie symulacji obok modułu pojawia się liczba
wskazująca, ile jednostek opuściło już system.
Process jest jednym ze sposobów definiowania różnego rodzaju czynności, do
wykonania których wykorzystuje się zasoby lub nie. Może to być obróbka części na
maszynach, odebranie telefonu przez operatora, obsłużenie pacjenta w szpitalu i wiele
innych. Pole Type
określa, czy czynność będzie zdefiniowana tylko w tym module (opcja
Standard), czy w podmodelu (opcja Submodel). Po wybraniu opcji Standard
należy
wybrać rodzaj działania (Action), jakie zostanie podjęte w module. Dostępne opcje to:
– Delay oznacza, że działanie modułu powoduje opóźnienie przejścia jednostki o
podany czas, który może być określony zarówno stałą liczbą, jak i rozkładem. Takie
samo działanie definiuje moduł Delay z Advanced Process;
18
– Seize Delay oznacza, że działanie modułu polega na przywłaszczeniu zasobu, a
następnie na opóźnieniu jednostki o podany czas, konieczny np. na wykonanie
działania przez zasób. W polu Resources można definiować, jaki zasób (jeden lub
więcej) jest wymagany i w jakiej ilości (Quantity). Zasoby mogą być także wybierane
ze zbiorów zdefiniowanych w module Set. Zwolnienia zasobu – po wykonanej
czynności – można dokonać modułem Release lub Process. Takie samo działanie
można zdefiniować używając modułów Seize i Delay z Advanced Process;
– Seize Delay Release oznacza, że działanie modułu polega na przywłaszczeniu
zasobu, opóźnieniu jednostki o podany czas, a następnie na zwolnieniu zasobu. Takie
samo działanie można zdefiniować używając modułów Seize, Delay oraz Release z
Advanced Process;
– Delay Release oznacza, że działanie modułu polega na opóźnieniu jednostki o podany
czas, a n
astępnie na zwolnieniu zasobu, który wcześniej został przywłaszczony
modułem Seize lub Process. Takie samo działanie można zdefiniować używając
modułów Delay oraz Release z Advanced Process.
Jeśli czynność wymaga zajęcia zasobu, wtedy do modułu zostaje dołączona kolejka, w
której jednostki będą czekać na zasób. Kolejka pojawia się automatycznie w module
Queue
, gdzie można ją edytować. Priority służy do określenia priorytetu, z jakim jednostki
czekające na dany zasób w różnych modułach będą go zajmować, przy czym
pierwszeństwo mają jednostki z priorytetem High(1). Jeśli priorytety są równe, obowiązuje
metoda FIFO. Pole Allocation
określa, do jakiego atrybutu zostanie dopisany czas i koszt
opóźnienia:
– Value Added powoduje dopisanie czasu / kosztu opóźnienia do atrybutu
Entity.VATime / Entity.VACost
, który przechowuje całkowity czas / koszt gromadzony
w procesach i opóźnieniach oznaczanych jako Value Added;
– Non – Value Added powoduje dopisanie czasu / kosztu opóźnienia do atrybutu
Entity.NVATime / Entity.NVACost
, który przechowuje całkowity czas / koszt
gromadzony w procesach i opóźnieniach oznaczanych jako Non–Value Added;
– Transfer dopisuje czas / koszt opóźnienia do atrybutu Entity.TranTime /
Entity.TranCost
, który przechowuje całkowity czas / koszt gromadzony podczas
transportu oraz w procesach i opóźnieniach oznaczanych jako Transfer;
– Wait dopisuje czas / koszt opóźnienia do atrybutu Entity.WaitTime / Entity.WaitCost,
który przechowuje całkowity czas / koszt gromadzony w kolejkach oraz w procesach i
opóźnieniach oznaczanych jako Wait;
– Other powoduje dopisanie czasu / kosztu opóźnienia do atrybutu Entity.OtherTime /
Entity.OtherCost
, który przechowuje całkowity czas / koszt gromadzony w procesach i
opóźnieniach oznaczanych jako Other lub wtedy, gdy nie ma wyznaczonej kategorii.
19
Wybranie opcji Submodel
oznacza, że czynność będzie zdefiniowana w podmodelu,
który otwiera się klikając prawym klawiszem myszki na ikonce modułu i wybierając Edit
Submodel
. Pozwala to zdefiniować złożone czynności przy użyciu wielu modułów, nie
komplikując głównego modelu. W trakcie symulacji obok modułu pojawia się liczba
wskazująca, ile jednostek jest w danej chwili w module (tzn. w obróbce i w kolejce). Za
pomocą modułów Create – Process – Dispose można zbudować model najprostszego
systemu.
Record stosuje się w celu zapisywania – w trakcie symulacji – statystyk zdefiniowanych
przez użytkownika. Moduł zawiera kilka typów statystyk, wybieranych w polu Type:
– Count jest statystyką, której wartość jest zwiększana lub zmniejszana o wartość
o
kreśloną w polu Value – zależnie od tego, czy jest to wartość dodatnia, czy ujemna –
a następnie zapisywana w liczniku o nazwie podanej w polu Counter Name. W ten
sposób można np. zliczać jednostki w modelu, który ma kilka wyjść. Statystyka tego
typu jest
liczbą całkowitą.
– Entity Statistics to opcja, która pozwala zbierać ogólne statystyki dotyczące jednostek.
Zawierają one informacje dotyczące czasów, kosztów, np. VA Cost / Time, Total Cost /
Time.
Takie same statystyki można otrzymać, jeśli w Run / Setup / Project Parameters
zaznaczy się opcje Costing i Entities. Jeżeli w trakcie symulacji zostaną zmienione np.
typy jednostek, wtedy używając modułu Record można zapisać te informacje, zanim
zostaną zmienione.
– Time Interval to statystyka zawierająca różnice pomiędzy wartością atrybutu o nazwie
Attribute Name
, zdefiniowanego wcześniej np. modułem Assign, a bieżącym czasem
symulacji, co zapisywane jest w rejestrze o nazwie podanej w polu Tally Name. W ten
sposób można otrzymać np. czas, jaki upłynął pomiędzy dwoma zdarzeniami. W
miejscu, gdzie zachodzi pierwsze zdarzenie umieszcza się moduł Assign i definiuje
atrybut o wartości TNOW, wskazującej bieżący czas symulacji. Record umieszcza się
w miejscu drugiego zdarzenia i w polu Attribute Name
odwołuje się do nazwy tego
atrybutu. Jednostka, wchodząc do Record, powoduje zapisanie liczby w rejestrze,
która jest różnicą pomiędzy bieżącym czasem symulacji, a czasem, w którym zaszło
pierwsze zdarzenie.
– Time Between zapisuje czas pomiędzy przybyciami kolejnych jednostek do modułu
Record. Czas przybycia pierwszej jednostki nie jest zapisywany w rejestrze o nazwie
Tally Name
, gdyż oznacza początek odliczania.
Expression
powoduje zapisanie w rejestrze wyrażenia o wartości podanej w polu Value
za każdym razem, gdy jednostka wchodzi do modułu.
20
Moduł zawiera pole Record into Set, którego zaznaczenie powoduje, że wyniki będą
zapisywane w liczniku (dla Count
) lub w rejestrze (dla pozostałych), na pozycji wskazanej
przez indeks Set Index. Np. w module Set
został określony zbiór S1, który zawiera trzy
składniki: T1, T2, T3. Jednostki przechodzące przez system są typu P1, P2, P2, co
zostało określone przez nadanie modułem Assign atrybutu Type o wartości P1, P2, P3.
Jeżeli w module Record pole Tally / Counter Set Name będzie zawierało nazwę S1, a
pole Set Index
nazwę Type, wtedy dane zostaną zapisane w zbiorze S1 na pozycji T1 dla
typu jednostki Type = P1, na pozycji T2 dla Type = P2 i na pozycji T3 dla Type = P3.
Separate posiada dwa zastosowania. Pierwsze to powielanie jednostek w liczbę kopii
określoną w polu # of Duplicates i wysyłanie ich przez dwie gałęzie. Oryginalna jednostka
wychodzi przez wyjście Original, kopie – w tym samym czasie przez wyjście Duplicate.
Jeżeli liczba kopii wynosi np. 3 tzn., że w sumie będą 4 jednostki: 1 oryginalna + 3 kopie.
Każda kopia posiada taką samą nazwę jak oryginał oraz ten sam unikalny numer
zapisany w atrybucie Entity.SerialNumber. Atrybut Entity.CreateTime wskazuje czas
utworzenia kopii, a wartości atrybutów kosztowych i czasowych są dzielone pomiędzy
jednostki w stosunku określonym w polu Percent Cost to Duplicates. Jeśli w polu tym jest
liczba np. 40 i zrobione są dwie kopie, to każda z nich bierze po 20% wartości atrybutów,
a pozostałe 60% przypada jednostce oryginalnej. W trakcie symulacji obok modułu
pojawia się liczba wskazująca, ile jednostek opuściło moduł przez poszczególne wyjścia.
Drugie zastosowanie modułu to rozdzielanie jednostek, wcześniej zgrupowanych
tymczasowo w module Batch
, na pojedyncze sztuki. Grupa może być także utworzona
modułem Pickup. Przedstawiciel grupy zostaje usunięty, a jednostki tworzące grupę
opuszczają moduł w takiej kolejności, w jakiej weszły do modułu Batch. Pole Member
Attributes
określa, w jaki sposób jednostki przejmą atrybuty przedstawiciela, przy czym
d
otyczy to tylko 6 wymienionych poniżej atrybutów oraz wszystkich atrybutów
zdefiniowanych przez użytkownika. Te atrybuty to Entity.HoldCostRate, Entity.Type,
Entity.Picture, Entity.Station, Entity.Sequence, Entity.JobStep
. Dostępne opcje to:
– Retain Original Entity Values oznacza, że jednostki odzyskują atrybuty o wartościach
takich, jakie miały przed zgrupowaniem,
– Take All Representative Values oznacza, że jednostki przejmują atrybuty o
wartościach takich, jakie miał przedstawiciel,
– Take Specific Representative Values oznacza, że wartości atrybutów wymienionych w
polu Attributes
będą takie, jak przedstawiciela, a pozostałe – takie, jak miały przed
zgrupowaniem.
21
Jeśli do modułu wejdzie pojedyncza jednostka lub stała grupa (Permanent), wtedy
wyjdzie z modułu bez rozdzielania, zwiększając tylko o 1 liczbę jednostek
opuszczających moduł. Liczba ta jest widoczna w trakcie symulacji obok modułu.
Basic Process
zawiera także następujące moduły danych:
Entity definiuje różne typy jednostek obecnych w module i ich początkowe symbole
graficzne, które potem mogą być zmienione. Określa także początkowe koszty jednostek.
Jeśli w modelu został dodany nowy typ jednostki, jego nazwa automatycznie pojawi się w
module wraz z domyślnymi ustawieniami. Symbol graficzny jednostki – który będzie
widoczny w trakcie symulacji
– można zmienić, wybierając go z listy rozwijanej w polu
Initial Picture lub poleceniem Edit / Entity Pictures
. Pojawi się okno Entity Picture
Placement
Okno Entity Picture Placement
Z lewej strony okna dostępna jest lista rysunków wraz z podpisami. Te same rysunki
można wybrać w polu Initial Picture. Przyciski Add, Copy i Delete (z lewej strony okna)
pozwalają dodać do tej listy nową pozycję, skopiować lub usunąć już istniejącą.
Dwukrotne kliknięcie na wybranej ikonce lub pustym pasku otwiera okno edytora
graficznego, gdzie można zmienić wygląd obrazka, rysować nowy itp. Edytor zamyka się
przyciskiem Zamknij
(x) w prawym górnym rogu okna, nie ma potrzeby zapisywania.
Zmienić nazwę lub nadać nową można w polu Value. Po zamknięciu okna przyciskiem
OK
należy w polu Initial Picture przypisać jednostce obrazek, wybierając go z listy, jeśli
nazwa nie została zmieniona lub wpisać nazwę, jeśli jest to nowa nazwa, nadana przez
użytkownika, gdyż nie pojawia się ona automatycznie na rozwijanej liście. Z prawej strony
22
okna wyświetla się biblioteka rysunków, czyli zawartość pliku z rozszerzeniem .plb. Inną
bibliotekę otwiera się przyciskiem Open. Można także stworzyć własną bibliotekę
(przycisk New
), a potem zapisać ją (przycisk Save). Rysunek można skopiować z listy do
biblioteki (przyciskiem
) lub z biblioteki na listę (przyciskiem
), zastępując w ten
sposób istniejący symbol lub dodając nowy. Dopiero po upewnieniu się, że zaznaczony
jest ten rysunek, który będzie kopiowany i to miejsce, w które będzie kopiowany, powinno
się nacisnąć przycisk (nie ma opcji Cofnij). Pole Size Factor służy do określania rozmiaru
wyświetlanego symbolu.
Queue stosowany jest w celu zmodyfikowania reguł szeregowania w kolejkach lub
określenia kolejki jako dzielonej (Shared). Jednostki w kolejkach mogą być szeregowane
według zasady FIFO (First In First Out), LIFO (Last In First Out) oraz Lowest / Highest
Attribute Value (
po określeniu nazwy atrybutu w polu Attribute Name). Dzielona kolejka
może być używana przez dwa lub więcej modułów Seize, w których jednostki czekają na
zajęcie tego samego zasobu. Aby to zrobić, należy wybrać tę samą nazwę kolejki w tych
modułach (w polu Queue Name), a w module Queue zaznaczyć opcję Shared. Kolejki
innych modułów nie mogą być dzielone, jest to możliwe tylko dla kolejek modułu Seize.
Można zmienić wygląd kolejki (postać, kolor), dwukrotnie klikając na niej.
Resource definiuje zasoby modelu, którymi mogą być maszyny, ludzie, środki
transportu, linie telefoniczne itp. Liczba dostępnych sztuk zasobu może być stała (opcja
Fixed Capacity
), określona w polu Capacity lub zmieniać się według planu (opcja Based
on Schedule
). Plan należy zdefiniować w module Schedule (pole Type ustawione na
Capacity
), a jego nazwę (Name) wpisać w polu Schedule Name. Pola Busy / Idle / Hour
oraz Per Use
służą do wprowadzania kosztów związanych z zasobem. W polu StateSet
Name
wprowadza się nazwę ustawień stanów zasobu, zdefiniowaną w module StateSet.
Istnieje możliwość określania przerw w pracy zasobu, spowodowanych np.
uszkodzeniami, przerwami. Dokonuje się tego modułem Failure, a nazwę (Name)
wprowadza się w polu Failure Name. Pola Schedule / Failure Rule zawierają trzy opcje
określające sposób postępowania w przypadku, gdy zasób, w chwili, gdy ma być
wyłączony z pracy, jest zajęty:
– Wait oznacza, że zmniejszenie liczby sztuk zasobu nastąpi dopiero wtedy, gdy zasób
zostanie zwolniony przez jednostkę. Wtedy też rozpoczyna się odliczanie przerwy
(czas Down Time lub Duration);
– Ignore natychmiast zmniejsza liczbę sztuk zasobu ignorując fakt, że zasób jest zajęty.
Zasób jest nieaktywny natychmiast po zwolnieniu go przez jednostkę;
23
– Preempt natychmiast przerywa pracę, zmniejsza dostępną liczbę sztuk zasobu i
rozpoczyna odliczanie czasu. Dokończenie obsługi jednostki zostanie podjęte przez
ten sam
zasób na nowo, gdy stanie się on aktywny.
Zmiana symbolu graficznego zasobu
– widocznego w trakcie symulacji – jest możliwa po
wybraniu ikonki Resource (
) z paska narzędzi Animate. Pojawi się okno Resource
Picture Placement, podobne do okna Entity Picture Placement
. Sposób postępowania
jest taki sam, jak przy wyborze symbolu jednostki z tym, że tutaj rysunki należy dobrać do
stanów zasobu. W trakcie symulacji rysunki będą się zmieniać, zgodnie ze zmianą stanu
zasobu (np. zajęty, wolny).
Schedule najczęściej jest używany wraz z modułem Resource do określenia
harmonogramu pracy zasobów (po wybraniu w polu Type opcji Capacity) oraz z modułem
Create
do planowania czasu przybyć jednostek (po wybraniu w polu Type opcji Arrival).
Odwołanie w tych modułach następuje poprzez wybranie w polu Type opcji Based on
Schedule lub Schedule
. W module dostępna jest też opcja Other, która pozwala
definiować czasy opóźnienia i współczynniki związane z czasem. Odwołanie w różnych
modułach następuje za pomocą funkcji SchedValue (Schedule Name). Wpisanie w polu
Scale Factor
liczby różnej od 1 powoduje, że wartości Value (dla opcji Arrival i Other)
zostaną pomnożone przez ten współczynnik. Okresy czasu zostają bez zmian. Np.
współczynnik 1.5 zwiększa wartości o 50%, 0.7 – zmniejsza o 30%. Harmonogram może
być wprowadzony na dwa sposoby:
– edytorem graficznym, który otwiera się po kliknięciu pola Durations. Przeciąganie
myszką z wciśniętym lewym klawiszem po wykresie pozwala w prosty sposób nanieść
całkowite wartości (oś Y) w danych odcinkach czasu (oś X). Pod przyciskiem Options
dostępne są opcje, w tym ustawienia wartości na osiach X i Y;
– po wybraniu opcji Edit via Dialog (kliknięcie prawym klawiszem myszki na pasku
modułu) pojawi się okno dialogowe, gdzie w polu Durations wpisuje się liczby
odpowiadające odcinkom czasu, czyli liczbom na osi X (pole Duration) oraz
wartościom w tych odcinkach czasu, czyli liczbom na osi Y (pole Value). Ten sposób
jest pomocny, gdy wartości nie są liczbami całkowitymi lub są wyrażeniami.
Set jest modułem wykorzystywanym przez wiele innych modułów, zawiera różnego typu
ustawienia dotyczące zasobów (Resource), liczników (Counter), rejestrów (Tally), typów i
symboli graficznych jednostek (Entity Type / Picture
). Pod konkretną nazwą zbioru
(Name
) można zapamiętać wiele elementów danego typu (Members), do których tworzy
się odwołania w innych modułach, wybierając opcję Set i podając nazwę zbioru. Ważna
jest kolejność wpisywania elementów w polu Members, gdyż – wraz z nazwą zbioru –
24
należy podać w polu Selection Rule zasadę pobierania elementów tego zbioru. Np.
Cyclical oznacza cykliczne pobieranie (1
–2–3–1 itd.), Preferred Order – pobranie
pierwszego dostępnego itd. Przykładowo, użycie w module Process zbioru zasobów o
nazwie podanej w polu Set Name (po wybraniu w polu Resources / Type opcji Set i
określeniu sposobu pobierania elementów zbioru) spowoduje, że jednostkom
wchodzącym do modułu zostanie przydzielony zasób według listy Members. Jeśli zbiór
S1
składa się z elementów R1, R2, R3, a pobieranie jest losowe (Random), to jednostka
dostanie zasób R1, R2 lub R3, a w atrybucie o nazwie podanej w polu Save Attribute
zostanie zapisany indeks zasobu, który został przydzielony. Inne typy ustawień można
znaleźć w module Advanced Set.
Variable stosowany jest do określania wymiaru (liczba wierszy Rows i kolumn Columns)
oraz początkowych wartości (Initial Values) zmiennych, definiowanych przez
użytkownika. Zmienne mogą być używane w wyrażeniach różnego typu, można zmieniać
ich wartości przy pomocy modułu Assign, a także odwoływać się do nich w innych
modułach. W trakcie symulacji można śledzić zmiany wartości zmiennej. W tym celu
należy wybrać ikonkę Variable (
) z paska narzędzi Animate i – po ustawieniu
parametrów i zaakceptowaniu ich OK – umieścić symbol na ekranie, klikając i
przeciągając kursor. Pole Clear Option wskazuje, kiedy zmienna ma powracać do
początkowej wartości: wraz z resetowaniem statystyk (Statistics), systemu (System) lub
nigdy (None).
2.2.
Charakterystyka modułów z panelu Advanced Process
Advanced Process jest rozszerzeniem panelu Basic Process
. Zawiera moduły, które
wprowadzają do budowanego modelu więcej szczegółów. W jego skład wchodzą
następujące moduły blokowe:
Delay opóźnia jednostki przez okres czasu podany w polu Delay Time. Wartość
opóźnienia może być określona stałą liczbą, wyrażeniem, rozkładem itp. Build Expression
(kliknięcie prawym klawiszem myszki w polu Delay Time) ułatwia wprowadzanie wyrażeń,
które mogą być dowolnie złożone, zawierać zmienne, atrybuty itp. Czas będzie doliczany
do atrybutu wybranego w polu Allocation
, w którym poszczególne opcje mają takie samo
znaczenie, jak w module Process
. Zamiast modułu Delay można użyć modułu Process,
wybierając w polu Action opcję Delay.
25
Dropoff wydziela daną liczbę jednostek (określoną w opcji
Quantity
) z przychodzącej grupy jednostek i wysyła je przez wyjście
Members
. Pozostałe jednostki wciąż tworzą grupę (o mniejszej
liczbie elementów) i wraz z przedstawicielem są przesuwane do
wyjścia Original. Pole Starting Rank określa, od której jednostki w
grupie należy zacząć odrzucanie, np. wydzielenie 4 jednostek
począwszy od 3 oznacza, że zostaną wybrane jednostki zajmujące
3, 4, 5 i 6 pozycję w grupie. Moduł wydziela jednostki tylko z
tymczasowych grup (Temporary), utworzonych w module Batch,
grup
y mogą być także wynikiem działania modułu Pickup. Jeżeli do
modułu wejdzie pojedyncza jednostka lub grupa połączona na stałe
(Permanent
), to zostaje przesunięta do wyjścia Original bez
żadnych zmian. Wszystkie atrybuty przedstawiciela przypisywane
są wydzielanym jednostkom według zasad zdefiniowanych w polu Member Attributes,
poszczególne opcje mają takie samo znaczenie, jak w module Separate. Różnica
pomiędzy Separate i Dropoff jest wyraźna: Separate rozdziela tymczasową grupę na
pojedyncze jednostki, a przedstawiciela usuwa. Dropoff
oddziela od grupy określoną
liczbę jednostek, a resztę grupy pozostawia z przedstawicielem. Pozostała grupa
powinna być rozdzielona przed wyjściem z modelu w module Separate.
Hold jest modułem przetrzymującym jednostki w wybranej kolejce. Warunek ich
zwolnienia określony jest w polu Type, które ma trzy opcje:
– opcja Wait for Signal zwalnia określoną liczbę jednostek w chwili, gdy Hold odbierze
sygnał pochodzący z modułu Signal, o wartości podanej w polu Wait for Signal. Liczba
wypuszczonych jednostek jest zawarta w polu Limit, w module Hold lub Signal.
Kolejne jednostki zostaną zwolnione z kolejki po otrzymaniu następnego sygnału;
– opcja Scan for Condition rozpoczyna zwalnianie jednostek w chwili, gdy wyrażenie
określone w polu Condition staje się prawdziwe i wypuszcza je dotąd, aż wyrażenie
nie stanie się ponownie fałszywe. Następne jednostki będą zwolnione, gdy wyrażenie
znów będzie prawdziwe. Wyrażenie o wartości liczbowej jest prawdziwe dla każdej
wartości różnej od zera. Zwalnianie jednostek może zależeć od stanu zasobu (zajęty /
wolny), liczby jednostek w danej kolejce, wartości zmiennej itp.
– opcja Infinite Hold powoduje bezterminowe trzymanie jednostek w kolejce. Ich
zwolnienie następuje przy użyciu modułu Remove.
Jednostka
wchodząca do modułu jest przesuwana dalej, jeżeli zaistniał warunek jej
zwolnienia. W przeciwnym przypadku jest umieszczana w kolejce o nazwie podanej w
26
polu Queue Name. Typ kolejki (pole Type
) może być zdefiniowany przy pomocy atrybutu,
wyrażenia lub zbioru określonego w module Advanced Set.
Match jest modułem posiadającym taką samą liczbę wejść, wyjść i kolejek. Liczbę tę
(z zakresu 2
–5) definiuje użytkownik w polu Number to Match. Jednostki wchodzące do
modułu są umieszczane w kolejce, która jest przypisana do danego wejścia. Moduł
wypuszcza jednocześnie po jednej sztuce z każdej kolejki, każdą innym wyjściem, przy
czym można dołączyć kilka wyjść do jednego modułu. Wypuszczanie jednostek zachodzi
każdorazowo, gdy w każdej kolejce czeka co najmniej jedna jednostka. Match może
także wypuszczać jednostki o określonych atrybutach (opcja Based on Attribute), wtedy w
każdej kolejce musi być co najmniej jedna jednostka o takim atrybucie, aby moduł mógł je
wypuścić.
Pickup pobiera określoną (w polu Quantity) liczbę jednostek ze wskazanej kolejki i
dodaje je na koniec grupy wchodzącej do modułu. W ten sposób grupa posiada więcej
członków, a w kolejce czeka mniej jednostek. Grupa powinna być tymczasowa (opcja
Temporary w module Batch
). Kolejka, z której pobierane są jednostki (począwszy od
pozycji o numerze podanym w polu Starting Rank
), jest dowolną kolejką w modelu. Jeżeli
w kolejce nie ma jednostek lub jest ich za mało, a do modułu Pickup wchodzi grupa
jednostek, to zostanie wygenerowany komunikat o błędzie. Można temu zapobiec
używając modułu Decide do sprawdzania, czy w kolejce jest potrzebna liczba jednostek
(zmienna NQ (Queue Name)
zwraca liczbę jednostek w kolejce o nazwie Queue Name).
Jednostki przyłączone do grupy stają się jej pełnoprawnymi członkami, można je usunąć
tak samo, jak inne elementy grupy (modułem Separate, Dropoff). Zastosowanie modułu w
stosunku do stałej grupy (Permanent) spowoduje pojawienie się komunikatu o błędzie,
gdyż jednostki można przyłączać tylko do tymczasowej grupy. Jeśli do modułu wchodzi
pojedyncza jednostka, to zostaje przekształcona w przedstawiciela, a jednostki są
przyłączane do niej, ale zbudowana w ten sposób grupa liczy tylu członków, ilu zostało
pobranych z kolejki przez Pickup
. Różnica pomiędzy modułami Batch i Pickup jest
następująca: jednostka wchodząca do Pickup może zostać przedstawicielem grupy,
jednostka wchodząca do Batch nie może zostać przedstawicielem, a jedynie członkiem
grupy. Moduł Pickup nie może być umieszczany w modelach hierarchicznych, a także w
podmode
lu modułu Process.
ReadWrite umożliwia czytanie danych z klawiatury lub z pliku oraz zapisywanie danych
do pliku lub wyświetlanie danych na ekranie. Jeżeli dane są zapisywane do pliku lub
odczytywane z pliku, to plik ten musi być zdefiniowany w module File, gdzie określa się
27
jego format oraz nazwę pliku używaną przez Arenę i nazwę dyskową pliku. Wczytane
dane są przydzielane do atrybutów i zmiennych, wyszczególnionych w oknie modułu
ReadWrite, w polu Assignments
. Moduł czyta tylko dane liczbowe, inny typ danych
(np. tekst) jest traktowany jako „0”. Dane przeznaczone do wyświetlania na ekranie
wyświetlane są w oknie Command (okno wyświetla się poleceniem Run / Run Control /
Command
). Również dane wprowadzane z klawiatury wypisywane są w oknie Command.
Release jest stosowany w celu zwolnienia zasobu (np. maszyny po zakończonej
obróbce), który wcześniej został przywłaszczony przez jednostkę przy pomocy modułu
Seize lub Process
. Zwolniony zasób może być natychmiast zajęty przez następną
jednostkę z kolejki. Moduł umożliwia jednoczesne zwolnienie kilku zasobów. Zwalnianie
odbywa się w takim porządku, w jakim zasoby były zajmowane. Zwalniany zasób może
być elementem zbioru, utworzonego modułem Set. Wtedy należy podać, którego zasobu
dotyczy zwolnienie: najwcześniej zajętego, ostatnio zajętego (opcja First / Last Member
Seized
), czy określonego elementu (Specific Member). Zwalnianie zajętego zasobu
umożliwia również moduł Process (działanie zawierające opcję Release).
Remove usuwa jednostkę z wyznaczonej pozycji (podanej w polu Rank of Entity) w
danej kolejce i wysyła ją przez wyjście Removed Entity. Jednostka, która weszła do
modułu i spowodowała tę akcję jest przesuwana dalej przez wyjście Original. Jednostka
przeznaczona do usunięcia może być wyznaczona za pomocą modułu Search, który
wyszuka w kolejce jednostkę o określonej wartości atrybutu, czasie czekania w kolejce
itp. Moduł Remove nie może być umieszczany w modelach hierarchicznych, a także w
podmodelu modułu Process.
Search jest modułem wykonującym następujące działania:
– wyszukuje w kolejce (opcja Search a Queue) lub w tymczasowej grupie (opcja Search
a Batch
) jednostkę, której pozycja spełnia wyrażenie podane w polu Search Condition.
Wtedy zmienna J
wskazuje pozycję pierwszej jednostki, która spełnia wyrażenie lub 0,
jeśli żadna jednostka w zadanym przedziale nie spełnia wyrażenia. Najczęściej
wyrażenie zawiera atrybuty, które mają wartość atrybutów jednostek w danej kolejce
lub grupie. Użycie zmiennych NQ lub NG, które zwracają – odpowiednio – bieżącą
lic
zbę jednostek w kolejce lub grupie, pozwala przeszukiwać całą kolejkę lub grupę.
Wtedy początkową i końcową wartość przedziału można określić np. jako 1 i NQ.
Przykładowo, podanie krańców przedziału NG i 1 oraz wyrażenia Entity.Type = 2
spowoduje, że grupa będzie sprawdzana „wstecz” w poszukiwaniu jednostki drugiego
typu. Zmienna J
wskaże pozycję pierwszej jednostki tego rodzaju od końca grupy;
28
– wyszukuje wartość wyrażenia podanego w polu Search Condition (opcja Search an
Expression
), które powinno zawierać zmienną J. Wtedy J wskazuje pierwszą wartość
indeksu, który spełnia wyrażenie lub 0, jeżeli w zadanym przedziale wyrażenie nie jest
spełnione. Np. podanie wartości 2 i 7 oraz wyrażenia Inventory Level (J) < 250
spowoduje poszukiwanie pozycji w zmiennej Inventory Level
, począwszy od drugiego
wiersza, która ma wartość mniejszą od 250. Zmienna J wskaże, na której pozycji jest
taka wartość lub 0, jeśli wszystkie wartości na pozycjach od 2 do 7 są większe lub
równe 250. Zmienna Inventory Level powinna być jednowymiarową zmienną, która ma
co najmniej 7 wierszy.
Wyrażenia mogą być dowolnie złożone, także granice przedziału można podawać w
postaci wyrażenia. Wyszukiwanie prowadzone jest w przedziale [Starting Value, Ending
Value]
. Wartość początkowa może być mniejsza od końcowej (przeszukiwanie „w przód”)
lub większa (przeszukiwanie „wstecz”). Kiedy jednostka wchodzi do modułu, zmienna J
przyjmuje wartość Starting Value i wyrażenie Search Condition jest sprawdzane. Jeżeli
wyrażenie zostało spełnione, następuje koniec wyszukiwania, zmienna J przyjmuje
bieżącą wartość, a jednostka wychodzi wyjściem Found. Jeżeli osiągnięto koniec
przedziału przeszukiwania, a wyrażenie nie zostało spełnione, to zmienna J wskazuje 0,
a jednostka wychodzi wyjściem Not Found. W przypadku, gdy wyrażenie zawiera funkcję
MIN lub MAX
, przeszukiwany jest cały przedział. Jeśli więcej niż jedna pozycja ma taką
samą minimalną / maksymalną wartość, to zmienna J wskazuje pierwszą z nich. Moduł
Search
może być stosowany np. do wyszukiwania jednostek w kolejce, które będą
usuwane modułem Remove lub przyłączane do grupy modułem Pickup.
Seize przydziela jednostce jeden lub kilka zasobów (np. maszynę, operatora). Jeśli
zasób nie jest w danej chwili dostępny, jednostka czeka w kolejce o nazwie Queue
Name,
aż zostanie zwolniony przez inną jednostkę i wtedy natychmiast przywłaszcza go
dla siebie. Pole Allocation
określa, do jakiego atrybutu jednostki zostanie dopisany koszt
używania zasobu (opis atrybutów zawarty jest w opisie modułu Process). Jeżeli jednostki
czekają w kilku modułach na ten sam zasób, wtedy o kolejności przydzielania decyduje
wyższy priorytet (podany w polu Priority) lub dłuższy czas czekania w kolejce (dla kolejki
FIFO
). Zajmowany zasób można zdefiniować podając jego nazwę w polu Resource
Name
lub nazwę zbioru, z którego będzie pobierany (Set Name). Można także podać
atrybut lub wyrażenie określające, który zasób ma być zajęty. Zbiór należy zdefiniować w
module Set
. Jeżeli użyto modułu StateSet do zdefiniowania stanów zasobu i przypisano
je w module Resource (pole StateSet Name
) do danego zasobu, to w modelu należy
określić, która nazwa odpowiada danemu stanowi zasobu (np. stan, kiedy zasób
obsługuje jednostkę można nazwać Working). Poszczególne nazwy należy przypisać
29
przy pomocy modułu Assign. Innym sposobem jest wpisanie tej nazwy w polu Resource
State
. W ten sposób zostanie nazwany stan, w którym zasób jest zajęty przez jednostkę.
Zasób można zwolnić modułem Release lub Process (opcja Release).
Signal wysyła sygnał do każdego modułu Hold umieszczonego w modelu. Każda
jednostka wchodząca do modułu powoduje wysłanie sygnału o wartości podanej w polu
Signal Value
. Po otrzymaniu sygnału każdy moduł Hold – który ma zaznaczoną opcję
Wait for Signal
i czeka na sygnał o takiej wartości (określonej w polu Wait for Value) –
zwalnia podaną liczbę jednostek z kolejki o nazwie Queue Name. Liczbę zwalnianych
jednostek (pole Limit
) definiuje się w module Hold lub Signal. Sygnał może mieć dowolną
wartość (np. liczba, wyrażenie), każda jednostka wchodząca do modułu może wysyłać
inny sygnał, np. oparty na atrybucie jednostki. Użycie modułu w podmodelu modułu
Process
spowoduje wysłanie sygnału do wszystkich modułów Hold, bez względu na ich
pozycję w hierarchii.
Store jest modułem używanym w celu zdefiniowania miejsca pobytu oraz pokazania
jednostek w trakcie animacji, jeśli znajdują się one w miejscu, gdzie nie można ich
uwidocznić, np. podlegają opóźnieniu w module Delay. Aby pokazać, gdzie są jednostki,
należy dodać do animacji symbol Storage (ikonka
w pask
u narzędzi Animate) i nadać
mu w polu Identifier
taką nazwę, jaka widnieje w module Store, w polu Storage Name.
Symbol Storage
ma postać linii, podobnie jak kolejki. Jednostki wchodzące do modułu
Store
są umieszczane w Storage, licznik stanu Storage zostaje zwiększony o 1, a
jednostka przesuwa się do dalszych modułów. Jednostka jest widoczna w Storage do
czasu, aż przejdzie do modułu, który ma zdolność ukazywania jednostek. Moduł Unstore
jest konieczny, aby zmniejszyć stan licznika, może także wydobywać jednostki ze
Storage
. Liczbę jednostek w określonym Storage zwraca wyrażenie NSTO (Storage
Name), gdzie NSTO
jest zmienną. Moduł może być stosowany w podmodelu modułu
Process, przy czym Store i Unstore
nie muszą być na jednym poziomie w hierarchii
modelu.
Unstore stosowany jest wraz z modułem Store, który umieszcza jednostki w Storage w
celu pokazania ich miejsca pobytu. Moduł zmniejsza stan licznika Storage, a także
przesuwa jednostki do dalszych modułów. Pole Type określa typ Storage, z którego są
wydobywane jednostki. Opcja Default
oznacza, że jednostki wychodzą z ostatnio
zajmowanego Storage. Opcja Storage
wymaga podania określonej nazwy, a Set – nazwy
zbioru Storage zdefiniowanego w module Set. Opcje Attribute i Expression
wyznaczają
Storage na podstawie
atrybutu lub wyrażenia. Wszystkie jednostki, które zostały dodane
30
do Storage
, powinny być usunięte z niego przed wyjściem z modelu. Moduł może być
stosowany w podmodelu modułu Process, przy czym Store i Unstore nie muszą być na
jednym poziomie w hierarchii modelu.
Advanced Process
zawiera także następujące moduły danych:
Advanced Set definiuje typy zbiorów elementów, których nie ma w module Set – kolejki
(Queue), magazyny (Storage) i inne (Other
). Jego działanie jest analogiczne jak modułu
Set. Elementy zbioru Other
muszą być takiego samego typu, np. atrybuty, zmienne. Nie
można pod jedną nazwą zapamiętać elementów różnego typu.
Expression definiuje wyrażenia, do których można się odwoływać w innych modułach
przez podanie ich nazwy. Jest to użyteczne tam, gdzie pewna wielkość (np. dana
rozkładem, złożonym wyrażeniem) występuje w kilku miejscach. Jeśli wystąpi
konieczność jej zmiany, wystarczy to zrobić w module Expression, a nie w każdym
module, w którym występuje. Wyrażenie może zawierać zmienne, atrybuty, operatory
arytmetyczne i logiczne, rozkłady statystyczne, a także inne wyrażenia itp. Pola Rows i
Columns
pozwalają zdefiniować wielowymiarowe wyrażenia. Przykładowo, można
zdefiniować wyrażenie o nazwie WorkerTime, mające kilka wierszy o danych
wartościach, które określają czas opóźnienia w procesie. Zasób (Worker) jest zajmowany
w oparciu o zbiór pamiętany w module Set. Jeżeli indeks zajmowanego zasobu jest
zachowywany, można poprzez niego odwoływać się do czasu opóźnienia, przypisując go
do danego zas
obu. Używając nazwy indeksu z pola Save Attribute – np. Worker# –
można wtedy czas opóźnienia zdefiniować jako WorkerTime (Worker#).
Failure jest modułem używanym wraz z zasobami, pozwala definiować awarie, przeglądy
i inne przerwy, które powodują przestoje w pracy zasobu. Wykorzystywany jest w
modułach Resource i StateSet, odwołanie następuje poprzez podanie nazwy w polu –
odpowiednio
– Failure Name i AutoState or Failure. Przerwy można definiować jako
Count lub Time. Opcja Count
oznacza, że przerwa nastąpi po obsłużeniu przez zasób
określonej liczby sztuk jednostek (podanej w polu Count) i będzie trwać przez okres
czasu podany w polu Down Time. Opcja Time
oznacza, że pomiędzy przerwami upływa
okres czasu podany w polu Up Time, a przerwa trwa przez okres c
zasu określony w polu
Down Time
. Wszystkie czasy podawane mogą być liczbami, rozkładami, wyrażeniami itp.
W polu Uptime in this State only
określa się, które stany zasobu są brane pod uwagę
przy zliczaniu czasu pomiędzy przestojami. Pozwala to np. zliczać czas tylko wtedy, gdy
zasób jest zajęty. Jeżeli nie ma podanych nazw, to brane są pod uwagę wszystkie stany.
31
Nazwa stanu zasobu musi być określona w module StateSet lub być podstawowym
stanem zasobu (Busy, Idle, Inactive, Failed).
File służy do definiowania plików, które są używane przez moduł ReadWrite. Pole Name
określa nazwę pliku używaną przez Arenę, przez którą moduł ReadWrite będzie się
odwoływał do pliku. Natomiast pole Operating System Name wskazuje nazwę pliku na
dysku (jeżeli plik do odczytu znajduje się w innym katalogu niż model, to należy podać
pełną ścieżkę). Pliki z zapisywanymi danymi tworzone są we wskazanym miejscu na
dysku lub w katalogu bieżącym modelu (jeżeli nie podano ścieżki).
Pliki są zapisywane w trzech formatach:
– Unformatted jest odpowiedni do przekazywania wyników symulacji do innych modeli
lub programów. Plik taki nie jest standardowym plikiem tekstowym, nie można go
otworzyć edytorem tekstu, czy wydrukować;
– Free Format – plik zapisany w tym formacie jest zbiorem znaków ASCII. Wartości
zapisane w pliku o takim formacie rozdzielane są przecinkami lub znakami odstępu;
– WKS (worksheet) – format pliku binarnego używany przez arkusz kalkulacyjny
LOTUS
. Pliki zapisane w tym formacie są także czytane przez program Excel.
Pole End of File Action
wskazuje, jakie działanie ma być podjęte w przypadku, gdy przy
czytaniu pliku napotkany zostanie znak końca pliku. Dostępne opcje to:
– Dispose – usuwa jednostkę, przerywa czytanie i zamyka plik,
– Rewind – po każdorazowym napotkaniu końca pliku czytanie jest rozpoczynane od
początku,
– Error – przerywa symulację i sygnalizuje błąd,
– Ignore – pozwala zdefiniować własny sposób reakcji na koniec pliku. Wszystkie
zmienne odczytane w module ReadWrite
ustawiane są na 0. Przy użyciu tej opcji za
modułem ReadWrite (który wykorzystuje moduł File) powinien być umieszczony moduł
Decide
w celu sprawdzenia wartości zmiennych. Jeżeli mają wartość 0, to
podejmowane jest odpowiednie działanie.
StateSet pozwala definiować użytkownikowi stany zasobu, które mogą być przypisane
do podstawowych stanów zasobu (Busy, Idle, Inactive, Failed) lub być nowymi stanami
dla zasobu, np. stan nazwany Working
może odpowiadać stanowi Busy, stan zasobu
czekającego na operatora można nazwać Waiting for Operator. Każdą nazwę stanu
zasobu nal
eży przydzielić w polu AutoState or Failure do nazwy auto – stanu lub nazwy
przestoju (Failure Name
), można je także przypisać w modelu, odwołując się do nazw
stanów w module Seize (pole Resource State). Ustawień można także dokonywać w
module Assign (polecenie Type / Other
). Moduł StateSet jest wykorzystywany przy
32
definiowaniu zasobów w module Resource (pole StateSet Name). Przykładowo, można
nazwać wszystkie stany, w których może się znaleźć zasób, przypisać je w odpowiednich
miejscach w module, a następnie zdefiniować statystyki w module Statistic, otrzymując w
ten sposób informacje o czasie, częstości itp. pozostawania zasobu w każdym ze stanów.
Statistic jest modułem używanym do tworzenia dodatkowych statystyk, zapisywanych w
trakcie symulacji oraz do
tworzenia wyjściowych plików danych (Output File), które
zawierają każdą obserwację, nie tylko statystyki sumaryczne (np. średnia, maksymalna
wartość). Pliki takie można otworzyć w Output Analyzer (jeśli jest to plik binarny z
rozszerzeniem .dat) lub w innych programach, np. edytory tekstu, Excel
itp. (jeśli jest to
plik tekstowy z rozszerzeniem .csv). Zaznaczenie w Tools / Options / Run Control opcji
Write Statistics Output Files as Text
spowoduje, że plik będzie zapisywany jako tekst
(domyślnie ustawiony jest zapis binarny).
W module dostępne są statystyki następujących typów:
– Time – Persistent służy do określania wartości średnich, minimalnych czy
maksymalnych, z uwzględnieniem czasu. Na przykład, wartości średnie w
statystykach Time
– Persistent obliczane są jako średnie ważone, gdzie wagami są
proporcje czasu, przez jakie zmienne przyjmują określone wartości. Przykładem może
być średnia liczba części czekających w kolejce. Wartość ta będzie wyznaczana z
zależności:
T
T
dt
t
Q
0
/
)
(
, gdzie Q(t) j
est liczbą części w kolejce w chwili czasu t.
– Tally służy do określania wartości średnich, minimalnych lub maksymalnych z
określonej liczby wartości. Na przykład, średni czy maksymalny czas przebywania w
systemie należy do statystyki typu Tally, ponieważ określa on odpowiednio wartość
średnią i maksymalną czasu przebywania w systemie np. 5 części, które opuściły
system w czasie symulacji.
– Counter sumuje określoną wielkość w liczniku o nazwie Counter Name. Typowe
zastosowanie to zliczanie liczby wystąpień (np. liczba jednostek przechodząca przez
dane miejsce), czasu (np. łączny czas czekania wszystkich jednostek w danej
kolejce). Pole Limit
pozwala zdefiniować warunek przerwania repliki symulacji.
Osiągnięcie przez licznik warości Limit przerywa symulację. Pole Initialization Option
określa sposób zerowania licznika: wraz z rozpoczęciem każdej replikacji (opcja Yes),
razem z innymi statystykami (opcja Replicate
) lub sumowanie wartości z każdej
replikacji, bez zerowania licznika (opcja No). Opcja jest stosowana
z modułem Record.
– Output zapisuje ostateczne wyniki każdej replikacji w przypadku, gdy jest ich więcej
niż jedna.
33
– Frequency stosowany jest w celu zapisywania częstości występowania danej
wielkości, określonej wyrażeniem podanym w polu Expression (opcja Value) lub
stanami zasobu (opcja State). Pole Categories
pozwala zdefiniować stałą wartość
(Constant
) lub przedziały (Range) oraz podać nazwy (Category Name), które
zidentyfikują te wartości w raporcie. Pole Category Option pozwala na zawarcie lub nie
danej
kategorii w ograniczonych kolumnach raportu. Przykładowo, wyrażeniem jest
liczba jednostek w kolejce, które czekają na paletach, po 6 na każdej. Przedział 0–6
ma nazwę 1 Paleta, przedział 7–12 – 2 Palety itd. W ten sposób symulacja wykaże,
jak często jest potrzebna dana liczba palet.
Pole Report Label
zawiera nazwę, pod którą będzie można znaleźć tę statystykę w
końcowym raporcie. Pole Output File określa nazwę wyjściowego pliku danych (np.
nazwa.dat
), do którego można zapisać dane. Jeżeli nie podano nazwy, plik nie jest
tworzony. Wyjściowe pliki danych zawierają listę każdej wartości zaobserwowanej w
trakcie symulacji (dla statystyk Counter i Tally
) lub listę zmian wartości danej wielkości
(dla statystyk Time
– Persistent i Frequency). Poszczególne rekordy zawierają dwie
wielkości – wartość i czas jej wystąpienia. Można zbierać w wyjściowych plikach
statystyki, które są zdefiniowane w innych modułach, np. w Record. W tym celu należy
utworzyć nową statystykę odpowiedniego typu w module Statistic i wybrać w polu
Counter / Tally Name
nazwę z rozwijanej listy.
Storage definiuje nazwy miejsc (Storage), w których można uwidocznić jednostki
podczas animacji, jeżeli przechodzą przez moduły, które nie mają tej możliwości. Moduły
odwołujące się do schowków automatycznie zapisują w tym module ich nazwy, więc jest
on potrzebny głównie wtedy, gdy nazwa schowka występuje w wyrażeniu lub w atrybucie.
34
2.3.
Charakterystyka modułów z panelu Advanced Transfer
Advanced Transfer
zawiera moduły, które definiują transport jednostek przez system,
używając w tym celu różnego typu urządzeń, klasyfikowanych ogólnie jako przenośniki
taśmowe (Conveyor) i różnego rodzaju ruchome przenośniki – np. wózki, ciężarówki, ludzie
(Transporters)
. W skład panelu wchodzą następujące moduły blokowe:
Enter definiuje stacje (opcja Station) o nazwie Station Name lub zbiory stacji (opcja Set)
o nazwie Set Name
, do których jednostka jest transportowana. Można także zdefiniować
czas (Delay
), potrzebny do wyładowania jednostki ze środka transportu, a także zwolnić
środek transportu (wózek – opcja Free Transporter, taśmę – opcja Exit Conveyor, inny
zasób – opcja Release Resource) w polu Transfer In, jeżeli brał on udział w
przemieszczaniu jednostek. Pole Allocation
określa atrybut, do którego przypisuje się
c
zas i koszt opóźnienia (atrybuty opisane są w opisie modułu
Process). Miejsca przeznaczenia transportowanych jednostek
określa się za pomocą połączeń modułów lub przy użyciu modułów
przemieszczających jednostki (np. Leave, Route, Convey,
Transport), gdzie w polu Destination Type
określa się sposób
wyboru stacji. Enter
można zastąpić modułami Station – Delay –
Free (Exit, Release). Enter
może otwierać sekwencję modułów, np.
Enter
– Process – Leave.
Leave jest używany w celu przydzielania środka transportu do
jednostki, przesunięcia go do miejsca pobytu jednostki, a następnie
przewiezienia jednostki do wybranej stacji lub do modułu, z którym
jest połączony. Jednostka wchodząca do modułu może czekać w
kolejce o nazwie Queue Name
na przydzielenie jej środka
t
ransportu (wózka – opcja Request Transporter, taśmy – opcja Access Conveyor, innego
zasobu
– opcja Seize Resource), a następnie jest przekazywana do stacji przeznaczenia.
Stację określa się w polu Station Type, przy czym opcja Station wymaga podania nazwy
stacji, opcje Attribute i Expression
– podania atrybutu lub wyrażenia charakteryzującego
stację. Opcja Sequence wysyła jednostki do stacji zgodnie z ich marszrutą zdefiniowaną
w module Sequence
. Sposób przemieszczenia jednostki określa się w polu Connect
Type
. Użycie opcji Convey lub Transport wymaga zdefiniowania – odpowiednio –
przenośnika taśmowego i jego segmentów w modułach Conveyor i Segment lub
transportera i pokonywanych przez niego odległości w modułach Transporter i Distance.
Użycie transportera umożliwia pokazanie podczas animacji, jak jednostka załadowana
np. na wózek, samochód jest przewożona do następnej stacji. Istnieje możliwość
35
zdefiniowania czasu (Delay
), potrzebnego na załadowanie jednostki na wózek, taśmę itp.
Pole Allocation
określa atrybut, do którego przypisuje się czas i koszt opóźnienia (opis
atrybutów zawarty jest w opisie modułu Process). Pole Priority pozwala ustawić priorytet,
z jakim jednostki będą zajmować środek transportu, na który czekają jednostki także w
innym module. Jeśli jednostka czeka na przydzielenie jej transportera (opcja Request
Transporter w polu Transfer Out
), należy podać kryterium wyboru, który spośród kilku
dostępnych pojazdów o podanej nazwie (jeżeli jest ich więcej niż jeden) ma być wybrany.
Dostępne są następujące możliwości:
– Cyclical – wybiera cyklicznie (1–2–3–1–2–3) pomiędzy wszystkimi pojazdami,
– Random – wybiera losowo,
– Preferred Order – przydziela pierwszy wolny pojazd z najniższym numerem,
– Specific Member – wybiera pojazd określony atrybutem podanym w polu Set Index,
– Largest Distance – przydziela transporter będący najdalej od żądającej jednostki,
– Smallest Distance – przydziela transporter będący najbliżej żądającej jednostki.
Leave
można zastąpić modułami Request (Access, Seize) – Delay – Transport (Convey,
Route). Leave
jest często ostatnim ogniwem, zamykającym sekwencję modułów, np.
Enter
– Process – Leave.
PickStation jest modułem wybierającym stację, do której będzie transportowana dana
jednostka. Wybór dokonywany jest w oparciu o minimalną lub maksymalną (opcja w polu
Test Condition
) liczbę jednostek czekających w kolejce danej stacji (Number in Queue)
lub liczbę jednostek transportowanych do stacji (Number En Route to Station) lub liczbę
zajętych zasobów przez inne jednostki w stacji (Number of Resources Busy) lub w
oparciu o zdefiniowane wyrażenie (Expression). Jeżeli zaznaczono więcej niż jedną opcję
w polu Selection Based On
, wtedy liczba jednostek z zaznaczonych opcji sumuje się, a
otrzymana suma jest minimalizowana lub maksymalizowana. Pole Stations definiuje,
jakie stacje, kolejki, zasoby i wyrażenia brane są pod uwagę. Moduł umożliwia też przesył
jednostek do wybranej stacji w sposób określony w polu Transfer Type. Jeżeli
przemieszczenie jednostek odbywa się za pomocą taśmy lub wózka (opcja Convey lub
Transport
), to jednostka przed wejściem do modułu powinna przywłaszczyć sobie ten
środek transportu (np. w module Access, Request). Opcja Connect wymaga użycia po
module PickStation
modułu transportującego jednostki, np. Transport, Route.
Route przemieszcza jednostki do kolejnej stacji, określonej w polu Destination Type
(opcje dostępne w tym polu opisane są w module Leave). Istnieje możliwość
zdefiniowania w module czasu transportu (pole Route Time). Route
– podobnie jak inne
moduły, np. Leave – transportuje jednostki, ale różnica pomiędzy nimi jest wyraźnie
36
widoczna w trakcie animacji. Route
powoduje, że jednostki poruszają się same od stacji
do stacji, podczas gdy inne moduły, używające środka transportu zdefiniowanego w
module Transporter,
mają możliwość przedstawiania jednostek przewożonych danym
środkiem transportu, np. jednostka przemieszcza się od stacji do stacji załadowana na
ciężarówkę, wózek. Route jest ostatnim elementem w sekwencji modułów, nie można do
niego dołączyć innych modułów.
Station definiuje stację (opcja Station) lub zbiór stacji (opcja Set), do których jednostki są
transportowane. Nazwa stacji (Station Name) jednoznacznie identyfikuje miejsce, do
których można przesyłać jednostki. Funkcję modułu Station zawiera również moduł Enter.
Używając modułu transportu (np. Route, Leave) należy użyć także Station (lub Enter),
aby zdefiniować miejsca, do których jednostki będą przemieszczane. Moduł często jest
wykorzystywany w tych modelach, w których jednostki poruszają się według różnych
marszrut przez system, gdyż w prosty sposób definiuje miejsca, do których można wysłać
jednostki, np. za pomocą opcji Sequence.
Access przydziela jednostce wymaganą liczbę miejsca na przenośniku taśmowym o
nazwie Conveyor Name
po to, aby mogła być przekazana do miejsca przeznaczenia.
Jednostka czeka w kolejce, aż zostanie jej przydzielone miejsce na taśmie. Rodzaj kolejki
określa się w polu Queue Type. Rozmiar wymaganego miejsca może być określony
konkretną wartością liczbową w polu # of Cells lub atrybutem przypisanym wcześniej do
jednostki (np. w module Assign
) wskazującym, ile miejsca na przenośniku wymaga
jednostka.
Convey przesuwa jednostki umieszczone na przenośniku taśmowym o nazwie Conveyor
Name
do ich miejsca przeznaczenia, określonego w polu Destination Type. Czas
transportu zależy od prędkości taśmy i odległości między stacjami, wielkości te są
definiowane w module Conveyor i Segment
. Zanim jednostka będzie przewieziona, musi
mieć przydzielone miejsce na taśmie, np. przy pomocy modułu Access.
Exit zwalnia miejsce na taśmie o nazwie Conveyor Name, jeśli jednostka dotarła do
miejsca przeznaczenia. Domyślnie zwolniona zostaje taka ilość miejsca, jaka została
zajęta. W przeciwnym przypadku należy ilość zwalnianego miejsca określić w polu # of
Cells
. Jeżeli inne jednostki czekają w tej stacji na przydzielenie miejsca na przenośniku,
może być ono przydzielone natychmiast po zwolnieniu go przez inną jednostkę.
37
Start zmienia stan przenośnika z nieaktywnego na aktywny, który to stan został
ustaw
iony przez moduł Stop lub przez początkowe ustawienia symulacji. Zmiana
prędkości taśmy jest możliwa przy każdym użyciu tego modułu (w polu Velocity), a także
za pomocą zmiennej VC (Conveyor). Jednostki znajdujące się na uruchamianej taśmie
pozostają na tych miejscach, które zajmowały w chwili jej zatrzymania.
Stop zatrzymuje aktywny przenośnik, zmieniając jego stan na nieaktywny. Ponownie
można go uruchomić modułem Start lub przez początkowe ustawienia symulacji.
Wszystkie jednostki w chwili zatrzymania t
aśmy pozostają na swoich miejscach, także po
uruchomieniu taśmy nie zmieniają miejsca.
Activate zwiększa liczbę dostępnych środków transportu, uruchamiając transportery
zatrzymane modułem Halt lub aktywując te, które początkowo były zdefiniowane jako
nie
aktywne. Aktywowany transporter może być natychmiast przydzielony jednostce.
Pozostawienie pustego pola Unit Number
oznacza, że zostaje uruchomiony środek
transportu o najmniejszym numerze i nazwie Transporter Name.
Allocate przydziela jednostce środek transportu o nazwie Transporter Name, ale nie
przemieszcza go do miejsca pobytu jednostki (czyni to moduł Move). Jeśli jest więcej, niż
jeden dostępny transporter, w polu Selection Rule wskazuje się, według jakich reguł będą
one przydzielane. Numer przydzielonego transportera przechowywany jest w atrybucie,
którego nazwę określa się w polu Save Attribute. Jeżeli nie ma żadnego dostępnego
transportera, jednostki czekają w kolejce zdefiniowanej w polu Queue Type. Allocate i
Move
mogą zastąpić moduł Request.
Free zwalnia środek transportu, który został ostatnio przydzielony jednostce. Może on
być natychmiast przydzielony innej jednostce, która czeka w kolejce. Jeżeli nie określono
nazwy i numeru transportera, to zostanie zwolniony ten, który był przydzielany jako
ostatni.
Halt zmienia status środka transportu na nieaktywny, ponownie aktywować można go
modułem Activate. Dezaktywować można tylko pusty transporter. Jeśli w danym czasie
jest on zajęty, zmiana stanu nastąpi dopiero po zwolnieniu go przez transportowaną
jednostkę. Jeżeli nie określono w polu Unit Number numeru transportera, to zostanie
zatrzymany transporter o numerze najmniejszym (bez względu na to, do której jednostki
został wcześniej przydzielony), a nie ten, który jest przydzielony do jednostki obecnej w
module Halt.
38
Move przesuwa środek transportu z miejsca jego pobytu do miejsca, gdzie czeka na
niego jednostka wymagająca transportu. Docelowe miejsce jest definiowane w polu
Destination Type
. Zanim zostanie przesunięty, musi zostać przydzielony jednostce, co
można zrobić modułem Allocate. Moduł nie przemieszcza pojazdu wraz z jednostką do
następnej stacji. Można to zrobić za pomocą np. modułu Transport. Czas przejazdu
zależy od prędkości pojazdu (zdefiniowanej w polu Velocity lub w module Transporter)
oraz od odległości pomiędzy stacjami (określonej w module Distance). Określenie
prędkości w polu Velocity jest tymczasowe i dotyczy tylko tego numeru pojazdu, który jest
przesuwany. Jeżeli nie określono numeru przesuwanego transportera, domyślnie jest
uznawane, że dotyczy to ostatnio przydzielonego do jednostki pojazdu.
Request powoduje przydzielenie pojazdu do jednostki i przesunięcie go z jego miejsca
pobytu do miejsca, w którym jest ta jednostka. Request jest połączeniem modułów
Allocate i Move. Podobnie jak w Allocate
, pojazd przydziela się podając jego nazwę i
określając reguły, według których będzie wybrany, jeżeli jest kilka dostępnych pojazdów
(reguły są analogiczne, jak w module Leave). Można także określić tymczasowo
prędkość pojazdu jadącego do miejsca pobytu jednostki. Jeżeli w danej chwili nie ma
dostępnego pojazdu, jednostki czekają w kolejce.
Transport przemieszcza jednostki z jednej stacji do następnej, przy czym pojazd musi
być wcześniej przydzielony jednostce, np. modułem Request lub Allocate (po tym module
należy użyć modułu Move, który przesunie transporter do miejsca pobytu jednostki).
Miejsce przeznaczenia wybiera się w polu Destination Type. Opcja Sequential wymaga
wcześniejszego przypisania jednostce marszruty (np. w module Assign) do atrybutu
Entity.Sequence
. Kolejność przejścia jednostki przez system określa się w module
Sequence
. Czas transportu zależy od prędkości pojazdu i odległości między stacjami,
zdefiniowanymi w modułach Transporter i Distance.
Advanced Transfer zawiera
także następujące moduły danych:
Sequence jest stosowany do definiowania kolejności stacji, w jakiej jednostki
przechodzące przez system będą je odwiedzać. Moduł jest często wykorzystywany w
modelowaniu systemów wytwarzania. Moduł zawiera listę stacji uporządkowaną w takiej
kolejności, w jakiej jednostka będzie przez nie przechodzić. Każdy typ jednostek może
mieć przypisaną inną marszrutę, zgodnie z którą odwiedzać będzie dane stanowiska (np.
maszyny). W tym celu należy przypisać do atrybutu Entity.Sequence (automatycznie
przydzielanego do jednostek) nazwę sekwencji stacji, zdefiniowanej w module Sequence,
39
np. kolejność dla jednostki P1 ma nazwę Sequence1, więc zapis dla P1 będzie miał
postać Entity.Sequence == Sequence1. Można to zrobić np. modułem Assign. Moduły
transportujące jednostki między stacjami (Leave, Route, Transport) posiadają w polu
Station lub Destination Type
opcję Sequential (Sequence), która pozwala przemieszczać
jednostki zgodnie z przypisaną im kolejnością. W module Sequence istnieje też
możliwość przypisania atrybutu, symbolu graficznego do każdej jednostki, która jest
obecna w danej stacji (np. czasu obróbki, wyglądu). Dokonuje się tego w polu
Assignments. Pole Step Name
służy do nazywania danego etapu w sekwencji, np. Step1
Part1. Podanie w polach Next Step
nazw (pochodzących z kolumny Step Name)
spowoduje, że stacje nie będą odwiedzane w wymienionej kolejności, ale w kolejności
określonej przez te pola. Jednostki posiadają trzy wbudowane atrybuty, które
przechowują informację odnośnie ich sekwencji. Atrybut Entity.Sequence przydziela
jednostce daną sekwencję, która musi być przypisana przez użytkownika. Entity.JobStep
określa pozycję jednostki w sekwencji (np. wartość 2 oznacza, że jednostka odwiedza
drugą stację), a Entity.Station – stację, w której jednostka jest lub do której jest
transportowana. Ich wartość jest aktualizowana automatycznie.
Conveyor definiuje przenośnik taśmowy (jeden lub więcej), który przemieszcza jednostki
pomiędzy stacjami systemu. Używanie w modelu przenośnika wymaga ustawienia
segmentów, które go tworzą, za pomocą modułu Segment. Nazwę ustawień segmentów
wpisuje się w polu Segment Name. Należy tak dobrać rozmiar komórki Cell Size, aby
suma odległości pomiędzy stacjami była przez nią podzielna. Moduł określa także
prędkość taśmy (pole Velocity), rozmiar podstawowej komórki (pole Cell Size),
maksymalną liczbę komórek zajmowanych przez jednostki (pole Max Cells Occupied),
początkowy status – aktywny lub nie (pole Initial Status). Jednostka może zajmować na
taśmie dowolną liczbę komórek. Pole Type określa typ przenośnika: Accumulating –
podczas załadunku lub rozładunku jednostki przenośnik nie zatrzymuje się, a jednostka
wchodząca na taśmę lub opuszczająca ją powoduje chwilowy zator (tzn. odległości
pomiędzy jednostkami zmieniają się) lub Non – Accumulating – przenośnik zatrzymuje
się na czas ładowania lub rozładowania jednostki, w tym czasie wszystkie jednostki
obecne na taśmie również się zatrzymują, a odległości pomiędzy nimi są stałe.
Segment definiuje segmenty, jest uzupełnieniem modułu Conveyor. Trasa, po której
porusza się przenośnik, składa się z szeregu połączonych segmentów. Każdy segment
zaczyna się i kończy w stacji. Definicja przenośnika zawiera nazwę początkowej stacji
(Beginning Station
) oraz listę następnych stacji (Next Station) i odległości pomiędzy nimi
(Lenght
), które muszą być liczbami całkowitymi. Dystans definiuje się pomiędzy daną
40
stacją, a stacją wymienioną we wcześniejszym wierszu, czyli liczba wpisana w wierszu 2
jest odległością pomiędzy stacją wymienioną w 1 i 2 wierszu. Jednostki mogą się
przemieszczać tylko w jednym kierunku, od początkowej stacji do następnych.
Przenośnik ma postać taśmy – gdy nazwa początkowej stacji jest inna od nazwy stacji
końcowej lub postać pętli (loop) – wtedy stacja początkowa jest zarazem stacją końcową,
przy czym nie ma znaczenia, która stacja jest wybrana jako początkowa.
Transporter służy do definiowania ruchomych urządzeń transportowych, takich jak
wózki, samochody, ludzie. Pole Capacity ustawia liczbę dostępnych transporterów
danego typu. Pole Distance Set
zawiera nazwę ustawienia, które jest zdefiniowane w
module Distance. Distance
określa, pomiędzy jakimi stacjami będzie się przemieszczał
transporter oraz jaka jest odległość między nimi. Pole Velocity pozwala ustawiać
prędkość poruszania się transportera, którą można zmieniać na wiele sposobów, np. w
modułach Move, Request i Transport (pole Velocity) lub przez przypisanie nowej wartości
zmiennej VT (Transporter)
(przy użyciu modułu Assign). Istnieje wiele zmiennych, za
pomocą których można uzyskać informacje np. o miejscu pobytu danego wózka (zmienna
LT (Transporter, Unit Number)
), liczbie zajętych wózków (zmienna NT (Transporter)) i
wiele innych.
Distance służy do definiowania odległości pomiędzy stacjami. Z tych ustawień korzysta
transporter, który przemieszcza jednostki pomiędzy tymi stacjami. Moduł ten jest
koniecznym uzupełnieniem modułu Transporter – w polu Distance Set należy wprowadzić
nazwę ustawienia (Name) zdefiniowanego w module Distance. Odległość pomiędzy
stacjami i prędkość transportera wyznacza w trakcie symulacji czas, który jest potrzebny
do przemieszczenia się środka transportu między danymi stacjami. W polu Stations
wprowadza się nazwy dwóch stacji i odległość pomiędzy nimi (tylko liczby całkowite,
nieujemne), przy czym należy uwzględnić wszystkie kombinacje stacji, które odwiedza
wózek, gdyż moduł nie oblicza sam odległości. Np. podanie dystansu pomiędzy stacją
S1
– S2 oraz S2 – S3 nie wystarczy, gdy transporter ma także poruszać się na trasie
S1
– S3. Jeśli nie określono dystansu, który jest potrzebny wózkowi, aby się przemieścić,
w trakcie symulacji pojawi się uwaga, że dystans pomiędzy danymi stacjami został
przyjęty jako 0. Jeżeli odległość pomiędzy stacjami S1 – S2 jest taka sama, jak pomiędzy
S2
– S1, wystarczy wprowadzić tę parę stacji raz (wtedy nie ma znaczenia, która stacja
jest początkowa, a która końcowa), jeżeli jest inna – należy wprowadzić ją dwukrotnie,
rozróżniając stację początkową i końcową.