Okładka

Strona tytułowa

Strona tytułowa

Projekt okładki i stron tytułowych

Joanna Andryjowicz

Wydawca

Edyta Kawala

Redaktor prowadzący

Jolanta Kowalczuk

Redaktor

Izabela Ewa Mika

Produkcja

Anna Bączkowska

Recenzenci

prof. dr hab. inż. Wiktor Adamus

prof. dr hab. inż. Maciej Kuboń

Skład wersji elektronicznej na zlecenie Wydawnictwa Naukowego PWN

Woblink/Monika Lipiec

Zastrzeżonych nazw firm i produktów użyto w książce wyłącznie w celu identyfikacji.

Książka, którą nabyłeś, jest dziełem twórcy i wydawcy. Prosimy, abyś przestrzegał praw, jakie im przysługują. Jej zawartość możesz udostępnić nieodpłatnie osobom bliskim lub osobiście znanym. Ale nie publikuj jej w internecie. Jeśli cytujesz jej fragmenty, nie zmieniaj ich treści i koniecznie zaznacz, czyje to dzieło. A kopiując jej część, rób to jedynie na użytek osobisty.

Szanujmy cudzą własność i prawo.

Więcej na www.legalnakultura.pl

Polska Izba Książki

Copyright © by Wydawnictwo Naukowe PWN SA

Warszawa 2019

ISBN 978-83-01-20544-7

eBook został przygotowany na podstawie wydania papierowego z 2019 r., (wyd. I)

Warszawa 2019

Wydawnictwo Naukowe PWN SA

02-460 Warszawa, ul. Gottlieba Daimlera 2

tel. 22 69 54 321, faks 22 69 54 288

infolinia 801 33 33 88

e-mail: pwn@pwn.com.pl; reklama@pwn.pl

www.pwn.pl

Wprowadzenie

Wspólnym mianownikiem dla zagadnień omawianych w książce jest słowo logistyka. Genezy tego słowa można doszukiwać się już w czasach starożytnej Grecji. W języku greckim słowo logistyka oznaczało praktyczną szkołę rachowania, czyli kalkulacji. W Atenach, Rzymie i Bizancjum logista pełnił funkcję rewizora finansowego, do którego obowiązków należało też rozdzielanie środków żywnościowych. Z kolei w legionach rzymskich logista planował zaopatrzenie, zakwaterowanie oraz był odpowiedzialny za planowanie tras przemarszu wojsk (Krawczyk, 2011).

Logistyka jest nauką opartą głównie na badaniach operacyjnych, które rozwinęły się dynamicznie podczas II wojny światowej. Wówczas to sztaby armii planowały operacje wojskowe z ograniczeniami logicznymi, czasowymi oraz przestrzennymi, których celem było pokonanie przeciwnika (Hillier, 2012; Siudak, 1997 i inni). W XXI wieku, rozwój technologii telekomunikacyjnych (takich jak Internet, GSM, GPS) spowodował, że rynek konsumentów stał się rynkiem globalnym. Miejsce produkcji czy zarządzania danym procesem straciło swoje pierwotne znaczenie, a więc pojęcie logistyki nabrało nowego wymiaru. Przedsiębiorstwa, chcąc wygrywać wojny cenowe, zostały zmuszone do optymalizacji swoich procesów logistycznych i transportowych. Za ich efektywność odpowiadają generalnie dwie grupy czynników:

•  czynniki egzogeniczne, które pozostają poza kontrolą przedsiębiorstwa i na które ono nie ma żadnego wpływu, m.in.: stan bieżącej koniunktury, bariery wejścia na rynek, uwarunkowania prawne, konkurencja, czynniki regionalne i ekonomiczne, lokalizacja, poziom technologiczny, układ kosztów;

•  czynniki endogeniczne, które znajdują się pod kontrolą logistyki przedsiębiorstwa, m.in. jakość i czas obsługi klienta, dostępność produktu, technologia, przestrzeganie praw człowieka, poszanowanie środowiska, integracja funkcjonalna (centralizacja lub decentralizacja firmy), dystrybucja, serwis i gwarancja.

Najważniejsze obszary w logistyce, gdzie znajduje zastosowanie nowoczesna technologia teleinformatyczna oraz modelowanie komputerowe, można podzielić na zadania związane z:

•  obsługą klienta, tj. logistyką marketingu, zintegrowanymi systemami obsługi klienta, zapewnieniem wymaganego poziomu obsługi klienta (czas realizacji zamówienia, polityka zwrotów itd.), realizacją porozumień handlowych, badaniami i analizą rynku itp.;

• planowaniem logistycznym, tj. liczbą i lokalizacją miejsc produkcji, liczbą i lokalizacją magazynów, lokalizacją punktów rozdziału, określaniem form i zasad rozmieszczania zapasów w całej strukturze organizacyjnej przedsiębiorstwa, analizą i kontrolą kosztów;

•  zarządzaniem magazynem, tj. projektowaniem zagospodarowania magazynu, strategią lokalizacji towarów (grupowanie, przestrzeganie zasad priorytetów, FIFO, LIFO), kontrolą kosztów magazynowania (kontroling magazynowy), systemami identyfikacji towarów i przepływu informacji (EDI, EANCOM), technologią i organizacją prac magazynowych, kompletacją towarów, minimalizacją dróg transportowych itd.;

•  przepływem materiałów, tj. planowaniem i harmonogramowaniem produkcji, zarządzaniem potencjałem, planowaniem dystrybucji zasobów (DRP), zarządzaniem łańcuchem dostawczym i planowaniem zapotrzebowania materiałowego (MRP), planowaniem zasobów produkcyjnych (MRP II i Just in Time) itd.;

•  zarządzaniem zapasami, tj. kontrolą kosztów utrzymania zapasów oraz kosztów wyczerpania zapasów, prognozowaniem zużycia zapasów, wyznaczaniem poziomów bezpieczeństwa, grupowaniem zapasów (analiza ABC/XYZ), określaniem przeciętnego czasu dostawy, wielkości i częstotliwości kolejnych dostaw, przeglądami okresowymi lub ciągłymi zapasów.

W każdej z tych dziedzin znajduje zastosowanie modelowanie i symulacja komputerowa przede wszystkim jako metoda wspomagająca podejmowanie decyzji. Techniki symulacyjne najczęściej są stosowane, gdy rozwiązania analityczne są zbyt trudne lub czasochłonne. W zależności od konkretnych zastosowań w nauce można wyróżnić dwie podstawowe metody symulacyjne (Pidd, 1998):

• metody symulacji ciągłej, w których cechą charakterystyczną jest wykorzystywanie funkcji ciągłych w opisie formalnym charakterystyk zmiennych stanu systemu oraz funkcji ciągłych lub quasi-ciągłych w opisie zjawiska upływającego czasu, np. metoda układu równań różniczkowych czy metoda Dynamiki Systemów (SD);

• metody symulacji dyskretnej, gdzie wykorzystuje się funkcje dyskretne zarówno w opisie formalnym charakterystyk zmiennych stanu systemu, jak i w opisie zjawiska upływającego czasu, zmiany stanu symulowanego systemu następują w określonych, tzw. dyskretnych momentach czasu, np. metoda planowania zdarzeń, metoda przeglądu i wyboru działań, metoda interakcji procesów.

Ze względu na cechy charakterystyczne modele symulacyjne można podzielić na (Lipiec-Zajchowska, 1990):

• dynamiczne, gdzie czynnik czasu ma kluczowe znaczenie. Stan systemu zmienia się dzięki upływowi czasu symulacyjnego, właściwości i atrybuty systemu są zależne od wartości czasu symulacyjnego, a wynik jest zależny od czasu trwania symulacji. Przykładem mogą być wszelkiego rodzaju modele działania systemów obsługi, produkcji czy transportu;

• statyczne, gdzie czas nie wpływa na wynik, a zegar symulacji nie jest potrzebny. Stan systemu nie jest zależny od czasu, a atrybuty systemu nie zmieniają się wraz z czasem symulacji, np. zagadnienia kombinatoryczne czy model gry w ruletkę, gdzie na wynik losowań nie wpływa czas;

• stochastyczne, w których duże znaczenie mają występujące w nim zmienne losowe, które sterują zachowaniem procesów i występowaniem danych zdarzeń. Pewne zdarzenia następują losowo, więc nie istnieje żaden ustalony mechanizm częstości ich występowania. Ważnym elementem przy konstruowaniu takiego modelu jest dobór odpowiedniego generatora wartości losowych. Przykładem zmiennych losowych w modelu może być czas między przybywaniem klientów w systemie obsługi lub czas obsługi klienta w okienku;

• deterministyczne, w których nie występują zmienne losowe, a działanie modelu nie opiera się na losowych wystąpieniach pewnych zdarzeń. Cechy obiektów są zdefiniowane wcześniej lub obliczane na bieżąco według zadanych wcześniej funkcji matematycznych. Przykładem takiego modelu może być model analizy finansowej w arkuszu kalkulacyjnym.

W literaturze przedmiotu (np. Matuszek, 2016; Biniek, 2002; Sokołowski, 2010) można znaleźć różne klasyfikacje metod symulacji komputerowej. Podstawowy podział, który bierze pod uwagą sposób zmian stanu w modelowanym systemie i odwzorowania symulowanego czasu, wyodrębnia metody symulacji ciągłej, dyskretnej i mieszanej. Oczywiście symulacja może być jednocześnie np. ciągła i stochastyczna lub dynamiczna, stochastyczna i dyskretna, lub ciągła i deterministyczna (Łatuszyńska, 2011). Do dyspozycji menedżerów jest dziś wiele narzędzi komputerowych, m.in. Technomatix Plant Simulation, Matlab/Simulink, Enterprise Dynamics, Arena, FlexSim, Vensim, Excel/Solver i inne.

Modelowanie symulacyjne jest przydatne w wielu dziedzinach nauki. Służy do poznania danego procesu poprzez zastąpienie go uproszczonym układem, który odzwierciedla jego wybrane cechy. Proces modelowania sprowadza się do wyznaczenia zależności matematycznej między wielkością wyjściową y, a wielkościami wejściowymi x₁, x₂, x₃, …, x n. W najprostszej wersji jest to zapis postaci: y = f( x₁, x₂, x₃, …, x n), gdzie y jest wielkością wyjściową badanego systemu, a zmienne: x₁, x₂, x₃, …, x n, są wielkościami wejściowymi. Zmiennych wejściowych i wyjściowych może być więcej niż jedna, wszystko zależy od stopnia skomplikowania systemu. Model symulacyjny można porównać do tzw. czarnej skrzynki, która może mieć n zmiennych wejściowych oraz m zmiennych wyjściowych:

Optymalizacja procesu metodą symulacji oznacza znalezienie najlepszej konfiguracji zmiennych wejściowych, które znajdują najlepszą wartość odpowiedzi (Garson, Maria, 1997). Optymalizacja polega zwykle na maksymalizacji lub minimalizacji wybranego parametru. Po zbudowaniu każdego modelu symulacyjnego należy dokonać jego walidacji, czyli oceny przydatności w wybranym zastosowaniu. Jeżeli okaże się, że model prawidłowo odwzorowuje rzeczywistość, to dopiero wtedy można przystąpić do projektowania eksperymentów i dalszej analizy danych.

Oprogramowanie FlexSim jest nowym i bardzo szybko rozwijającym się narzędziem. Pierwsza wersja systemu pojawiła się na rynku amerykańskim w 2003 roku. Był to program do symulacji dyskretnej, w którym zastosowano nowoczesny silnik symulacyjny, środowisko 3D i przewidziano integrację z językiem C++. Od tego czasu wprowadzono w nim wiele zmian i aktualizacji. W 2016 roku wprowadzono moduł Process Flow do graficznego programowania obiektów i sekwencji zadań. W nowej odsłonie programu jest wsparcie dla wirtualnej rzeczywistości i sterowania mikrokontrolerami. W 2018 roku dodano nowy moduł people do wizualizacji ruchu pieszego i wiele usprawnień programistycznych. Program rozwija się tak szybko, że trudno wybrać elementy nadające się do publikacji książkowej, ponieważ może okazać się, że za kilka lat opisane funkcje są już przestarzałe.

