V této části výukových materiálů jsou obsaženy popisy jednotlivých prvků modelu, které budete při své práci používat. Stroje: 1) Dávková výroba – na kartě stroje je nutné nastavit typ na Batch a poté vložit minimální počet součástek, které jsou k výrobě dávky potřeba a maximální počet součástek. Obvykle je max i min počet stejný. 2) Montování – na kartě stroje je nutné nastavit typ na Assembly a vložit počet součástek, které budou potřeba k výrobě nové (smontované) součástky. Dále musíme specifikovat, z čeho se bude nová součástka vyrábět. K tomu slouží okno, které rozklikneme tlačítkem From… Musíme použít příkaz SEQUENCE, který dále rozšíříme příkazem /Wait což znamená, že stroj bude čekat na to, až bude mít k dispozici v zásobnících (buffers) pojmenovaných jako TOPS, BOTTOMS, SCREWS určený počet kusů, který je specifikovaný číslem v závorce po znaku #. Poslední věc, kterou musíme nastavit je vznik nového prvku. To provedeme v oknu, které vyvoláme tlačítkem Actions on Finish… Do okna vložíme příkaz CHANGE ALL to ASSM, který říká, že všechny prvky, které do stroje vstoupily se změní na prvek pojmenovaný ASSM (musí být v modelu nadefinovaný). Pro bližší seznámení s montováním nových prvků si projděte model Dem1.mod. 3) Produkční stroj – z jedné součástky vyrobí n součástek. V našem případě může jít například o pilu. Typ je nutné nastavit na Production a důležitá je část Output. V ní uvedeme, na kolik částí se má původní výrobek „rozpadnout“ a v kolonce Part Type uvedeme, na kterou součástku se bude původní součástka rozpadat. Pracovníci Jejich význam je především v případech, kdy stroje nemohou operovat bez jejich přítomnosti, nebo je nutné stroje nastavit nebo opravit. 1) Řízení stroje – budeme uvažovat např. ponk. K tomu, abychom nastavili, kdo bude u ponku pracovat, musíme použít tlačítko Labor Rule… Do něj pak jednoduše vložíme jméno pracovníka, který má práci provádět. Bez něj nebude stroj pracovat. 2) Nastavení – používá se vždy, když je potřeba stroj nastavit (např. na jiný výrobek) nebo na něm provést pravidelnou údržbu atd. V našem případě půjde o nakládání materiálu pro zpracování v dávkovém stroji. Nastavení (setup) se vkládá v záložce Setup karty stroje. Vložení pravidla nastavení začneme kliknutím na čtvercovou ikonku v pravém horním rohu. Následně se nám do tabulky vloží nový řádek. Musíme vyplnit popis pravidla, následně jeho typ, kterým je v našem případě počet operací. Nastavení (nakládka) se provádí po každé operaci a začíná již před první operací. Je k ní potřeba pracovník a trvá 5 časových jednotek. Pracovníka přidáte k pravidlu tak, že kliknete na políčko pod Labor Rule, kliknete na zahnutou šipku a otevře se Vám okno, do kterého vložíte jméno pracovníka, který bude nastavení provádět. 3) Oprava – vkládání poruch a jejich řešení je velmi podobné jako předchozí příklad pro nastavování stroje. Místo záložky Setup použijeme záložku Breakdowns. Součástky 1) Pasivní – nastavení typu součástky na pasivní znamená, že součástky může být v modelu (zejména pokud jde o vstupní součástky – suroviny) neomezené množství. U součástky se nic kromě pravidel nenastavuje. 2) Aktivní – umožňuje nastavit u součástky zejména informace o vstupu do modelu (pokud jde o surovinu). Lze tak nastavit maximální počet dodávek, čas první dodávky, dobu mezi dodávkami a počet kusů součástky v jedné dodávce. 3) Cesta součástky – pokud potřebujeme z některých důvodů nastavit složitější chování součástky, než jen jednoduché předávání z jednoho prvku procesu k druhému, můžeme využít záložku Route v kartě součástky. Na záložce Route vybereme tlačítko Add/Remove. Zobrazí se nám další dialogové okno, v kterém můžeme přidávat jednotlivé body na „cestě“ součástky modelem. Tlačítkem Add a Remove můžeme přidávat jednotlivé body, tlačítky Move Up a Move Down jimi můžeme v dané sekvenci pohybovat. Pro každý bod na cestě musíme určit objekt, do kterého se součástka přemístí. Na výběr nemáme jen z námi vytvořených objektů, ale i z objektů, které Witness obsahuje implicitně. Jde o SHIP, který znamená výstup z modelu, SCRAP, který znamená zmetek, ASSEMBLE, který znamená spojení součástek. U každé součástky se dají určit doby nastavení stroje a doby zpracování. Pokud nejsou nastaveny, bere se hodnota, která je zadaná u stroje. Pro lepší přehled lze zobrazit celou cestu součástky modelem tlačítkem Summarize. Při nastavování výstupních pravidel je pak nutné nastavit výstup do proměnné ROUTE tak, systémem, který je na obrázku. Vstupní pravidla, která nejdou vytvořit pomocí výstupních pravidel některých objektů (např. zásobníky), se netvoří pomocí funkce Route na kartě součástky, ale pomocí normálního vstupního pravidla. Dopravníky V paletě je dopravník umístěn v záložce Transport pod názvem Conveyor. Do modelu se vkládá stejně jako všechny ostatní prvky (označit jedním kliknutím a pak kliknout do modelu). Pokud chceme upravit tvar dopravníku, použijeme k tomu klávesu Ctrl. Pokud ji budeme držet, tak se při přejetí kurzorem přes malé bílé čtverečky nebo středovou šipku, místo šipkového kříže zobrazí dvojšipka. Pak už jen stačí kliknout a dopravník natáhnout nebo měnit úhel jeho ramen. Pokud potřebujeme přidat nový bod zlomu, musíme podržet klávesu Ctrl a kliknout na šipku a dopravník se rozdělí na další část. U dopravníku lze nastavit několik důležitých hodnot. Ty se mírně liší podle toho, jestli je dopravník typu Indexed nebo Continuous. 1) Indexed Conveyors – dopravníky, které jsou označeny jako Indexed si můžete představit jako pásy, které mají „přihrádky“, respektive na dopravníku je jasně vymezené místo (index) pro součástku. Počet přihrádek (length in parts) znamená také kapacitu dopravníku, respektive počet součástek, které lze na dopravník teoreticky umístit. Index time je doba pohybu přihrádky na místo následující přihrádky. Pokud je nutné např. z váhových důvodů omezit maximální kapacitu dopravníku, lze tak učinit v políčku pro Maximum Capacity. Dopravník může být rozdělen na další dva typy. Pokud jde o Fixed dopravník, jsou přihrádky „nepohyblivé“. To znamená, že vzdálenost mezi součástkami je konstantní. Pokud je dopravník Queuing, znamená to, že součástky se mohou pohybovat do momentu, kdy před nimi je další součástka. Tedy mohou se pohybovat přes prázdná místa na dopravníku, i když z dopravníku nejsou odebírány součástky. Dopravník tak slouží částečně i jako zásobník. 2) Continuous Conveyors – se na rozdíl od Indexed Conveyors používá v případě, kdy hraje velikost součástky (různých součástek) roli. Dopravník již není rozdělen na přihrádky, ale podle délky. V hodinách tento typ dopravníku využívat nebudeme, případné podrobné informace lze nalézt v nápovědě Witnessu pod heslem Continuous Conveyors. Zásobníky V paletě lze zásobníky najít buď na záložce Basic nebo More Buffers. Nastavení zásobníků je jednoduché, stačí obvykle vložit pouze jejich jméno a kapacitu. Dalším úkonem, který je obvykle nutné udělat, je často změna podoby zobrazování zásobníku. Implicitně se u zásobníku zobrazuje jeho obsah graficky, obvykle ale chceme, aby se zobrazoval početně. Ke změně nastavení musíme kliknout pravým tlačítkem na šipečku pod názvem zásobníku. Poté musíme zvolit v kontextové nabídce Update Graphic… Zobrazí se nám okno s volbou grafického zobrazení. Zobrazení Queue musíme změnit na Count a pokud bude v zásobníku větší počet součástek (víc jak 999), tak musíme zvýšit i počet zobrazených číslic. Pokud jsme hotovi, vše potvrdíme tlačítkem Update. Proměnné Pokud chceme v modelu zobrazovat některé údaje (např. počet vyrobených kusů) nebo počítat například výnosy, nebo hledat nastavení, při kterém chceme např. maximalizovat zisk, potřebujeme proměnné nebo funkce. V paletě lze najít tyto objekty v záložce Variables. My budeme potřebovat celočíselné proměnné a funkce. Proměnnou (Vinteger) do modelu přidáno stejně jako ostatní objekty (jedním kliknutím označit a pak dalším kliknutím do modelu vložit). Nastavení vlastností samotné proměnné je jednoduchá záležitost, stačí ji jen vhodně pojmenovat. V našem případě např. output. Zásadní úkon, který musíme provést, aby nám proměnná něco zobrazovala, spočívá v nastavení přiřazení hodnot(y) do proměnné při některé činnosti v rámci běhu simulace. Pokud chceme nastavit počet kusů, které byly vyrobeny, můžete to provést například tak, že vložíme přiřazovací výraz do úplně posledního prvku v modelu. V našem případě jde o dopravník. Tlačítkem Actions On Front (vykoná se, pokud dopravník součástka opustí) vyvoláme okno, do kterého můžeme vložit příkaz. Výraz output = output + 1 znamená, že do proměnné output se vloží její stávající hodnota a přičte se k ní jednička. Jde tedy o zvýšení hodnoty proměnné output o jedničku vždy, když součástka dojde na konec dopravníku. Výraz pro Výnosy je logikou shodný. Hodnota proměnné se zvýší o 300. V případě, že chceme využít optimalizační možnosti ve Witness, musíme mít nadefinovanou tzv. objektivní funkci (stejné použití pro optimalizovanou funkci se používá např. i v simplexové metodě), kterou chceme optimalizovat (minimalizovat nebo maximalizovat). Pokud si vybereme při optimalizaci modelu, že chceme na základě nějakých omezení (viz část výukových materiálů věnovaná optimalizaci) maximalizovat zisk, musíme si nadefinovat ziskovou funkci. V případě karty funkce, musíme nastavit již více skutečností, než jsme nastavovali u proměnné. Kromě názvu funkce, musíme vybrat její typ. Pokud je hodnota, kterou funkce nabývá z oboru celých čísel, použijeme Integer. Nejdůležitějším krokem je nastavení těla funkce. Okno pro vytvoření těla funkce vyvoláme tlačítkem Actions… Důležitý je příkaz RETURN. Ten říká, že funkce má vracet hodnotu, jejíž velikost je vyjádřena výrazem, který následuje. V našem případě je situace jednoduchá, protože vracíme pouze hodnotu proměnné Zisk. Pokud bychom neměli nadefinovanou hodnotu Zisk, museli bychom vložit za příkaz RETURN například výraz Výnosy – Náklady. Data Pokud potřebujete do modelu umístit náhodné proměnné (např. poruchy, poptávka atd.), je možné použít buď standardní náhodná rozdělení (normální, binomické, Poissonovo atd.), anebo si nadefinovat vlastní. V případě, že chcete použít předem nadefinované rozdělení, je k tomu nutné použít „asistenta“. Pro výběr rozdělení je nutné mít kurzor v kolonce dialogového okna nebo karty prvku. Poté kliknout pravým tlačítkem na požadované rozdělení a z kontextové nabídky zvolit „Insert with distribution wizard“. Zobrazí se dialogové okno s grafem rozdělení a parametry, které je nutné vložit. Pro další informace o rozděleních, které Witness nabízí je nutné zadat do vyhledávání v rejstříku nápovědy „standard“ a vybrat distributions. V případě, že standardní rozdělení nevyhovují hodnotám, které naše veličina nabývá, můžeme si nadefinovat vlastní rozdělení. Provedeme to tak, že jej přidáme (podobně jako např. proměnnou) z palety prvků modelu. Rozdělení najdeme v záložce Data. Witness poskytuje dvě předdefinovaná vlastní rozdělení – celočíselné diskrétní a reálné spojité. První se zpravidla používá v souvislosti se součástkami (kusy), druhé s časy. Ke vložení vlastního rozdělení prvek označíme jedním kliknutím a do modelu ho vložíme dalším kliknutím na místo určení. Pro vložení hodnot rozdělení musíme zobrazit kartu rozdělení. Rozdělení pojmenujeme. Pro vkládání vlastních hodnot vložíme do pole Value hodnotu náhodné proměnné a do pole Weight její četnost. Poté klikneme na tlačítko Add a hodnota se s četností přidá. Na obrázku připomíná „graf“ hodnot s jejich četností histogram. Pokud chceme hodnotu odebrat nebo změnit, klikneme na ni v okně a buď odebereme (Remove) nebo změníme hodnoty a klikneme na Update. Pro vložení můžeme opět využít levého okna s asistenty. Vybereme místo v poli nebo dialogovém okně, kam chceme vlastní rozdělení vložit a dvakrát klikneme na jeho název v seznamu rozdělení. Ještě se přesvědčíme, že se nám vloží s prázdnými kulatými závorkami na konci. Reporty Witness umožňuje několik možností pro reportování a sledování toho co se (kvantifikovaně) při simulaci děje. Jednou z možností jsou proměnné, jejichž použití jsme si vysvětlili v jiné části textu. Teď se budeme zabývat dalšími možnostmi. 1) Koláčové grafy – používají se zejména pro sledování stavů jednotlivých prvků v modelu. V paletě je najdeme v záložce Reports pod názvem Pie. Nastavení koláčového grafu spočívá v několika krocích. Nejprve musíme vybrat objekt, u kterého chceme zobrazovat statisticky. To provedeme na záložce Element States tím, že zaškrtneme políčko pro zobrazení stavů objektu a následně daný objekt vybereme. Ještě musíme graf pojmenovat, abychom věděli, ke kterému stroji patří a nastavit dobu obnovování grafu. Pokud chceme, aby se graf obnovil po každém kroku, nastavíme 1.0. Legendu si můžete zjistit např. tím, že kliknete na grafu pravým tlačítkem a vyberete si Update Graphic a zobrazí se Vám použití jednotlivých barev. Ke stejným statistikách v číselné podobě se můžete dostat tak, že kliknete pravým tlačítkem na příslušný stroj a zvolíte Statistics. 2) Grafy Pro vložení grafu využijeme prvek Timeseries v záložce Reports (viz obrázek výše). Prvek bude po vložení do modelu vypadat takto: Abychom ho nastavili, musíme na něj dvakrát kliknout a zobrazí se nám dialogové okno. Důležité je vložit údaje (obvykle nějakou proměnnou) do pole Plot x, které představují křivky, které se budou vykreslovat do grafu. Pak ještě musíme vložit interval, na jehož základě se budou data do grafu vkládat. Osa x totiž znamená čas simulace. Vzhledem k tomu, že musíme obvykle upravit rozsah hodnot, které se budou zobrazovat a další grafická nastavení, musíme kliknout na graf (ne na jeho název) pravým tlačítkem a zobraz si z kontextové nabídky možnost „Update graphics“. Obvykle musíme nastavit hodnoty, který námi sledovaná proměnná nabývá (Min a Max Display Values), „hustotu“ hodnot sledovaných na ose y (Number of Observations) a případně i počet zobrazených znaků proměnné (Total Characters). Pokud jsme s nastavením zobrazení hotovi, klikneme na tlačítko Update. Graf pak může vypadat např. takto: 3) Reportování nákladů Witness umí sledovat náklady, které vznikají v souvislosti s jednotlivými prvky modelu. Pro vložení nákladů je nutné použít záložku Costing na kartě prvku. Nový řádek pro sledování nákladů vložíme určeným tlačítkem. Obvykle lze nastavit několik typů nákladů. „Fixed Use“ znamená kolik peněz stojí jedna časová jednotka daného prvku (lze použít např. pro odpisy). „Busy Use“ znamená, kolik peněz stojí jedna časová jednotka provoz prvku (např. stroje). „Idle Use“ znamená, kolik peněz stojí jedna časová jednotka „zahálení“ prvku (např. když stroj běží – spotřebovává elektřinu, ale nemá co zpracovávat). Poslední typ, „Use Per Operation“ udává výši nákladů, která vznikne jednou operací. Pokud chceme přidat náklady manuálně, můžeme použít funkci AddCost(). Pokud chceme například pro prvek Skřínka přidat náklad 200, použijeme v příslušném dialogovém okně výraz AddCost (Skrinka,200). Zobrazení celkových nákladů můžeme provést například pomocí funkce GetTotalCost() tak, že do příslušného dialogového okna nějaké akce přidáme výraz pro proměnnou Naklady = GetTotalCost (). Sledování celkových nákladů můžeme provést i pomocí funkce na zobrazení statistik, která se nachází v menu Reports pod položkou „Cost, Revenue and Sustainability Reports…“. Hodnoty, které jsou v ní obsažené po nějaké době běhu simulace mohou vypadat takto: