Politechnika Wrocławska, Wydział Mechaniczny Katedra Technologii Laserowych, Automatyzacji i Organizacji Produkcji Symulacja procesów produkcyjnych Op...
17 downloads
34 Views
2MB Size
Politechnika Wrocławska, Wydział Mechaniczny Katedra Technologii Laserowych, Automatyzacji i Organizacji Produkcji
Symulacja procesów produkcyjnych
Opiekun zajęć: dr inż. Arkadiusz Kowalski mgr inż. Michał Olejarczyk mgr inż. Andrzej Pawlak
Plan zajęć dydaktycznych Symulacja procesów produkcyjnych WPROWADZENIE ĆWICZENIE 1
–
model deterministyczny – wyznaczenie częstotliwości dostaw
ĆWICZENIE 2
–
uwzględnienie operacji hartowania
ĆWICZENIE 3
–
uwzględnienie operacji KJ
ĆWICZENIE 4
–
wprowadzenie różnorodnego plan produkcji
ĆWICZENIE 5
–
wprowadzenie operacji montażu
ĆWICZENIE 6
–
zdefiniowanie różnorodnych środków transportu oraz uwzględnienie kosztów
ĆWICZENIE 7
–
niedeterministyczny model symulacyjny linii produkcyjnej
ĆWICZENIE 8
–
zdefiniowanie przerw w pracy oraz wykorzystanie makr
ĆWICZENIE 9
–
zdefiniowanie zmiennych i atrybutów, charakteryzujących badany system wytwórczy
ĆWICZENIE 10 –
program SimRunner, pierwsza optymalizacja
ĆWICZENIE 11 –
program SimRunner, druga optymalizacja
str. 2
Wprowadzenie Etapy budowy modelu symulacyjnego typowego systemu wytwórczego Budowa modelu symulacyjnego w środowisku ProModel 2014 składa się z następujących głównych kroków, odpowiadających modułom dostępnym z menu Build: Wybranie rodzajów urządzeń, maszyn na których będą przebiegały procesy wytwórcze (Locations), Zdefiniowanie produktu (Entities), Dodanie ścieżek pracy (Path Networks), Określenie zasobów produkcyjnych (Resources) Utworzenie logiki procesu (Processing), Harmonogram przypływu produktów (Arrivals),
Założenie nowego modelu symulacyjnego Przed utworzeniem nowego modelu (Rysunek 1) należy określić jednostki czasu [h] i długości [m] oraz wybrać bibliotekę elementów graficznych (menu File/New/General Information). Istnieje możliwość wprowadzenia warunków logicznych, które pozwolą zainicjalizować i zakończyć proces symulacji. Tło na którym będzie tworzony system można utworzyć własnoręcznie (menu Build/Background Graphics/Front of Grid lub Build/Background Graphics/Behind Grid) lub zaimportować plik graficzny (Edit/Import Graphic). Należy skorzystać z dostępnego pliku o nazwie Tutorialback.wmf. Po określeniu parametrów siatki (View/Layout Settings/Grid Settings) można przystąpić do właściwego budowania modelu.
Rysunek 1. Okno dialogowe przy otwieraniu nowego modelu
str. 3
Moduł Locations – lokalizacja, stanowiska robocze Moduł Locations (Rysunek 2) pozwala na reprezentację fizyczną stanowiska roboczego, na którym będą zachodziły operacje i zabiegi technologiczne lub będą podejmowane decyzje. Stanowiska robocze umieszczane są w systemie symulacyjnym poprzez ich wybór z graficznego menu i wstawienie do okna Layout. Odległości pomiędzy urządzeniami są definiowane w następnych krokach. Możliwe jest opisanie wstawianych urządzeń nazwami, ich edycja i skalowanie. Podkład graficzny może przedstawiać np. halę modelowanego systemu.
Rysunek 2. Okno modułu Locations
Graficzną bibliotekę maszyn i urządzeń można uzupełniać o własne maszyny i urządzenia, środki transportowe itp. za pomocą edytora grafiki (Graphics Editor). Parametry określające umieszczane maszyny i urządzenia: Icon, Name, Capacity, Units, DTs, Stats, Rules, Notes są umieszczone w oknie Locations. Opcja Icon przedstawia ikonę użytą do graficznej reprezentacji stanowiska roboczego podczas przeprowadzania symulacji, kolumna Name zawiera jego nazwę. Capacity pozwala na zdefiniowanie wydajności maszyny (rozumianej jako ilość przedmiotów, które jednocześnie poddawane są manipulacji). Opcja Units określa ilość identycznych stanowisk pracy, a Stats rodzaj generowanej statystyki (Time Series jest najbardziej szczegółowym rodzajem statystyki. Użycie edytora czasów przerw i wyłączeń DTs umożliwia określenie czasów i warunków w jakich ma nastąpić czasowe wyłączenie maszyny podczas symulacji. W tym miejscu wykorzystuje się czas t pz, jako czas przezbrojeń (Setup downtimes). Definiowanie reguł dla elementów wchodzących i wychodzących na urządzenia wytwórcze odbywa się w oknie opcji Rules. Możliwe są następujące metody wyboru elementów oczekujących na wejściu: najstarsze priorytetem, przypadkowe, najmniejsza dostępna wydajność, natomiast na wyjściu można ustawić następujące priorytety: bez kolejki, FIFO, LIFO, „po typie”.
str. 4
Moduł Entities – elementy, jednostki Moduł Entities – elementy, które podczas przebiegu symulacji procesu są przedmiotem czynności lub podjętej decyzji, czyli np. części produktu, zespoły części, wyroby (Rysunek 3). Określamy w tym menu elementy będące przedmiotem manipulacji transportowych i technologicznych.
Rysunek 3. Okno modułu Entities
Po wyborze z graficznej biblioteki elementów istnieje możliwość edycji wybranego przedmiotu i dokonanie zmian np. jego wielkości. Opcje określające wprowadzane elementy: Icon, Name, Speed, Stats, Notes. Opcje Icon i Name określają jednoznacznie element w systemie, Speed – domyślna prędkość, z jaką będzie przemieszczany elementy po sieci (mpm - metr na minutę, fpm – stopa na minutę).
Moduł Path Network – ścieżka, droga Path Network – ścieżka, droga wzdłuż której przemieszczają się zasoby produkcyjne. Budowana jest za pomocą myszki, podwójne kliknięcie umożliwia utworzenie kolejnych węzłów sieci (Rysunek 4). Opcje dla tworzonej sieci: Graphics, Name, Type, T/S, Path, Interfaces, Mapping, Nodes. Do identyfikacji ścieżki w systemie symulacji wykorzystuje się kolumnę Graphics (kolor drogi) i Name. W opcji Type wybieramy typ projektowanej sieci (Non-Passing, Passing, Crane), a w kolumnie T/S rodzaj jednostki w jakiej zadaje się parametry ruchu po tworzonej sieci. Położenie urządzeń wprowadza się z klawiatury jako poszczególne odległości pomiędzy węzłami sieci – opcja Path.
str. 5
Rysunek 4. Okno modułu Path Network
Kolejnym krokiem jest utworzenie interfejsów pomiędzy węzłami sieci a poszczególnymi urządzeniami wytwórczymi poprzez wybranie opcji Interface i kliknięcie na węzeł a następnie na wybrane stanowisko robocze. Interfejsy umożliwią połączenie sieci z urządzeniami umieszczonymi na modelowanej hali przemysłowej. Opcja Mapping określa kolejność ruchu wzdłuż sieci, w jej rozgałęzieniach, Nodes umożliwia dodanie dodatkowych węzłów.
Moduł Resources – zasoby, środki W module tym wybieramy z menu graficznego zasoby produkcyjne tzn. środki transportowe, pracowników oraz narzędzia i przyrządy pomocnicze (Rysunek 5). Do parametrów środków produkcyjnych należą: Icon, Name, Units, DTs, Stats, Specs, Search, Logic, Points. Opcje Icon i Name pozwalają na identyfikację zasobów w systemie wytwórczym. Opcja Units podaje liczbę jednakowych zasobów, edytor czasów przerw DTs pozwala na określenie przerw czasowych dla wybranych środków produkcyjnych, Stats umożliwia wybór rodzaju tworzonej statystyki. Kolejnym krokiem jest dołączenie danego środka transportowego do ustalonej wcześniej sieci przemieszczeń w oknie opcji Specs (Specifications). Definiujemy w nim prędkość ruchu zasobów transportowych z ładunkiem lub bez, przyśpieszeń, czasy podnoszenia i zamocowania przedmiotów transportowanych. Okno Search umożliwia wybranie parametrów opcjonalnego poszukiwania przez środki transportowe pracy lub miejsca parkingu. Opcja Logic umożliwia dodanie logiki przemieszczania się zasobów w poszczególnych węzłach sieci. Przy pomocy Pts (Points) można ustalić grafiki reprezentującej położenie na ekranie zasobów produkcyjnych w momencie przybycia ich do określonego węzła.
str. 6
Rysunek 5. Okno modułu Resources
Moduł Processing – proces technologiczny W module Processing definiuje się operacje, które zachodzą na wybranym stanowisku pracy oraz zasoby produkcyjne potrzebne tej operacji (Rysunek 6). Wskazać należy również następne stanowisko robocze, do którego istnieje potrzeba przetransportować wytwarzany przedmiot.
Rysunek 6. Okno Modułu Processing
str. 7
Pierwszym krokiem do opisania procesów technologicznych jest wybranie w oknie Tools przedmiotu, który będzie poddany procesom obróbkowym. Następnie należy wskazać (poprzez kliknięcie w oknie Layout) stanowisko, na którym będzie realizowana operacja technologiczna, następnie miejsce kolejnej operacji. Aby ustalić np. czas przeprowadzanych operacji i zabiegów, zasoby produkcyjne potrzebne do ich przeprowadzenia należy kliknąć w belkę Operation... w oknie Processing. Aby wywołać kreatora komend należy kliknąć na ikonę .W kreatorze komend wybieramy potrzebne do realizacji procesu polecenia, w następnym kontekstowym oknie podajemy potrzebne parametry i atrybuty oraz wklejamy uzyskaną postać rozkazu. Po ustaleniu szczegółów modelowanej operacji należy zdefiniować marszruty technologiczne oraz określić sposób przemieszczania wytwarzanych w systemie elementów i zasobów produkcyjnych. W tym celu należy kliknąć belkę Move Logic... w oknie Routing for... . Otworzy się okno, w którym możemy wpisać polecenia z klawiatury lub uruchomić kreatora komend, klikając w ikonę . W kreatorze komend wybieramy zasoby produkcyjne i tworzymy logikę ruchu oraz wklejamy uzyskaną postać rozkazu.
Moduł Arrivals – plan dostaw W module tym określamy plan dostaw dla przedmiotów obrabianych (Rysunek 7).
Rysunek 7. Okno modułu Arrivals
Najpierw w oknie Tools wybieramy przedmiot, dla którego ustalamy parametry dostaw na wejściu systemu. Kliknięcie w belkę Location... umożliwia określenie miejsca dostarczania partii materiałów, Qty each... liczbę przedmiotów w serii, First Time – czas pojawienia się pierwszej partii przedmiotów na wejściu systemu, Occurrences – ilość partii, Frequency – częstotliwość dostaw partii materiałów. Opcja Logic pozwala dodać warunki dostarczania kolejnych partii materiałów i przedmiotów do obróbki, Disable pozwala na zawieszenie dostarczania partii materiałów do systemu.
str. 8
Symulacja i raport końcowy Wśród opcji symulacji (menu Simulation/Options) dostępne są opcje: długość przeprowadzanej symulacji, dokładność zegara systemowego, rodzaje generowanego raportu końcowego. Można również włączyć/wyłączyć wyświetlanie grafiki podczas symulacji, wyliczenia kosztów, pauzę przy starcie symulacji. Szybkość animacji grafiki reguluje się do pożądanej wartości suwakiem na górnej części ekranu. Po przeprowadzonej symulacji możemy obejrzeć wygenerowany raport końcowy, otwierany w zewnętrznej przeglądarce (Rysunek 8).
Rysunek 8. Raport końcowy w Output Viewer
Raport końcowy zawiera rozbudowane statystyki dotyczące wszystkich elementów składowych modelowanego systemu. Istnieje możliwość daleko idącej personalizacji sposobu wyświetlania wyników. Przegląd rezultatów symulacji, najczęściej spotykane parametry LOCATIONS (lokalizacje, położenia) Location Name
Scheduled Hours
Capacity
Total Entries
Nazwa lokalizacji
Przepracowane godziny
pojemność
Liczba wejść
Maximum Contents Maksymalna wartość
Current Contents
% Utilization
Bieżąca wartość
% wykorzystania
Average Minutes Per Entry Średnia minut na wejście
Average Contens średnia wartość
str. 9
LOCATION STATES BY PERCENTAGE (Multiple Capacity) [lokalizacja stanów procentowo (wielokrotna pojemność)] Location Name
Scheduled Hours
% Empty
% Partially Occupied
% Full
% Down
nazwa lokalizacji
przepracowane godziny
% pustych
% obciążenia
% zajętości
% wyłączeń
LOCATION STATES BY PERCENTAGE (Single Capacity/ Tanks) [lokalizacja stanów procentowo (pojemności pojedyncze/ zbiornik) Location Name nazwa lokalizacji
Scheduled Hours przepracowane godziny
% Blocked
% Down
% zablokowanych
% wyłączeń
% Operation
% Setup
% Idle
% Waiting
% operacji
% przezbrojeń
% braku obciążeń
% oczekujących
Number of Times Used
Average Minutes Per Usage
Average Minutes Travel To Use średni czas transportu do użytku
RESOURCES [zasoby] Resource Name
nazwa zasobu
Units
Scheduled Hours
jednostki
przepracowane godziny
Average Minutes Travel To Park Średni czas transportu „na przerwę”
ilość wykonanych czynności
% Blocked In Travel % zablokowanych w transporcie
średni czas wykorzystania
% Util % wykorzystania
RESOURCE STATES BY PERCENTAGE [procentowe stany zasobów] Resource Name nazwa zasobu
Scheduled Hours przepracowane godziny
% In Use
% Travel To Use
% Travel To Park
% Idle
% Down
%w użyciu
%w transporcie do użytku
% czasu transportu „na przerwę”
% braku obciążeń
% wyłączenia
FAILED ARRIVALS [utracone przybycia] Entity Name nazwa jednostki
Location Name nazwa lokalizacji
Total Failed wszystkie utracone
str. 10
ENTITY ACTIVITY
[statusy elementów]
Entity Name
Total Exits
Current Quantity In System
Average Minutes In System
Average Minutes In Move Logic
nazwa jednostki
całkowita liczba wyjść
bieżąca ilość w systemie
średni czas w systemie
średni czas czynności transp.
Average Minutes Wait For Res, etc. średni czas oczekiwania na zasoby
Average Minutes In Operation średni czas w operacji
ENTITY STATES BY PERCENTAGE [status jednostek w procentach] Entity Name
% In Move Logic
% Wait For Res, etc.
% In Operation
% Blocked
nazwa jednostki
% czasu w transporcie
% czasu w oczekiwaniu na zasoby produkcyjne
% w operacjach
% zablokowanych
str. 11
ĆWICZENIE 1 – wyznaczenie częstotliwości dostaw Wykonaj deterministyczny model symulacyjny systemu wytwórczego wg procesu technologicznego przedstawionego poniżej dla wałka nr 1 (rysunek 1)
Rysunek 1. Schemat procesu wytwórczego dla elementu wałek nr 1
Zalecenia do modelowania: 1. Stanowiska pracy - wg załączonego rysunku, dodatkowo magazyn WE i WY (Capacity 5, FIFO) 2. Elementy – wałek wg załączonego rysunku (dobierz własną grafikę). 3. Ścieżka - zachowaj odległości pomiędzy sąsiadującymi stanowiskami roboczymi 1,6 metra, linia produkcyjna w kształcie litery L lub U. 4. Zasoby – 1 pracownik wykonuje wszystkie operacje technologiczne i czynności transportowe. 5. Proces technologiczny – wg załączonego rysunku. Wykorzystać kreatora komend w module Processing/Process i Process/Routing według schematu: 6. USE nazwa zasobu FOR wartość czasu tj (dla operacji technologicznych z wykorzystaniem zasobów), 7. MOVE WITH nazwa zasobu THEN FREE – (dla czynności transportowych). 8. Plan produkcji: wykonać 100 sztuk wałków, wielkość partii dostawy 5 sztuk, czas pomiędzy 1 dostawą od uruchomienia symulacji – 0, wyliczyć liczbę dostaw, przy pierwszym uruchomieniu symulacji założyć czas pomiędzy dostawami. 9. Przeprowadzić symulację, przeanalizować wyniki, wyznaczyć optymalny czas pomiędzy dostawami na podstawie analizy wyników symulacji. UWAGA: Poprawa zapisanych wcześniej rekordów w modelu symulacyjnym jest możliwa w menu Edit/Delete/Insert/Move/Copy Record/Paste Record, po uprzednim postawieniu kursora przy nazwie korygowanego zasobu. Model systemu wytwórczego zawiera szczególny przypadek – wielkość magazynu odpowiada wielkości partii dostawy – co wymusza dostawy w określonym czasie i nie dopuszcza do powstawania zapasów, nie ma możliwości również zastosowania zapasów bezpieczeństwa. Operacje technologiczne nr 20 i 80 odbywają się na tej samej tokarce.
str. 12
ĆWICZENIE 2 – uwzględnienie operacji hartowania Proszę uzupełnić poprzedni model symulacyjny o kolejne elementy. 1. Dodatkowy pracownik, opracować nowy podział operacji technologicznych i transportowych, 2. Dodać operację hartowania jako operację 50 (dodać lokalizację: hartownia tj=2, tpz=0.5, rozkaz WAIT wartość czasu tj – (dla operacji technologicznych bez wykorzystania zasobów). Dodatkowo potrzebne będą stanowiska Paleta Przed Hartowaniem Capacity 5 FIFO oraz Paleta Po Hartowaniu Capacity 5 FIFO), poprawić ścieżkę dla pracowników, wykorzystać rozkaz GROUP i UNGROUP wg schematu w tabeli 1: Tabela 1. Schemat opisu procesu hartowania z wykorzystaniem rozkazów group/ungroup
Process Przedmiot Stanowiska Przedm. X
Stan. A
Operacja
Wyjście
Routing Kolejne Reguły stanowisko sortowania
group liczba Przedm. Y Hartownia elementów
Przedm. Y Hartownia Wait czas tj Przedm. Y Przedm. Y
Stan. C
Przedm. X
Stan. C
ungroup
Przedm. X
First 1
Stan. C -
First 1 -
Cd. procesu
...
Czynność transportowa move with nazwa zasobu then free move with nazwa zasobu then free ...
str. 13
ĆWICZENIE 3 – uwzględnienie operacji KJ Proszę uzupełnić poprzedni model symulacyjny o kolejne elementy. Dodaj operację kontroli jakości jako operację 90 (dodać lokalizację: KJ, gdzie tj=0.1, tpz=0.25, na kontrolę trafia równomiernie 10% elementów). Dodać w module Processing/Process instrukcję, służącą do wyboru alternatywnych ścieżek route 1 (element do kontroli) i route 2 (element na paletę WY). Wcześniej należy zdefiniować licznik - definiujemy go w module Build/Variables (global), parametry: Integer, początkowa wartość 0 oraz ścieżkę route 2 w oknie Process/Routing prowadzącą z tokarki operacja 80 do stanowiska kontroli jakości. Instrukcja wyboru ścieżek transportowych: licznik = licznik + 1 IF licznik > = 10 THEN BEGIN route 1 licznik = 0 END ELSE BEGIN route 2 END
komentarz: zdefiniuj ścieżkę 1 jako do kontroli
komentarz: zdefiniuj ścieżkę 2 jako do magazynu WY
Przeprowadzić symulację, przeanalizować wyniki, wyznaczyć optymalny czas pomiędzy dostawami na podstawie analizy wyników symulacji. UWAGA: W module Processing istnieje alternatywny sposób definiowania operacji technologicznych: po kliknięciu w oknie Process i Routing belki Entity, Location, Operation oraz Output, Destination, Rule, /Move Logic dostępne są okna, w których istnieje możliwość ręcznej poprawy wybranych parametrów.
str. 14
ĆWICZENIE 4 – wprowadzenie różnorodnego plan produkcji Uzupełnić poprzedni model symulacyjny o: 1. Proces technologiczny dla Wałka nr 3 pokazanego na rysunku 1.
Rysunek 1. Schemat procesu wytwórczego dla elementu wałek nr 3
Wykorzystać posiadany park maszynowy, dodać brakujące stanowiska robocze, ponownie podzielić operacje technologiczne i czynności transportowe pomiędzy 2 pracowników, operacje hartowania i KJ zamodelować wg założeń z ćwiczenia 2. Ułożyć plan produkcji, tak aby Wałek 2 wykonywany był w ilości sztuk 300, wielkość partii dostawy 15 sztuk, wyliczyć liczbę dostaw, do pierwszej symulacji założyć czas pomiędzy dostawami. Plan produkcji powinien przebiegać wg schematu: Wyrób Liczba sztuk
Wałek nr 1 50
Wałek nr 3 Wałek nr 1 120
50
Wałek nr 3 180
Produkcja wałka nr 3 powinna rozpocząć się możliwie natychmiast po zwolnieniu się palety WE, moment ten należy wyznaczyć za pomocą wykresu zawartości elementów na palecie WE po przeprowadzeniu symulacji, ikona w module wyników (wybrać Paleta WE Contents, w opcjach można wybrać jednostki czasu na osiach). Przeprowadzić symulację, przeanalizować wyniki, wyznaczyć optymalny czas pomiędzy dostawami na podstawie wyników symulacji. UWAGA:
Dla wałka nr 3 operacja technologiczna nr 20 i 40 odbywa się na jednej tokarce, konieczne jest zdefiniowanie bufora międzyoperacyjnego, wykorzystywanego przed operacją nr 40. W innym przypadku proces wytwórczy ulegnie zablokowaniu. Pamiętaj o zwiększeniu pojemności magazynu do wielkości partii dostawy dla wałka nr 3, mimo to nie dopuść do narastania zapasów dla wałka nr 1.
str. 15
ĆWICZENIE 5 – wprowadzenie operacji montażu Uzupełnić poprzedni model symulacyjny o operacje montażu. Założenia do modelowania 1. Lokalizacje – dodać paletę WE Montaż, oraz stanowisko montażu. 2. Elementy montowane wg schematu: łożysko typu A, sztuk 2 dla wałka nr 1 oraz łożysko typu B i C po jednej sztuce dla Wałka nr 3. 3. Zaktualizować ścieżkę, zachować odległości pomiędzy stanowiskami roboczymi 1.6 m (w Promodelu dziesiętne części odległości wprowadzamy stosując kropkę). 4. Zasoby – bez zmian. Proces technologiczny wg załączonego przykładu z poprzednich ćwiczeń, uwzględnić zarówno tj i tpz. Wykorzystać rozkaz join według schematu: JOIN liczba elementów nazwa elementu. Należy również poprawić regułę sortowania dla łożyska (moduł Processing/okno Routing/pasek Rule) na opcję IF JOIN REQUEST w odniesieniu do czynności transportowej na stanowisko montażu (tabela 1). Tabela 1. Czasy technologiczne montażu łożysk A, B, C
Element
Łożysko A
Łożysko B
Łożysko C
tj [h]
0.10
0.10
0.15
tpz [h]
0.20
0.20
0.25
5. Plan produkcji: dopasować potrzebne ilości łożysk wszystkich typów. 6. Przeprowadzić symulację, przeanalizować wyniki, wyznaczyć optymalny czas pomiędzy dostawami na podstawie analizy wyników symulacji.
str. 16
ĆWICZENIE 6 – zdefiniowanie różnorodnych środków transportu oraz uwzględnienie kosztów Uzupełnić poprzedni model symulacyjny o suwnicę do transportu elementów grupowanych na potrzeby hartowania oraz przenośnik taśmowy, dostarczający wałek 1 i 2 na paletę WE. W tym celu należy: 1. Dodać drogę dla suwnicy – nowa ścieżka transportowa typu CRANE, zdefiniowana poprzez podanie końca i początku dwóch jej torów jezdnych oraz węzłów (NODES), w których suwnica będzie się zatrzymywać przy stanowiskach roboczych. Należy pamiętać o interfejsach pomiędzy nowymi węzłami a stanowiskami roboczymi. 2. Zdefiniować zasoby korzystające z drogi typu CRANE oraz czas podniesienia przedmiotu na 30 s i opuszczenia na 25 s. 3. Przenośnik taśmowy posiada następujące parametry: pojemność 10 elementów, prędkość transportu 7 km/h. Przenośnik taśmowy definiuje się jako stanowisko robocze za pomocą ikony w module Location, okno Graphics. Dwukrotne kliknięcie na wstawionym obiekcie pozwala na edycję jego parametrów. Przeprowadzić symulację, przeanalizować wyniki, wyznaczyć ponownie optymalny czas pomiędzy dostawami na podstawie analizy wyników symulacji. Dodać liczniki opisujące liczbę aktualnie wyprodukowanych elementów - w module Variabels (global) kliknięcie w oknie Location spowoduje zdefiniowanie graficznej formy licznika – należy umieścić rozkaz zwiększania licznika w momencie przetransportowania elementów na paletę WY. Dodać liczniki opisujące stan produkcji w toku – zdefiniowane jako różnica pomiędzy liczbą elementów które aktualnie zostały wydane do produkcji a już wykonanymi. Wykorzystać moduł kosztów w celu określenia całkowitego kosztu realizacji zleceń produkcyjnych. Określić sumaryczny koszt realizacji procesu produkcyjnego. Moduł dostępny jest z menu Build/Cost, należy zaproponować koszty pracy stanowisk roboczych, zasobów produkcyjnych na godzinę oraz koszt materiału do produkcji.
str. 17
ĆWICZENIE 7 – niedeterministyczny model symulacyjny linii produkcyjnej Wykonaj nowy model symulacyjny niewielkiej linii produkcyjnej wytwarzającej wałki stopniowane oraz montującej do nich łożyska. Proces produkcyjny realizowany jest w następujący sposób: z magazynu WE elementy podawane są za pośrednictwem podajnika taśmowego operatorowi, który przenosi je na wybraną obrabiarkę numeryczną NC_1 lub NC_2. Spośród stanowisk wybiera to, które ma w danej chwili wolną pojemność, co zostało określone w module Processing, okno czynności transportowych, kolumna Rule, przez wybranie polecenia First 1 dla NC_1 oraz First dla NC_2. Z obrabiarki numerycznej NC_1 lub NC_2 elementy zostają przeniesione na gratowanie, skąd trafiają na kontrolę. Jeśli element nie posiada wad zostaje do niego zamontowane łożysko, pobierane z bufora łożysk. W przypadku stwierdzenia występowania wady, element jest odrzucany (kierowany na Magazyn wyrobów wadliwych). Informacje o operacjach technologicznych zawarte są w tabeli 1: Tabela 1. Schemat procesu wytwórczego dla elementu wałek stopniowany
Nazwa stanowiska pracy Magazyn WE Podajnik taśmowy NC_1 NC_2 Gratowanie KJ Bufor łożysk Montaż Magazyn wyrobów wadliwych Magazyn WY
Pojemność
Tj [min]
określ określ 1 1 1 1 określ 1
– – 2 2 5 2,5 – 1,5
1
–
1
–
W modelu symulacyjnym należy zdefiniować, korzystając z standardowej biblioteki elementów graficznych, następujące obiekty: stanowiska pracy, części (wałek, łożysko i odpad), pracownika obsługującego wszystkie urządzenia, ścieżkę dla pracownika i elementów, proces technologiczny wg załączonej tabeli, plan produkcji zakłada wykonanie 12 sztuk. Dobierz częstotliwość dostaw tak, aby maksymalnie wykorzystać zdolność produkcyjną. Dodatkowo wyznacz minimalną pojemności stanowisk: Magazyn WE dla wałków, bufor łożysk oraz podajnika taśmowego tak, aby produkcja przebiegała w sposób płynny, bez zbędnych przestojów. Do określenia, które elementy są odpowiedniej jakości wykorzystaj zdefiniowany przez siebie rozkład prawdopodobieństwa z menu Build/More Elements/User Distributions. W polu Type określ, iż rozkład jest dyskretny (Discrete), oraz że jest nieskumulowany. Zakładka Table umożliwia dostęp do tabeli, w której ustala się prawdopodobieństwo wyrażone procentowo oraz powiązane z nim wartości dla rozkładu. Jeśli rozkład miałby być ciągły, pierwszą wprowadzoną wartością procentową powinno być zero. Zdefiniuj prawdopodobieństwo równe 70% z
str. 18
przypisaną wartością 1, jeżeli element ma dobrą jakość, oraz 30% z wartością 0, w przypadku niewystarczającej jakości (rysunek 1).
Rysunek 1. Zdefiniowanie własnego rozkładu prawdopodobieństwa
W modelu symulacyjnym wykorzystaj rozkaz if ... then ... else aby rozdzielić elementy dobre od wadliwych. W przypadku elementów dobrych należy skierować je na montaż, w przypadku elementów wadliwych kierujemy je na Magazyn wyrobów wadliwych, zmieniając jednocześnie ich nazwę na odpady. W module Processing pole Operation dla elementu na stanowisku KJ zdeklaruj zmienną lokalną „Test” (wpisując „INT test”) oraz przypisz tej zmiennej wartość rozkładu „Test = Rozklad()”, następnie użyj jej w rozkazie IF ... THEN ... ELSE. Wyrażenia przedstawiają warunek, wpływający na dalszą marszrutę wałka stopniowanego. Jeśli bowiem Test jest równy 1, co oznacza, że wałek stopniowany został wykonany prawidłowo, realizowane może być następnie polecenie łączenia z kołem zębatym (stanowisko Montaż, rozkaz JOIN liczba elementów element). Operator będzie wtedy potrzebny (rozkaz USE) przez N(1.5, 0.2), gdzie N oznacza rozkład normalny o wartości oczekiwanej czasu jednostkowego Tj=1.5 i wariancji 0.2. Jeśli natomiast Test będzie równy zero, wybrania zostanie marszruta 2 (kierująca element na Magazyn wyrobów wadliwych).
str. 19
ĆWICZENIE 8 – zdefiniowanie przerw w pracy oraz wykorzystanie makr Uzupełnij zbudowany poprzednio model symulacyjny o kolejne elementy. 1. Przerwy w pracy obrabiarek NC_1 i NC_2 Przerwy występują co 1 godziny i są opisane za pomocą rozkładu normalnego N(1.2, 0.1), czas ten jest potrzebny aby pracownik wykonał przegląd urządzenia. Do zdefiniowania przerw wykorzystujemy opcję Usage w module Locations (rysunek 1).
Rysunek 1. Zdefiniowanie przerw dla obrabiarek NC 1 i NC 2
Zastosowana komenda Usage definiuje czas przezbrojenia poprzez zadanie częstotliwości (Frequency), priorytetu (Priority), którego wartość 99 oznacza, ze dane przezbrojenie (w tym wypadku Usage) ma pierwszeństwo przed innymi zdarzeniami o niższym priorytecie, oraz wyrażenie logiczne (Logic), gdzie definiujemy zadania podczas przezbrojenia. Czas jest podany jako rozkład normalny N(1.2, 0.1). 2. Zdefiniuj liczbę pracowników przy pomocy makra Definiujemy liczbę pracowników wpisując w miejsce Units nazwę makra Liczba_Pracownikow (rysunek 2). Wyrażenie to zdefiniowane musi być wcześniej w module Macros (omówiony poniżej), na kolejnych zajęciach makro te wykorzystane zostanie jako zmienna przy optymalizacji w programie SimRunner.
Rysunek 2. Wykorzystanie makra do zdefiniowania liczny pracowników
Moduł Macros zawiera pole ID dla wpisania nazwy makr oraz pole Text do wpisania komunikatu albo wyrażenia numerycznego, które będzie domyślną wartością. Wartość domyślna makra zostanie wykorzystana przy przeprowadzeniu symulacji bez użycia Simrunnera. Należy koniecznie określić zakres możliwych do przyjęcia wartości makra (Options/RTI/define). Zdefiniuj więc następujące makro: „Liczba_pracowników”, wartość od 1 do 5, domyślnie 1. 3. Zdefiniuj pojemność gratownicy przy pomocy makra W module Locations wykorzystaj makro „Pojemność_gratownicy”, wartość od 1 do 7, domyślnie 1 do zdefiniowanie pojemności tego urządzania. Zmień czasy operacji technologicznych na stanowiskach NC_1 i NC_2 na Tj=N(3,.2), gratowanie -> Tj=N(1.5,.2), KJ -> Tj=N(3.2, 0.3), przeprowadź kilka badań symulacyjnych, przeanalizuj statystyki pod kątem różnic wynikających z zastosowania zmiennych losowych. Symulację przeprowadź np. 5 razy (Simulation/Options/Number of Replications).
str. 20
ĆWICZENIE 9 – zdefiniowanie zmiennych i atrybutów, charakteryzujących badany system wytwórczy W modelu symulacyjnym uwzględnij różnego rodzaju zmienne, aby stworzyć opis parametrów realizowanego procesu produkcyjnego. Za pomocą atrybutów należy wyznaczyć czas cyklu elementów w systemie wytwórczym – rysunek 1.
Rysunek 1. Definiowanie atrybutów
Atrybuty definiuje się w odpowiednim module, potrzebne będą są dwa atrybuty: czas_wejścia, czas_wyjścia, Wyrażenia liczbowe poszczególnych atrybutów mogą być opisane liczbami rzeczywistymi (Real), lub całkowitymi (Integer). Atrybuty w zakładce Classification można przypisać do stanowiska lub przedmiotu. W module tym zdefiniuj zmienne opisujące działanie modelowanego systemu wytwórczego. Potrzebne liczniki (rysunek 2): braki (elementy odrzucone po kontroli jakości), przedmioty wykonane DTC (Do Tego Czasu), koszt jednostkowy, przeciętny czas cyklu, czas bieżącego cyklu, suma czasów cyklu, PWP (Przedmioty w Procesie tzn. ”Produkcja w toku”), koszt całkowity.
Rysunek 2. Zdefiniowanie zmiennych globalnych
Liczniki te powinny posiadać reprezentacje graficzną menu (Background Graphics/Behind Grid, proszę skorzystać z paska ikon po lewej stronie ekranu, dwukrotne kliknięcie na wstawionym już obiekcie wywołuje jego właściwości – rysunek 3).
str. 21
Rysunek 3. Zdefiniowanie postaci graficznej liczników na podkładzie graficznym
Podpowiedź: przy wyjściu elementów z systemu produkcyjnego należy: zwiększyć liczbę wszystkich przedmiotów wykonanych do tego czasu, np. rozkaz INC zmienna, wartość, wyliczyć koszt jednostkowy produktu (całkowity koszt podzielony przez liczbę wszystkich przedmiotów wykonanych), wyliczyć czas bieżącego cyklu – w momencie, kiedy wałek stopniowany dostarczony zostaje na podajnik taśmowy, proszę uruchomić zegar funkcją Clock (jednostka czasu), ukazujący czas wejścia elementu do systemu. Postać rozkazu może być zdefiniowana w następujący sposób: Czas_wejścia = Clock(Min), wartość czasu wystąpienia tego zdarzenia zostanie zapisana w atrybucie, który rozróżnia czasy dla każdego z elementów z osobna. Następnie gdy wałek stopniowany zostanie dostarczony do magazynu ponawiamy pomiar czasu Czas_wyjścia = Clock(min), również korzystając z atrybutu. Różnica tych dwóch atrybutów pokaże nam, jaki czas element przebywał w systemie wytwórczym. Dla kolejnego elementu, który dotrze do magazynu WY pomiar i wyznaczenie czasu bieżącego cyklu się powtarza, zwiększyć wartość sumy czasów cyklu przebywania przedmiotów w systemie wytwórczym o czas bieżącego cyklu (np.: INC suma czasów cyklu, czas bieżącego cyklu), wyliczyć przeciętny czasu cyklu (suma czasów cyklu przebywania przedmiotów w systemie wytwórczym podzielony przez całkowitą liczbę tych przedmiotów), zmniejszyć liczbę przedmiotów w procesie, np. rozkaz DEC zmienna, wartość. Dla elementów zakwalifikowanych jako odpady należy: zwiększyć liczbę przedmiotów odrzuconych, zmniejszyć liczbę przedmiotów znajdujących się w procesie. Po operacji montażu przypisujemy zmiennej koszt_całkowity wartość kosztów („INC koszt_calkowity, GetCost()” – funkcja GetCost() zwraca bieżącą wartość elementu, korzystając ze statystyk prowadzonych podczas symulacji modelu). Wcześniej należy przypisać przykładowe koszty do elementów, zasobów oraz stanowisk pracy (Build/Cost), oraz odznaczyć opcję Disable Cost (Simulation/Options).
str. 22
ĆWICZENIE 10 – program SimRunner, optymalizacja krok po kroku SimRunner wykorzystuje istniejący model symulacyjny wykonany w ProModel, na podstawie danych z modelu proponuje najlepsze możliwe rozwiązania. Analiza danych i optymalizacja jest dokonywana automatycznie. Dla każdego projektu symulacyjnego projektant decyduje, który model analizować czy optymalizować, które czynniki na wejściu zmienić i w jaki sposób mierzyć wyniki systemu symulacyjnego. W module SimRunner można przeprowadzić dwa typy projektów: 1. Model optymalizacyjny: wielokryterialna optymalizacja, która testuje różne kombinacje czynników na wejściu, tak by uzyskać najlepszą wartość funkcji celu. 2. Model „analizujący”: pomaga wyznaczyć liczbę replikacji systemu potrzebnych do oszacowania średniej wartości funkcji celu uwzględniając granice błędu i poziom ufności oraz wsparcie w wyznaczeniu czasu przebiegu dla modelu, które pomoże w osiągnięciu stabilnego zachowania się funkcji celu. SimRunner generuje trzy typy danych i raportów: 1. Dane, raporty wprowadzane do arkusza kalkulacyjnego. 2. Analiza tekstu i sprawozdań z procesu optymalizacji. 3. Diagramy reprezentujące graficznie otrzymane wyniki. Procedura postępowania przy optymalizacji modelu symulacyjnego, wygląda w następujący sposób: 1. Tworzenie weryfikacja i zatwierdzenie. Najważniejszym etapem w przygotowaniu modelu do optymalizacji jest jego walidacja, dopiero po zatwierdzeniu modelu można rozpocząć optymalizacje. 2. Budowanie projektu. Na podstawie modelu symulacyjnego, który ma być optymalizowany tworzy się nowy projekt w SimRunner. Definiuje się postać wyników, jakie chcemy otrzymać, następnie określa się funkcje celu, system oceny wprowadzonych usprawnień. Następnie wybiera czynniki na wejściu, które SimRunner optymalizuje tak, by osiągnąć najlepsze możliwe udoskonalenia systemu. 3. Przeprowadzenie eksperymentu. Po wybranianiu czynników na wejściu i określeniu funkcji celu, można użyć SimRunner do automatycznego przeprowadzenia serii eksperymentów na modelu symulacyjnym. SimRunner przeprowadza symulacje i testuje różne możliwości kombinacji wartości i czynników. Następnie SimRunner kompletuje test i przedstawia otrzymane wyniki eksperymentów symulacyjnych w określonym porządku, od najbardziej udanych do najmniej pomyślnych kombinacji wartości rozważanych czynników. 4. Oszacowanie sugestii. Czwartym krokiem jest rozważenie i oszacowanie sugestii wysuniętych przez program. Wybór ten jest kluczowy, gdyż SimRunner często generuje kilka rozwiązań dla rozważanego problemu, a decyzja co do wyboru optymalnych wartości może uwzględniać czynniki niezwiązane z modelem symulacyjnym. Przykładem takich czynników mogą być: ograniczenia związane z sytuacją ekonomiczną firmy. Można dodatkowa przeprowadzić dodatkową symulację w celu bliższego określenia przedziałów ufności by ułatwić ocenę kolejnych możliwych rozwiązań wygenerowanych przez SimRunner.
str. 23
5. Wprowadzenie otrzymanych rozwiązań. Dobrze rozpoznany problem i solidnie przeprowadzona optymalizacja jest podstawą do implementacji otrzymanych rozwiązań. Przeprowadzenie optymalizacji modelu symulacyjnego Przed rozpoczęciem pracy w module SimRunner proszę ustawić czas operacji technologicznej na Tj = 2 min na gratownicy. Projekt w module SimRunner buduje się na podstawie istniejącego modelu symulacyjnego. Proszę wybrać model systemu wytwórczego, który zostanie poddany optymalizacji (z ćwiczenia poprzedniego), następnie uruchomić moduł Simrunner (Simulation\SimRunner) zapisać plik ProModela oraz kliknąć przycisk Next (zakładamy w ten sposób nowy projekt optymalizacyjny – rysunek 1).
Rysunek 1. Wybór modelu do optymalizacji
Definiowanie kryteriów optymalizacji Proszę wybrać następujące kryteria optymalizacji (wybierając z Response category, a następnie bardziej szczegółowe kryteria z Response statistic, przyciski wyboru umieszczone są poniżej okna, wybrane kryteria pokażą się w oknie Response statistics selected for objectiva function). Panel Objective for response statistic służy do nadania wag kryteriom (Weight), oraz ustalenia, czy zależy nam na ich minimalizacji czy maksymalizacji. Wprowadzone wartości wprowadza się przyciskiem Update. Wielkości do wprowadzenia (rysunek 2): maksymalne obciążenie pracowników, waga 1 (Resource\Pracownik, % Utilization)
str. 24
maksymalne obciążenie obrabiarek NC_1, waga 1 (Location\NC_1, % Utilization) minimalna średni czas elementu w systemie, waga 1, (Entity\walek\Avg time in Sys). Kryteria w SimRunner są składowymi funkcji celu, która jest obliczana według następującego algorytmu: F.celu=MAX(waga)*kryterium1+MAX(waga)*kryterium2+ MIN(waga)* kryterium3+ ... Wartości kryteriów mogą się różnić nawet o kilka rzędów wielkości, dlatego stosuje się wagi kryteriów, aby bilansować ich wpływ na funkcję celu. W celu przejścia do następnego ekranu wybieramy przycisk Next.
Rysunek 2. Definiowanie kryteriów
Wybór parametrów do optymalizacji Parametrem systemu wybranym do optymalizacji jest liczba pracowników oraz pojemność obrabiarki NC_1 (odpowiada to w przybliżeniu ich ilości). Liczba pracowników została wcześniej zdefiniowana w modelu za pomocą makra, wartość makra odpowiada liczbie pracowników. Makro opisują trzy parametry: 1. wartość wyjściowa: 1 pracowników, 2. maksymalna wartość: 5 pracowników, 3. minimalna wartość: 1 pracowników. Proszę wprowadzić również makro dla opisania pojemności obrabiarki NC_1 (wartości od 1 do 6, domyślnie 3), zapisać plik w ProModelu i Simrunner.
str. 25
SimRunner przeprowadza symulacje dla każdej wartości makr, uwzględni też każdą możliwą ich kombinacje wartości. Makra zdefiniowane w modelu są przedstawione w oknie Macros Available for Input (rysunek 3), za pomocą przycisków wybieramy te które nas interesują (nie wszystkie muszą być wykorzystane), możemy jeszcze wpływać na ich wartość brane pod uwagę podczas optymalizacji (Panel Macro Properties, przycisk Update). UWAGA: Proszę pamiętać, aby zmiany w modelu przeznaczonym do optymalizacji, na wprowadzenie dodatkowych makr, odbywało się przy wyłączonym programie SimRunner, ponieważ w innym przypadku poprawki nie będą widoczne w uruchomionym już modele do optymalizacji.
Rysunek 3. Wybór parametrów do optymalizacji
Model Analizujący Model analizujący pomaga wyznaczyć liczbę replikacji systemu potrzebnych do oszacowania średniej wartości funkcji celu uwzględniając granice błędu i poziom ufności oraz wsparcie w wyznaczeniu czasu przebiegu symulacji dla modelu, które pomoże w zrozumieniu stabilnego zachowania się funkcji celu. Kwestią zasadniczą jest to aby każdy eksperyment został przeprowadzony w identycznych warunkach brzegowych, tylko w takim przypadku istnieje sens porównywania otrzymanych wyników symulacji. Jeśli wszystkie aspekty modelu badanego systemu są deterministyczne (w żadnej części modelu nie występują zmienne losowe), liczba replikacji eksperymentu może wynosić 1. W innym przypadku należy założyć liczbę replikacji tekstów np. 5 i sprawdzić czy ile replikacji zostanie zaproponowanych by osiągnąć zakładany poziom ufności. Proszę wprowadzić ww. wartości wg rysunku 4,
str. 26
klikamy Next, dochodzimy do ekranu z rysunku 5, klikamy przycisk Run i dostajemy wykres różnic wartości funkcji celu dla danych deterministycznych i stochastycznych.
Rysunek 4. Parametry modelu „analizującego”
Rysunek 5. Wyniki modelu „analizującego”
str. 27
Mamy jeszcze możliwość wprowadzić informację o „rozruchu” systemu wytwórczego, proszę zostawić te dane domyślne. Do następnego kroku odczytujemy natomiast sugerowaną wartość powtórzeń testów – w tym przypadku jest ich 11. Definiowanie parametrów optymalizacji i symulacji Parametry optymalizacji: profil optymalizacji (moderate – „umiarkowany”) oraz procent zbieżności. Parametry symulacji: wyłączono animacje, aby skrócić czas przeprowadzania eksperymentów. Proszę określić wprowadzoną wcześniej liczbę replikację testu dla eksperymentu. Nie określono czasu rozgrzewania systemu (czas na początku każdego eksperymentu, po którym SimRunner zaczyna zbierać dane z symulacji), ponieważ jest on bardzo mały w porównaniu z czasem przeprowadzenia całej symulacji i nie ma istotnego znaczenia na otrzymane wyniki. Czas trwania eksperymentu również nie został zdefiniowany, co powoduje, że symulacja każdego eksperymentu zakończy się po wykonaniu założonej wielkości partii produkcyjnej. Poziom pewności wyznacza przedział średniej wartości funkcji celu, gdy liczba ilość replikacji eksperymentu jest większa niż jeden – rysunek 6.
Rysunek 6. Definiowanie parametrów optymalizacji i symulacji
Przeprowadzenie eksperymentów, wyniki symulacji SimRunner przeprowadził 29 eksperymentów, każdy dla innej ilości pracowników i pojemności NC, odczytał wartości kryteriów i dla każdego przypadku oszacował wartość funkcji celu. Optymalnym rozwiązaniem proponowanym przez SimRunner jest eksperyment, dla którego wartość funkcji celu ma najwyższą wartość. Optimum sugerowanym przez program SimRunner jest wariant dla 3 pracowników i 3 stanowisk NC, osiągnięty w 20 eksperymencie, wartość funkcji celu – 325,50.
str. 28
Przycisk Final Raport wyświetli krótkie podsumowanie osiągniętych wyników – rysunek 7.
Rysunek 7. Przeprowadzenie eksperymentów, wyniki symulacji
Osiągnięte wyniki mogą się różnić, w zależności od różnic w Państwa modelach symulacyjnych poddanych optymalizacji. Do następnego ekranu można przejść klikając przycisk Next, uzyska się wykres ukazujący zmiany wartości funkcji celu, dobierając odpowiednie wielkości na osiach. Proszę przeprowadzić parę eksperymentów dobierając różne makra do optymalizacji, wartości kryteriów, przeprowadzić analizę modelu, wyznaczyć liczbę replikacji oraz narysować wykresy funkcji celu.
str. 29
ĆWICZENIE 11 - program SimRunner, optymalizacja zaawansowana Do analizy i optymalizacji wybierz model symulacyjnego z zadania 8 i 9, proszę zapisać ten plik pod nazwą np. opt_cw2_z1. Optymalizację przeprowadź pod kątem: liczby pracowników, pojemności gratownicy, częstotliwości dostaw. Wielkości te są reprezentowane w modelu poprzez makra. Zdefiniuj brakujące makra w modelu symulacyjnym – częstotliwość dostaw (dobierz wartości właściwe dla własnego modelu, np. min wartość częstotliwości dostaw nie może powodować, iż dostawy te nie zostaną zrealizowane). Następnie dobierz kryteria optymalizacji: max. obciążenia pracowników, min. zmiennej „średni czas cyklu” – średnia wartość, min. zmiennej „PWP” – średnia wartość, min. zmiennej „koszt całkowity” – średnia wartość. Przeprowadź optymalizację dla każdego z kryteriów z osobna, zapisz jej wyniki (klikając na wynikach optymalizacji prawym klawiszem myszy i wybierając „save grid data” – wyniki można zapisać do pliku tekstowego). Wyciągnij wartość średnią z funkcji celu (kolumna „Objective Function”) dla każdego z kryteriów (wykorzystaj do tego celu np. arkusz kalkulacyjny), porównaj te wartości aby móc uzyskać informację o wpływie każdego z kryteriów. Następnie zaproponuj własne wagi dla każdego z kryteriów, np. zakładając, iż kryterium o największej średniej wartości przyjmie wagę 1 (do Simrunner’a nie można wprowadzać wag mniejszych od 1, wagi muszą być zaokrąglone do wartości całkowitych). Wyrównaj w ten sposób ich wpływ wartość funkcji celu. Przeprowadź optymalizację dla sumy wszystkich kryteriów, wprowadzając wyznaczone wagi. Operacje wyciągnięcia średniej z poszczególnych kryteriów funkcji celu oraz wyznaczenie wag przeprowadź w dostępnym arkuszu kalkulacyjnym, wyniki przeprowadzonej optymalizacji zachowaj na dysku komputera.
str. 30
1.1. Rozkazy logiczne stosowane w ProModelu Ważnym elementem służącym do określenia prze użytkownika logiki procesu są rozkazy logiczne. Rozkazy logiczne są to komendy określające pewne akcje albo logiczne operacje. Zazwyczaj mają powiązanie z jakimś zdarzaniem takim jak wejście elementu na dane stanowiskoBłąd! Nie można odnaleźć źródła odwołania.. Rozkazy logiczne dzielą się na wyrażenia: 1. podstawowe, 2. operacyjne, 3. dotyczące wychodzenia elementu z danego stanowiska, 4. związane z przybyciem elementów, 5. związane z wyłączeniem, 6. polecenia zasobów, 7. polecenia określające początek i zakończenie, 8. polecenia dotyczące przerw i zmian. Wyrażenia podstawowe. Polecenia podstawowe mogą być użyte jako element dowolnej logiki i zawierają rozkazy akcji, takie jak: Activate (uaktywnienie) – zaczyna niezależne subroutine, czyli zdefiniowany przez użytkownika podprogram lub grupę rozkazów, Animate (animować) – zatrzymuje lub włącza animację i ustala jej prędkość, Assignment (wyznaczenie) – przydziela wartość numerycznego wyrażenia do zmiennej, atrybutu lub tablic zmiennych, Close (zamknąć) – zamyka plik do którego weszło się poleceniami: Write, Writeline, Read, Comment (komentować) – komentarze użytkownika, nie są brane pod uwagę podczas symulacji, Dec (pomniejszać) – pomniejsza wartość zmiennej, elementu z tablicy zmiennych, czy atrybutu o wyrażenie numeryczne, Displey (wyświetlać) – powoduje zatrzymanie symulacji i wyświetlenie opcjonalnej wiadomości z wartością, Inc (powiększać) – zwiększa wartość zmiennej, elementu z tablicy, czy atrybutu o wyrażenie numeryczne, Log – odejmuje czas przechowywany w zmiennej, atrybucie lub tablicy zmiennych od aktualnego czasu na zegarze i rejestruje ten czas, po to by można było go zobaczyć w module wyjściowym, MapArr – każdej z komórek tabeli przyporządkowuje unikalne wartości zmiennej, Order (zamówić) – powoduje stworzenie określonej ilości elementów i wprowadzenie ich do systemu na wyznaczone stanowisko, Pause (spauzować) – powoduje zatrzymanie symulacji dopóki użytkownik nie wybierze opcji Resume z menu Simulation, pojawiającego się podczas przebiegu, Prompt statement – powoduje spauzowanie symulacji oraz wyświetlenie wiadomości i pola wejściowego albo menu wyboru. Wartość wpisana lub wybrana jest potem przydzielona do wyznaczonej zmiennej, elementu z tabeli lub atrybutu.
str. 31
Read (czytać) – powoduje przeczytanie następnej liczby w pliku generalnego czytania general read file i przypisanie jej do zmiennej, elementu z tablicy i atrybutu, Report (zdać sprawozdanie) – kalkuluje i składa raport z obecnych statystyk do zewnętrznej database bazy danych. Reset (zacząć od nowa) – w przypadku pliku pisanego powoduje stworzenie pliku albo jeśli ten istnieje jego wymazanie i otwarcie na pisanie, w przypadku pliku czytanego, plik jest otwarty i gotowy do czytania od początku, stosowane w połączeniu z Report, Send (wysyłać) – wysyła żądanie sprowadzenia określonej liczby poszczególnych rodzajów przedmiotów na wyznaczone stanowisko. Sound (dźwięk) – włącza dźwięk zdefiniowany w pliku dźwięków, Stop (zaprzestać) – powoduje zaprzestanie wykonywania symulacji i jeśli sporządzona została jakaś wiadomość, to jest ona wyświetlana, Trace (śledzić) – włącza lub wyłącza ślad i wyświetla określoną wiadomość dla użytkownika o zdarzeniach w systemie, View (widok) – zmienia widok w oknie na Layout plan rozmieszczonych obiektów za pomocą logiki użytkownika, Warmup (rozgrzewka) – pozwala na przebieganie symulacji do czasu osiągnięcia przez model stanu równowagi, statystyki zostają gromadzone dopiero po zakończeniu okresu rozgrzewki, Write/Writeline (napisać) – powoduje napisanie wyrażenia numerycznego lub tekstowego do generalnego pliku czytania. Polecenia podstawowe zawierają również rozkazy kontroli: Begin / End (zacząć / skończyć) – definiują początek i koniec bloku wyrażeń, będącego grupa komunikatów wykonywanych razem, Break (przerwa) – używane w pętli wewnątrz bloku komunikatów powoduje wyłamanie się wyjście z pętli i kontynuowanie wykonywania następnego komunikatu wewnątrz bloku, BreakBlk – powoduje wyjście z obecnego bloku komunikatów i kontynuowanie na następnym komunikacie po za blokiem Goto (idź do) – powoduje skok modelu do komunikatu określonego wyznaczoną etykietą. If – then (jeśli – wtedy) – powoduje wykonanie komunikatu lub bloku komunikatów tylko wtedy, gdy wyrażenie boolowskie jest prawdziwe. If – then – else (jeśli – wtedy – w przeciwnym razie) – powoduje wykonanie komunikatu lub bloku komunikatów tylko wtedy, gdy wyrażenie boolowskie jest prawdziwe, w przeciwnym razie realizowany jest inne polecenie lub blok poleceń, Return (zwracać) – powoduje zakończenie realizacji soubroutine i opcjonalnie zwraca wartość zgłaszającemu się komunikatowi, kiedy występuje w logice innej niż subroutine funkcjonuje jak mocna przerwa i wychodzi całkowicie z wątku. Do While (wykonuj kiedy) – powtarza komunikat lub blok komunikatów w sposób ciągły, kiedy warunek pozostaje prawdziwy. Do – While jest pętlą która będzie zawsze wykonywana przynajmniej raz.
str. 32
While Do (kiedy wykonuj) – powoduje powtarzalne wykonywanie komunikatu lub bloku komunikatów, tak długo jak długo warunek jest spełniony, jeśli warunek nie jest spełniony komunikat nie jest ani razu wykonany. Wyrażenia operacyjne. Polecenia operacyjne są to rozkazy wykonywane przez przedmiot, kiedy ten wchodzi na stanowisko i zawierają polecenia związane zarówno z przedmiotem, jak i z zasobem, zawierają także rozkazy podstawowe. Polecenia operacyjne związane z przedmiotem: Accum (zbierz) – opóźnia proces na przedmiocie dopóki nie zostaje zebrana określona ilość przedmiotów, po zgromadzeniu przedmiotów proces jest kontynuowany, Combine (połącz) – łączy przedmioty jednego rodzaju lub różnych rodzajów w pojedynczy przedmiot, Create (stwórz) – tworzy określoną liczbę przedmiotów z obecnego przedmiotu, każdy nowy przedmiot zachowuje atrybuty oryginalnego przedmiotu, Graphic (grafika) – powoduje zmianę obecnej grafiki przedmiotu do określonego numeru grafiki z indeksu grafik, który został zdefiniowany dla danego przedmiotu, Group (grupuj) – łączy określoną liczbę przedmiotów danego rodzaju w pojedynczy przedmiot, przedmioty tworzące grupę są przechowywane i uaktywniane na nowo poleceniem Ungroup (rozgrupuj), Join (połącz) – łączy określoną liczbę wyznaczonego rodzaju przedmiotów do aktualnego przedmiotu. Przedmioty po połączeniu tracą swoją identyfikację. Load (ładuj) – załaduj określoną liczbę przedmiotów do obecnego przedmiotu, przedmioty po załadowaniu zachowują swoją identyfikacje do przyszłego rozładowania przez komunikat Unload (rozładuj), Match (skojarz) – powoduje czekanie dopóki wartość określonych atrybutów przedmiotów znajdujących się w procesie skojarzy się z wartością tego samego atrybutu innego przedmiotu w systemie, Move (przesuń) – przemieszcza przedmiot do końca kolejki albo przenośnika taśmowego, Move with – przemieszcza przedmiot używając wyznaczonego zasobu, Move for – określa czas wymagany do przemieszczenia przedmiotu, Rename as (zmień nazwę na) – wyznacza nową nazwę dla aktualnego przedmiotu, Route (marszruta) – powoduje wybranie przez przedmiot określonego bloku marszrut, Split As (rozdziel na) – dzieli przedmiot na kilka przedmiotów i przyznaje im nowe nazwy, nowe przedmioty maja te same atrybuty co oryginalny przedmiot, Ungroup (rozgrupuj) – rozgrupowuje przedmioty zgrupowane przez komunikat Group, Unload (rozładuj) – rozładowuje przedmioty załadowane komunikatem Load, powoduje, że przedmiot transportujący inne przedmioty załadowany nimi komunikatem Load albo Group, rozładowuje pewną liczbę tych przedmiotów spotykając określony warunek, Wait (czekaj) – opóźnia proces przedmiotu dopóki nie upłynie zdefiniowana ilość czasu,
str. 33
Wait Until (czekaj dopóki) – opóźnia wykonywanie pewnego bloku komunikatów dopóki określona zmienna boolowska nie będzie spełniona. Polecenia operacyjne związane z zasobem: Free (uwolnij) – uwalnia zasób nabyty przez przedmiot, Get (przypisz) – przypisuje zasób lub kombinację zasobów do operacji technologicznej lub czynności transportowej według opcjonalnie określonego pierwszeństwa, Jointly get (łącznie weź) – przypisuje kombinację zasobów każdego według opcjonalnie określonego pierwszeństwa do zadania, przy nabywaniu wielu zasobów żaden nie będzie nabyty, dopóki wszystkie nie są dostępne. Różnica pomiędzy Get i Jointly get dla kilku zasobów jest taka, że komunikat weź powoduje nabycie zasobów jak staja się dostępne, zaś Jointly get nie nabywa zasobów dopóki wszystkie nie są dostępne, Use for (użyj na (czas))– wykorzystuje zasób lub kombinację zasobów do zadania, według opcjonalnie określonego pierwszeństwa, jeżeli zasoby stają się dostępne. Oznacza wykorzystywanie zasobu przez pewien okres czasu, a potem uwolnienie kiedy czas ten upłynie. Polecenia wyjścia ze stanowiska są wykonywane, gdy przedmiot opuszcza stanowisko i mogą zawierać ogólne rozkazy jak również polecenia graficzne. Rozkazy przybyć są wykonywane przy wejściu przedmiotów do systemu i mogą zawierać rozkazy ogólne i polecenia graficzne. Rozkazy wyłączenia są to polecenia, które mogą być wykonywane, gdy pojawia się wyłączenie i mogą zawierać komunikaty ogólne za wyjątkiem tych, które odwołują się do jakiegokolwiek rodzaju atrybutu. Dodatkowo mogą być użyte następujące rozkazy operacyjne: free, get, graphic, jointly get, use, wait. Polecenia zasobów są wykonywane, kiedy zasób przybędzie na węzeł sieci bądź też z niego wychodzi. I są zdefiniowane w edytorze węzłów. Mogą zawierać rozkazy ogólne, jak również polecenia graficzne. Polecenia rozpoczęcia i zakończenia symulacji są to rozkazy wykonywane na początku i na końcu symulacji. Mogą zawierać rozkazy ogólne. Polecenia zmian i przerw są to rozkazy używane w pisaniu logiki zmian i przerw, która kontroluje co się dzieje gdy zasoby i stanowiska nie pracują.
str. 34