Książka zawiera uniwersalne przykłady zastosowania modeli symulacyjnych w praktyce wypracowane w ciągu kilku lat pracy ze studentami i przemysłem. Dla wybranych przypadków przeprowadzono pogłębioną analizę, pokazano możliwości optymalizacyjne i zastosowania badawcze oprogramowania FlexSim. Inne przypadki pokazano w wersji podstawowej, aby umożliwić kreatywne myślenie czytelników przy ich dalszej rozbudowie. Dodatkowo zaprezentowane modele zostały przetestowane na zajęciach ze studentami w Państwowej Wyższej Szkole Wschodnioeuropejskiej w Przemyślu. W 2013 roku oprogramowanie FlexSim zostało wdrożone na wspomnianej uczelni jako jednej z pierwszych w Polsce do programu nauczania na kierunku mechatronika. Zostało bardzo dobrze przyjęte przez studentów i obecnie również znajduje się w programie nauczania na kierunku Inżynieria transportu i logistyka oraz Informatyka w biznesie. To właśnie studenci byli główną inspiracją do napisania podręcznika w przedstawionej formie z pogłębioną analizą wybranych zadań problemowych. Formuła książki jako analiza konkretnych przypadków modeli symulacyjnych daje dobrą podstawę do dalszej pracy własnej z programem. Duże możliwości modelowania symulacyjnego w programie FlexSim docenili również przedsiębiorcy, wśród których ciągle zyskuje on na popularności. Świadczą o tym liczne konferencje oraz sympozja organizowane na całym świecie, a ostatnio również w Polsce.

Prezentowana praca powstawała przez trzy lata, a ciągły rozwój technologii spowodował, że kolejne jej rozdziały były realizowane w nowszych odsłonach programu. Testowanie modeli symulacyjnych opisanych w podręczniku rozpoczęto w 2013 roku. Pierwsze trzy rozdziały zostały opracowane w wersji FlexSim 7.3.6, a następne w wersjach z lat 2016, 2017 i 2018. Wszystkie opisane modele są kompatybilne w środowisku FlexSim. Model utworzony w starszej wersji programu zawsze może być uruchomiony w nowszej, zgodnie z opisami w podręczniku. W przypadku użycia jakiejś przestarzałej funkcji program sygnalizuje, że to polecenie może być zastąpione nowszym (program udzieli niezbędnych użytkownikowi podpowiedzi). Od 2017 roku znaczniej zmianie uległ system przenośników taśmowych, dla których wprowadzono zupełnie nową bibliotekę obiektów. Stara biblioteka przenośników taśmowych również jest dostępna, a przy realizacji przykładów zmieszczono odpowiednie opisy. W 2018 roku zmienił się również sposób odwołań do obiektów i danych. Jako operator odwołania zastosowano kropkę. Wiele przykładów z nowym operatorem odwołania można znaleźć w rozdziale 5.

Wybrano środowisko FlexSim, ponieważ jest otwarte i daje możliwości rozwiązywana problemów dotyczących serwisu, obsługi klienta, transportu, optymalizacji, wydajności procesów i zarządzania produkcją. Warto pamiętać, że elementy przepływu (flowitemy) przetwarzane w modelu symulacji zdarzeń dyskretnych są często produktami fizycznymi, ale mogą to być również ludzie, np. klienci w okienku, dokumenty, rysunki, zadania, połączenia telefoniczne, wiadomości elektroniczne lub inne, często abstrakcyjne obiekty. W modelu symulacyjnym zdarzenia przechodzą przez różne etapy przetwarzania, kolejkowania lub transportu w modelu symulacyjnym. Każdy etap procesu może wymagać użycia jednego lub wielu zasobów, takich jak maszyna, przenośnik, operator, pojazd czy inne konkretne narzędzie. Zasoby w środowisku FlexSim można podzielić na stacjonarne i mobilne, niektóre są dedykowane do określonego zadania, a inne mogą być współużytkowane w wielu procesach.

Żyjemy dziś w świecie informacyjnym, w którym przewartościowały się tradycyjne formy edukacji, a klasyczny podręcznik może nie jest tak atrakcyjną formą przekazu jak kiedyś, jednak dalej odgrywa ważną rolę w edukacji na każdym poziomie. Choć dominuje dzisiaj przekaz w Internecie oraz interakcja z innymi użytkownikami sieci, warto jest mieć podstawową bazę literaturową, od której można rozpocząć naukę obsługi oprogramowania symulacyjnego.

Do grona zainteresowanych publikacją można zaliczyć przede wszystkim menedżerów średniego szczebla oraz studentów kierunków takich jak: transport, logistyka, zarządzanie, inżynieria produkcji oraz ekonomia i informatyka w szerokim zakresie. Przedstawione przykłady rozwiązania problemów optymalizacyjnych z zakresu badań operacyjnych są wspólne dla wielu kierunków studiów z obszaru nauk technicznych oraz ekonomicznych. Przedstawione oprogramowanie można sklasyfikować jako środowisko do symulacji dyskretnych zdarzeń. Oznacza to modelowanie systemów, które zmieniają swój stan w dyskretnych punktach czasu w wyniku pojawiania się określonych zdarzeń.

Podziękowania

Na zakończenie chciałbym podziękować przedstawicielowi i dystrybutorowi oprogramowania FlexSim w Polsce – firmie InterMarium z Krakowa – za wsparcie techniczne, dopracowanie kodu programu w podrozdz. 4.4 i konsultacje związane z szybko zmieniającymi się wersjami programu.

Mam nadzieję, że książka będzie dobrze przyjęta przez grono zainteresowanych i stanie się inspiracją dla studentów, wykładowców oraz wszystkich zainteresowanych pogłębianiem wiedzy w tym zakresie. Życzę Państwu przyjemnej lektury i pracy z programem.

Ireneusz Kaczmar

Przemyśl, styczeń 2019

1.
Programowanie liniowe w modelach symulacyjnych

1.1. Ustalenie struktury produkcji dwóch wyrobów

Programowanie liniowe jest jednym z najczęściej stosowanych sposobów optymalizacji ze względu na dopracowany aparat matematyczny umożliwiający szybkie znajdowanie najlepszego rozwiązania dla problemów, w których występują zależności liniowe. W tym rozdziale pokazane zostaną modele symulacyjne umożliwiające zastosowanie środowiska FlexSim do rozwiązywania tej klasy zadań. Programowanie liniowe jest szczególnym przypadkiem programowania matematycznego, a rozważania na ten temat najlepiej rozpocząć od przykładu praktycznego.

Zadanie. Przedsiębiorstwo produkuje dwa wyroby WA i WB. Podczas procesu produkcji wyrobów zużywa się szereg detali, spośród których dwa są limitowane. Limity wynoszą odpowiednio na detal pierwszy I – 72 000 szt., a na detal drugi II – 100 000 szt. Nakłady limitowanych detali na jednostkę wyrobu przedstawiono w tab. 1.

