background image

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

background image

 

 
 

 

  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.datOutput 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

background image

 

 
 

 

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 

background image

 

 
 

 

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 

background image

 

 
 

 

  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 AnalyzerVisual 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 

background image

 

 
 

 

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 

background image

 

 
 

 

jednostek  czeka  w  każdej  kolejce.  Można  ustawiać  maksymalną  długość  kolejki,  określać 

r

eguły kolejkowania (np. FIFOLIFO) 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ć 

background image

 

 
 

 

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 

background image

 

 
 

 

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 BasicOptions 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ł 

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 

background image

 

 
 

 

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 

background image

 

 
 

 

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. 

 

 

background image

 

 
 

 

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. 

 

 

 

background image

 

 
 

 

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

 

background image

 

 
 

 

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 NameQueue NameTransporter 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 ResourceQueueVariable

 

background image

 

 
 

 

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 FirstSum lub 

Product.  Opcja  Last 

powoduje  przydzielenie  takich  wartości  atrybutom  specjalnego 

przeznaczenia, jak posiadane przez ostatniego członka w grupie. Wartości atrybutów 

background image

 

 
 

 

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  FirstSum 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. 

background image

 

 
 

 

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  

– 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 

– 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

background image

 

 
 

 

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.  

background image

 

 
 

 

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 / TimeTotal 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. 

background image

 

 
 

 

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.PictureEntity.StationEntity.SequenceEntity.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. 

background image

 

 
 

 

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 AddCopy 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 

background image

 

 
 

 

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ę; 

background image

 

 
 

 

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  – 

background image

 

 
 

 

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 R1R2R3, 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

 

 

 

background image

 

 
 

 

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 

background image

 

 
 

 

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 SeparateDropoff). 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ę 

background image

 

 
 

 

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;  

background image

 

 
 

 

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ć 

background image

 

 
 

 

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 

background image

 

 
 

 

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. 

background image

 

 
 

 

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 

background image

 

 
 

 

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. 

background image

 

 
 

 

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. 

 

background image

 

 
 

 

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ść 

background image

 

 
 

 

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. TransportRoute

 

  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 

background image

 

 
 

 

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ę. 

 

background image

 

 
 

 

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

background image

 

 
 

 

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

background image

 

 
 

 

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ą 

background image

 

 
 

 

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 MoveRequest 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ą.