Tabela 1

Środki produkcji

Jednostkowe nakłady na produkcję wyrobu

WA

WB

Detal I

12

12

Detal II

20

10

Dział techniczny przedsiębiorstwa poinformował, że zdolność produkcyjna bardziej ekonomicznego w eksploatacji agregatu nie pozwala wyprodukować więcej niż 4000 szt. wyrobu WB. Nie ma żadnych dodatkowych ograniczeń co do ilości produkcji wyrobu WA. Należy określić optymalne rozmiary produkcji przy założeniu, że zysk realizowany na obu wyrobach jest jednakowy.

Rozwiązanie. W zadaniu nie ma informacji ani na temat liczby agregatów, które posiada przedsiębiorstwo, ani na temat tego, jakie agregaty muszą być wykorzystane. Założono więc wariant polegający na tym, że do dyspozycji przedsiębiorstwa są dwa agregaty. Pierwszy z nich służy do produkcji wyrobu WA, a drugi do produkcji wyrobu WB. Do rozwiązania problemu zaproponowano model jak na rys. 1.

Rysunek 1

Źródło: projekt własny w środowisku FlexSim.

W rozwiązaniu wykorzystano standardowe elementy z biblioteki programu FlexSim, tj.: dwa obiekty typu Source jako źródła detali I i II, dwa obiekty Source jako liczby wyrobów WA i WB; obiekty Combiner jako sumatory (Agregat 1, Agregat 2) oraz obiekt typu Sink – czyli wyjście wyrobów gotowych. Wszystkie elementy połączono zwykłym portem przepływu (do tego celu używa się lewego klawisza myszy z wciśniętym równocześnie klawiszem A). Elementy połączono od lewej do prawej. W pierwszej kolejności należy wykonać połączenia:

•  Ilość A do Agregat 1;

•  Ilość B do Agregat 2.

W ten sposób polecenia montażu detali znajdą się na pierwszych portach sumatorów, które sterującą ich własną pracą. Umożliwi to zliczanie liczby gotowych wyrobów wytworzonych w procesie produkcji. Aktualne podłączenia do wszystkich portów można zawsze sprawdzić na podglądzie każdego obiektu: w tym przypadku w obiektach Combiner (jest to zakładka General tego obiektu). Następnie należy wprowadzić limity w źródłach dopływu detali do produkcji, jak pokazano na rys. 2: dla detalu 1 wartość: 72 000 szt., a dla detalu 2 wartość: 100 000 szt., zgodnie z treścią zadania.

Na rysunku 1 źródła to obiekty nazwane: Ilość A, Ilość B, które wyznaczają limity produkcyjne poszczególnych wyrobów, tj. WA i WB. W źródłach tych w menu rozwijanym FlowItem Class zaznaczono opcję Pallet oraz zerowe czasy przybycia pierwszej palety Arrival at time = 0. Pojedyncza paleta symbolizuje jednostkową ilość produkowanego wyrobu. Wymagane ustawienia dla obydwu wyrobów pokazano na rys. 3.

Rysunek 2

Rysunek 3

Rysunek 4

W obiektach typu Combiner zmieniono nazwy na Agregat 1 i  Agregat 2. Włączono opcję Join, ponieważ detale są montowane na stałe, bez możliwości ich późniejszego rozłączenia. Dalej zdefiniowano ilości potrzebnych detali do produkcji każdego z wyrobów WA i WB. Aby model działał prawidłowo, każdy agregat musi mieć informację, z ilu detali składa się produkowany przez niego wyrób. Wymagane zmiany w agregatach produkcyjnych pokazano na rys. 4.

Dla pierwszego agregatu należy w zakładce Triggers w polu OnReset wprowadzić niestandardowy kod zamknięcia portu wejścia, jak pokazano na rys. 5. Z treści zadania wynika, że bardziej ekonomiczny jest agregat drugi, więc to on musi najpierw zrealizować swój limit produkcji wyrobu WB. Dlatego port wejściowy dla agregatu pierwszego na początku procesu produkcji powinien być zamknięty (rys. 5).

Rysunek 5

Dla drugiego agregatu należy wprowadzić poniższy kod niestandardowy z instrukcjami warunkowymi (zakładka Triggers → OnExit):

/* Otwórz bieżący port wejściowy przy produkcji mniejszej niż 4000 szt. */

/* W przeciwnym wypadku zamknij bieżący port i otwórz port na maszynie Agregat 1 */

if (getoutput(inobject(current, 1))<4000) {openinput(current);} else

{closeinput(current); openinput(node("Agregat 1", model())); }

Przedstawiony kod umożliwi w pierwszej kolejności realizację 4000 szt. wyrobu WB na drugim, bardziej wydajnym agregacie. Po wykonaniu tej produkcji zostanie otwarty port wejściowy dla pierwszego agregatu, aby mógł on zrealizować pozostałą część produkcji wyrobu WA. Po uruchomieniu modelu zaprojektowanego jak na rys. 1 można zaobserwować proces łączenia poszczególnych detali. Na paletach powstają dwa typy wyrobów, a pojedyncza paleta z detalami symbolizuje jedną sztukę danego wyrobu.

Zmienne dynamiczne, takie jak całkowity czas produkcji czy czasy przetwarzania poszczególnych elementów przepływu, nie są w tym zadaniu rozpatrywane. Po wyprodukowaniu 4000 szt. wyrobów Agregat 2 zatrzymuje się pierwszy. Agregat 1 kontynuuje pracę, aż do wyczerpania zapasu surowców. Jako pierwszy wyczerpuje się Detal 1, dostępny w ilości 72 000 szt., następnie system się zatrzymuje. Wyniki badań modelu symulacyjnego można odczytać na wyjściach poszczególnych obiektów (rys. 1). Przy występujących ograniczeniach surowców możliwa do wykonania optymalna wielkość produkcji wyniesie 6000 szt.: 4000 szt. wyrobu WB i 2000 szt. wyrobu WA. Należy zwrócić uwagę, że jeden wyrób pozostał na maszynie pierwszej jako produkcja w toku. Stąd mamy na wyjściu źródła A wynik 2001 szt. wytworzonych wyrobów, a teoretycznie powinno być 2000 szt. Nie jest to błąd, ale aby takiej sytuacji uniknąć, należałoby jeszcze zamknąć port wejściowy tej maszyny po wyczerpaniu któregokolwiek z surowców. ◄

Pytania i zadania

Czy można z menu rozwijanych wprowadzić ograniczenia warunkowe typu if – else, aby nie używać kodu niestandardowego?

Czy włączenie funkcji Pack zamiast Join w sumatorze zmieni coś w działaniu modelu?

Jak można zmienić kolor lub kształt poszczególnych elementów przepływu?

W jaki sposób można wygenerować raport ogólny po zakończeniu działania modelu?

Czy wprowadzenie pracowników do ręcznego przenoszenia elementów przepływu (detali) wpłynie w jakikolwiek sposób na działanie tego modelu?

1.2. Ustalenie optymalnej struktury produkcji trzech wyrobów

Typowym problemem często występującym w przemyśle jest ustalenie struktury produkcji przy limitowanych ilościach surowców. W tym przypadku do wyszukania rozwiązania zostanie wykorzystany optymalizator OptQuest wbudowany w środowisko symulacyjne.

Zadanie. W przedsiębiorstwie wytwarza się trzy typy produktów: A, B i C. Spośród wielu surowców zużywanych w procesie produkcji dwa są limitowane. Dzienne ograniczenia zużycia surowców wynoszą odpowiednio: I – 25 000 szt. oraz II – 18 000 szt. W tabeli 2 podano jednostkowe zużycia surowców do produkcji poszczególnych wyrobów.

Tabela 2

Surowce

Jednostkowe nakłady surowców na wytworzenie produktu

A

B

C

I

II

20

25

30

15

10

15

Zysk ze sprzedaży poszczególnych wyrobów wynosi dla wyrobu A – 8 zł, dla wyrobu B – 12 zł, a dla wyrobu C – 9 zł za sztukę. Należy określić dzienną strukturę produkcji, umożliwiającą osiągnięcie maksymalnego zysku ze sprzedaży wyrobów gotowych. Przedmiotem analizy problemu będzie:

I. Zbudowanie modelu matematycznego zagadnienia.

II. Zaprojektowanie modelu symulacyjnego dla przedstawionego procesu produkcji.

III. Wykonanie optymalizacji i obliczenie wartości funkcji celu.

Zadanie odnosi się do osiągnięcia wyznaczonego celu za pomocą ograniczonych środków. Cel zapisywany jest w postaci funkcji matematycznej zwanej funkcją celu, której wartość zwykle minimalizuje się lub maksymalizuje. W funkcji celu występują zmienne decyzyjne, które mają wpływ na stopień realizacji założonego celu. W praktyce zazwyczaj są do dyspozycji ograniczone ilości zasobów, najczęściej środków produkcji. Ograniczenia te są zapisywane w postaci układu równań i nierówności, gdzie zmienne decyzyjne spełniają układ warunków ograniczających. Decyzje, które spełniają układ warunków ograniczających, są nazywane decyzjami dopuszczalnymi, a decyzję wybraną spośród decyzji dopuszczalnych, dla której funkcja celu przyjmuje wartość maksymalną lub minimalną, nazywa się decyzją optymalną.

W analizowanym przypadku zastosowano model jednokryterialny, ponieważ zadanie optymalizacji polega na realizacji (optymalizacji) pojedynczego celu. Gdy rozpatrywane są dwa cele lub jest ich więcej, wówczas używa się modelu wielokryterialnego. Jeżeli funkcja celu jest funkcją liniową, a zbiór warunków ograniczających również ma postać układu równań lub nierówności liniowych, to model taki nazwa się zadaniem programowania liniowego (Trzaskalik, 2003, s. 25).

W przypadku problemu wyboru optymalnego asortymentu produkcji należy określić, które wyroby i w jakich ilościach należy produkować. Nie wolno przekroczyć posiadanych zasobów środków produkcji. Zakłada się, że przedsiębiorstwo może produkować n wyrobów. Do ich produkcji są zużywane zasoby, z których część r jest limitowana. Dane są normy zużycia surowców na jednostkę każdego wyrobu, zasoby środków produkcji, ceny lub zyski ze sprzedaży wyrobów gotowych. W realnych warunkach często wymaga się spełnienia dodatkowych kryteriów ograniczających. Może być to informacja związana z popytem lub ograniczeniami dotyczącymi np. minimalnych ilości zamówienia albo maksymalnych ilości towaru, jakie można sprzedać. Zmiennymi decyzyjnymi są ilości produkcji wyrobów, tj. x j – wielkość produkcji j-ego wyrobu. Zapisano to w ogólnym modelu programowania liniowego za pomocą następującego zestawu równań (Kukuła 2006, s. 16):

(1)

przy następujących parametrach: a ij – zużycie i-tego środka produkcji na wytworzenie jednostki j-ego wyrobu ( i = 1, 2, …, r; j = 1, 2, …, n); b i – posiadany zasób i-tego środka produkcji; c j – cena lub zysk jednostkowy ze sprzedaży j-ego wyrobu; d j – minimalna ilość j-ego wyrobu, jaką trzeba wyprodukować; g j – maksymalna ilość j-ego wyrobu, którą można sprzedać.

Asortyment produkcji spełniający warunki ograniczające i warunki brzegowe będzie rozwiązaniem dopuszczalnym. Rozwiązaniem optymalnym jest rozwiązanie, dla którego funkcja celu przyjmie wartość maksymalną. W badaniach operacyjnych istnieje wiele sposobów rozwiązywania tego typu problemów w sposób graficzny lub metodami algebry liniowej (patrz np. (Ferguson, 1958; Dantzig, 1998; Kukuła, 2006)). Uniwersalną metodą rozwiązywania zadań z zakresu programowania liniowego jest metoda simpleks. Jest ona jednak żmudna i pracochłonna. Do rozwiązania przedstawionego problemu zastosowano środowisko symulacyjne 3D nowej generacji FlexSim ver. 7.3.6. z wbudowanym modułem optymalizacyjnym OptQuest. Szczegółowy opis poszczególnych funkcji i działania interfejsu programu można znaleźć w jedynym dotychczas wydanych podręczników, np. (Beaverstock, 2011), a także w pomocy użytkownika programu. Wiele materiałów funkcjonuje w sieci online, działa m.in. forum społecznościowe oraz blog użytkowników oprogramowania FlexSim. Wiele opracowań można także znaleźć bazach artykułów naukowych online jak: Google Scholar, Springer itp.

Rozwiązanie. Rozwiązanie problemu zostanie przedstawione w trzech kolejnych punktach.

I. Tego typu zadanie można przedstawić za pomocą równań ograniczających (2) i (3), warunków brzegowych (4) oraz funkcji celu (5). Zmiennymi decyzyjnymi określającymi wielkość produkcji dla poszczególnych wyrobów są elementy: x₁, x₂, x₃.

(2)

(3)

(4)

(5)

Funkcja celu (5) obejmuje kryteria optymalizacyjne dotyczące ilości produktów: A, B i C. Rozwiązanie zadania polega na odnalezieniu wielkości x₁, x₂, x₃, dla których funkcja celu przyjmuje wartość maksymalną ze zbioru decyzji dopuszczalnych.

II. Kluczowym punktem każdego zadania optymalizacyjnego jest zbudowanie prawidłowego modelu symulacyjnego. Umożliwi on odwzorowanie procesu dokładnie w taki sposób, w jaki przebiega on w rzeczywistości. W środowisku symulacyjnym FlexSim najczęściej należy wybrać odpowiednie elementy z biblioteki obiektów po lewej stronie głównego okna programu. Elementy te „naśladują” maszyny, surowce lub wywarzane w rzeczywistości produkty. Logika przepływu badanego procesu jest tworzona przez dodanie odpowiednich połączeń, które umożliwiają przemieszczanie się elementów przepływu; mogą to być np. przejeżdżające samochody, obrabiane detale czy ludzie oczekujący w kolejce na obsługę.

W pewnych niestandardowych sytuacjach należy zmienić domyślne funkcje obiektów lub ręcznie napisać nowe procedury obsługi. W tym zadaniu wystarczy zdefiniować parametry poszczególnych maszyn w oknach ustawień.

Przykładowy model symulacyjny dla rozwiązania omawianego zadania pokazano na rys. 6. Można w nim wyróżnić następujące obiekty: trzy źródła ( Source) symbolizujące ilości produktów A, B, C; dwa źródła symbolizujące ilości potrzebnych surowców I, II; trzy agregaty ( Combiner) realizujące produkcję A, B, C oraz wyjście ( Sink) wyrobów gotowych, zliczające produkcję wyrobów gotowych.

W pokazanym na rys. 6 przykładzie zmieniono domyślne ustawienia sumatorów ( Agregat 1, 2, 3). W zakładce Combiner uaktywniono funkcję Join, za pomocą której odbywa się łączenie surowców z odpowiednich źródeł ( Surowiec 1 i  2), które następnie są przetwarzane w produkty A, B, C. Surowce łączone są na trwałe, bez możliwości ich późniejszego rozdzielenia. Zalecane proporcje surowców (tab. 2) wprowadzono jako Components List – dokonuje się tego w zakładce Combiner obydwu agregatów. Jest to odpowiednio dla produktu A po 20 i 25 jednostek, dla produktu B – po 30 i 15 jednostek, a dla produktu C – po 10 i 15 jednostek surowca. W ten sposób jest realizowany opisany w zadaniu proces produkcyjny. Wprowadzono ograniczenia ilościowe w źródłach surowców do założonych dziennych limitów produkcji.

Rysunek 6

Źródło: projekt własny w programie FlexSim.

Z kolei zmieniając wartości podane w źródłach produktu A, B i C, można zamodelować maksymalne wielkości produkcji dla każdego z trzech wyrobów pod warunkiem, że dwa pozostałe nie są produkowane. W ten sposób otrzymuje się maksymalne wielkości możliwości produkcyjnych dla poszczególnych produktów, które można uzyskać przy istniejących ograniczeniach surowców:

• dla produktu A = 720 szt.;

• dla produktu B = 833 szt.;

• dla produktu C = 1200 szt.

III. W wyniku jednokrotnego uruchomienia modelu (tzw. wstępnej symulacji) otrzymuje się potrzebne dane, które posłużą jako informacje wejściowe dla optymalizatora. Warunkami ograniczającymi są równania (2), (3), (4), które wprowadzono jako ograniczenia optymalizatora. Funkcja celu (5) stanowi jednokryterialne zadanie optymalizacyjne, które należy maksymalizować. W tym zadaniu występuje jedno kryterium optymalizacji funkcji celu, należy zatem zaznaczyć opcję Single. Ustawienia optymalizatora OptQuest pokazano na rys. 7.

Przy tak sformułowanych założeniach program szuka najlepszego rozwiązania w zbiorze decyzji dopuszczalnych. Dla wszystkich zmiennych wejściowych zastosowano typ całkowitoliczbowy Integer. Należy zaznaczyć, że w całym środowisku programu Flexsim, w tym w OptQuest i ExpertFit, obowiązuje notacja amerykańska, tzn. w zapisie liczb separatorem dziesiętnym jest kropka, i w ten sposób należy wprowadzać wszystkie dane. Tak też wyświetlane są wyniki. W przypadku eksportu danych do arkusza kalkulacyjnego należy zwrócić uwagę na ustawienia programu (np. Excel) dotyczące przyjętego separatora dziesiętnego. Dane dla maksymalizacji celu pobierane są z tabeli globalnej . Surowce zostają zużyte maksymalnie w procesie produkcji. Zbiór rozwiązań wygenerowany przez optymalizator przedstawiono na rys. 8.

Rysunek 7

Zbiór rozwiązań dopuszczalnych ograniczono do osiemdziesięciu wyników. Są to punkty na rys. 8. Wśród nich znajduje się rozwiązanie optymalne. Górna linia jest granicą funkcji celu. Większym okręgiem zaznaczono trzy najlepsze rozwiązania (Solution 72, 77, 56). Rozwiązanie optymalne (Solution 72) zostało znalezione bardzo szybko, bo już przy siedemdziesiątej drugiej iteracji, z wynikiem 12 750,00 jednostek pieniężnych zysku. Jest to maksymalna wartość funkcji celu (zysk ze sprzedaży) dla postawionych w tym zadaniu ograniczeń.

Rysunek 8

Wyniki najlepszych czterdziestu rozwiązań zwróconych przez optymalizator są podane w tab. 3. Widać, że trzydzieści trzy początkowe rozwiązania wykluczają opłacalność wytwarzania produktu A i jego ilość wynosi 0.

Tabela 3

Solution ID

Rank

Single Objective

Best Iteration

Ilość

A

Ilość

B

Ilość

C

Surowiec I

Surowiec II

Produkcja (wartość)

72

1

12750

72

0

650

550

25000

18000

12750

77

2

12747

72

0

649

551

25000

18000

12747

56

3

12744

72

0

648

552

25000

18000

12744

53

4

12741

72

0

647

553

25000

18000

12741

61

5

12738

72

0

646

554

25000

18000

12738

69

6

12735

72

0

648

551

25000

18000

12735

63

7

12732

72

0

650

548

25000

18000

12732

79

8

12723

72

0

647

551

25000

18000

12723

64

9

12690

72

0

654

538

25000

18000

12690

66

10

12681

72

0

654

537

25000

18000

12681

54

11

12510

72

0

666

502

25000

18000

12510

59

12

12465

72

0

669

493

25000

18000

12465

57

13

12462

72

0

668

494

25000

18000

12462

15

14

12411

72

0

537

663

25000

18000

12411

50

15

12408

72

0

542

656

25000

18000

12408

55

16

12390

72

0

533

666

25000

18000

12390

60

17

12387

72

0

529

671

25000

18000

12387

49

18

12384

72

0

531

668

25000

18000

12384

68

19

12345

72

0

515

685

25000

18000

12345

51

20

12333

72

0

538

653

25000

18000

12333

58

21

12303

72

0

519

675

25000

18000

12303

14

22

12294

72

0

501

698

25000

18000

12294

67

23

12291

72

0

500

699

25000

18000

12291

62

24

12285

72

0

498

701

25000

18000

12285

70

25

12273

72

0

491

709

25000

18000

12273

71

26

12267

72

0

489

711

25000

18000

12267

23

27

12258

72

0

489

710

25000

18000

12258

65

28

12258

72

0

498

698

25000

18000

12258

19

29

12255

72

0

488

711

25000

18000

12255

75

30

12255

72

0

683

451

25000

18000

12255

74

31

12252

72

0

682

452

25000

18000

12252

52

32

12249

72

0

501

693

25000

18000

12249

27

33

12243

72

0

487

711

25000

18000

12243

24

34

12175

72

8

482

703

25000

18000

12175

25

35

12170

72

10

481

702

25000

18000

12170

5

36

12137

72

13

480

697

25000

18000

12137

20

37

12133

72

8

468

717

25000

18000

12133

21

38

12132

72

9

471

712

25000

18000

12132

29

39

12027

72

9

457

727

25000

18000

12027

28

40

11927

72

7

450

737

25000

18000

11927

Dzienne wielkości produkcji wyrobów B i C wynoszą, odpowiednio, 650 szt. i 550 szt. Dla tak zaplanowanej struktury produkcji przedsiębiorstwo osiąga maksymalne zyski ze sprzedaży w wysokości 12 750,00 jednostek pieniężnych. Otrzymano prawidłowy wynik, który został zweryfikowany narzędziem Solver w arkuszu kalkulacyjnym Excel. Zmierzony czas potrzebny do wykonania symulacji przedstawionych rozwiązań wyniósł 41 sekund. Zastosowano standardowy PC z procesorem Intel Core 2 Quad CPU Q8400 2,67 GHz, 4 GB RAM. ◄

Zaprezentowana powyżej koncepcja może być podstawą do konstruowania wielu bardziej rozbudowanych modeli optymalizacji liniowej. Warto zauważyć, że model symulacyjny oraz optymalizator działają niezależnie, mimo integracji w jednym pakiecie. Szerszy opis przedstawionego w tym rozdziale problemu można odnaleźć w innych opracowaniach autora, np. (Kaczmar, 2016).

Pytania i zadania

Czy zmiana cen poszczególnych wyrobów gotowych wpłynie na wynik optymalizacji?

W jaki sposób wykonać analizę wrażliwości w zakresie wpływu zmiany ceny wyrobów na strukturę produkcji?

Omów krótko, jakie typy zmiennych można wprowadzić do optymalizatora?

Do czego służy próbnik w środowisku programu?

Jakie parametry modelu wypływają na szybkość pracy optymalizatora?

Wyjaśnij znaczenie parametrów Wall Time i Max Solution optymalizatora.

Jeżeli parametr Wall Time zostanie ustawiony na zero, to jak wpłynie to na wyniki pracy optymalizatora?

1.3. Maksymalizacja zysku przy limitach czasu pracy maszyn

Zadanie. Firma posiada linię produkcyjną, na której są wytwarzane dwa wyroby, A i B. Obróbka wyrobów jest wykonywana kolejno na trzech maszynach: M1, M2, M3. Maszyny te mają określoną żywotność i wymagają konserwacji, a ich limity pracy pomiędzy kolejnymi przerwami wynoszą odpowiednio: M1 – 33 000, M2 – 13 000 i M3 – 80 000 godzin. Zużycie czasu pracy maszyn na produkcję jednostki każdego wyrobu podano w dwóch zestawach danych w tab. 4 i 5. W tabeli 4 czasy obróbki podano w pełnych godzinach, ponieważ jest to obróbka automatyczna, a w tab. 5 do opisu czasu pracy maszyn użyto rozkładu normalnego N(μ, σ), gdzie: μ – wartość oczekiwana (średnia) , σ – odchylenie standardowe . W tabeli 5 wartości oczekiwane μ są takie same jak w tab. 4, dodano do nich jedynie odchylenie standardowe. Uwzględniono w ten sposób sytuację, w której obróbka detalu odbywa się z udziałem operatora (pracownik lub grupa pracowników). Wówczas czasy obróbki nie są idealnie powtarzalne jak w przypadku automatów i nie da się ich opisać liczbą całkowitą. Zastosowano więc rozkład statystyczny uwzględniający nierównomierność wykonywanych przez pracownika czynności na skutek czynników takich jak: zmęczenie pracownika, jakość surowca itp.

Zysk ze sprzedaży wyrobu A wynosi 1 zł, a ze sprzedaży wyrobu B – 3 zł. Analiza danych z lat ubiegłych pokazała, że rynek nie może wchłonąć więcej niż 7000 szt. wyrobu B. Należy zaplanować strukturę asortymentową produkcji dla pierwszego i drugiego zestawu danych, tak aby osiągnąć maksymalny zysk ze sprzedaży wyrobów gotowych, oraz zbudować model matematyczny, modele wizualizacyjne do przeprowadzenia eksperymentu symulacyjnego oraz optymalizacji i porównać otrzymane wyniki.

Rysunek 9

Rozwiązanie – sposób I: eksperyment symulacyjny. Aby lepiej zrozumieć zasady przeprowadzania eksperymentów i w konsekwencji wdrażania w przedsiębiorstwie konkretnych wariantów decyzyjnych, celowo podano opisy czasu pracy maszyn w dwóch zestawach danych. Jako pierwszy zostanie przeprowadzony eksperyment symulacyjny dla danych z tab. 4, czyli w przypadku, gdy produkcja jest zautomatyzowana i odbywa się bez udziału człowieka. Drugi eksperyment odnosi się do danych z tab. 5, gdzie do obsługi maszyny potrzebny jest operator (najczęściej człowiek), a czasy obróbki są opisane rozkładami statystycznymi. Do przeprowadzenia tych obu eksperymentów zbudowano taki sam model procesu jak pokazano na rys. 9. Opisaną produkcję można zwizualizować obiektami dostępnymi w bibliotece programu. W modelu występują dwa źródła symbolizujące wytwarzane ilości wyrobów A i B, trzy maszyny, M1, M2, M3, realizujące obróbkę kaskadowo oraz wyjście gotowych produktów.

Samo uruchomienie przedstawionego modelu w środowisku programu spowoduje wizualizację całego procesu, a jego działanie będzie trwało aż do chwili przerwania przez użytkownika. Ideą eksperymentu jest znalezienie struktury asortymentowej zapewniającej największe zyski dla wybranych przez decydentów przedsiębiorstwa scenariuszy produkcji. W tym celu należy wprowadzić wymagane limity czasu pracy maszyn, a także niezbędny czas przeznaczony na obróbkę jednostki wyrobu. Ograniczenia te zrealizowano przez zaprogramowanie odpowiedniej procedury sterującej dla maszyny M1 w zakładce Triggers → OnEntry.

Poniżej przedstawiono przykładowy kod programu (w którym uwzględniono odchylenia standardowe) dla procedury realizującej warunki zadania z tab. 5. Dla maszyny M1 należy go wprowadzić w zakładce Triggers → OnEntry:

/* Zuzycie czasu na jednostke wyrobu I */

if (getitemtype(item)==1) {

inc(gettablecell("Czas",1, 1),normal(3,1,0));

inc(gettablecell("Czas",1, 2),normal(1,0.5,0));

inc(gettablecell("Czas",1, 3),normal(5,2,0));

} else {

/* Zuzycie czasu na jednostke wyrobu II */

inc(gettablecell("Czas",1, 1),normal(1,0.5,0));

inc(gettablecell("Czas",1, 2),normal(1,0.5,0));

inc(gettablecell("Czas",1, 3),normal(8,2,0));

}

/* Limity czasu pracy maszyn M1, M2, M3 */

if (gettablenum("Czas", 1, 1)>=33000)

{closeinput(current) ;}

if (gettablenum("Czas", 1, 2)>=13000)

{closeinput(current);}

if (gettablenum("Czas", 1, 3)>=80000)

{closeinput(current);}

Kod źródłowy opisów czasu pracy maszyn z tab. 4 będzie taki sam z wyjątkiem rozkładów statystycznych, które należy usunąć, a wartości zastąpić liczbami całkowitymi. Trzeci parametr w funkcji rozkładu statystycznego jest równy 0, np.: normal ( 3, 1, 0), co oznacza, że każda maszyna korzysta z odrębnego strumienia liczb losowych. Otrzymuje się bardziej precyzyjne wyniki niż wtedy, kiedy strumień liczb losowych jest wspólny dla wszystkich maszyn. Szczegółowe instrukcje dotyczące posługiwania się oprogramowaniem można znaleźć w literaturze lub w pomocy użytkownika. Należy wspomnieć, że w ustawieniach wszystkich maszyn w zakładce Processor parametr Process Time ustawiono na zero (domyślnie jest 10 sekund). W naszym przypadku parametr Process Time, czyli czas obróbki, jest zliczany w tabeli globalnej Czas za pomocą kodu programu zaimplementowanego w pierwszej maszynie.

W celu ustalenia maksymalnych możliwości wytworzenia wyrobu A → maks przy produkcji B = 0 i B → maks przy A = 0 dwukrotnie uruchomiono model. Ustalono, że przy zerowej produkcji wyrobu B maksymalna liczba A wyniosła 11 000 szt., a przy zerowej produkcji A maksymalna liczba B wyniosła 10 000 szt. Daje to decydentowi wstępną informację, którą może się posłużyć, projektując poszczególne scenariusze produkcji potrzebne do przeprowadzenia eksperymentu. Ponieważ analiza historycznych danych dotyczących sprzedaży pokazała, że rynek może wchłonąć maksymalnie 7000 szt. wyrobu B, przedział ten zostaje jeszcze bardziej doprecyzowany. Wiadomo, że nie wolno przekroczyć 7000 szt. wyrobu B, ponieważ firma poniesie straty. Decydenci zaproponowali przeprowadzenie symulacji potencjalnych zysków zgodnie z wielkością produkcji poszczególnych asortymentów zestawionych w tabeli. Zdecydowano się na pięć scenariuszy produkcji. Scenariusze wielkości produkcji realizowane w eksperymencie pokazano w tab. 6.

Tabela 6

Variable

Scenario1

Scenario2

Scenario3

Scenario4

Scenario5

A

MODEL:/IloscA>variables/sequence/Arrival1/Quantity

6500

6000

5000

6000

7000

B

MODEL:/IloscB>variables/sequence/Arrival1/Quantity

6000

6500

7000

7000

7000

W wyniku działania procedury programu model symulacyjny zostaje zatrzymany automatycznie po przekroczeniu ogólnego limitu czasu pracy albo przekroczeniu jednostkowych nakładów czasu pracy maszyn potrzebnych do realizacji procesu produkcji. W kodzie programu uwzględniono te dwa kryteria ograniczające. Wszystkie inne parametry maszyn pozostają bez zmian. Wyniki eksperymentu dla pierwszego zestawu danych z tab. 4 przedstawiono na rys. 10, a wyniki dla drugiego zestawu danych z tab. 5 z udziałem operatorów i opisanych rozkładami statystycznymi przedstawiono na rys. 11.

Rysunek 10

Źródło: opracowania własne.