MONTE CARLO SIMULACE V OPTIMALIZACI PROCESŮ Radim Špicar ÚVOD Optimalizovat by chtěl každý. Zdaleka ne každý je ovšem vybaven takovými znalostmi, aby byl schopen využívat metod lineárního či nelineárního programování nebo dalších nabízejících se matematických aparátů. Tím spíše toto platí u malých a středních firem, kde se manažeři zpravidla drží zavedených metod v daném oboru a k nově vznikajícím metodám jsou skeptičtí. Monte Carlo simulace představují účinný a (při využití patřičného software) uživatelsky přívětivý nástroj, který od manažerů nevyžaduje žádné hluboké matematické znalosti a pracuje v prostředí, které jim je známé. Cílem tohoto příspěvku je ukázat potenciál využití Monte Carlo simulací při optimalizaci procesů daný především jednoduchostí použití a možností provádět simulace nad složitými modely, kde řešení jinými metodami není v silách běžného manažera.
1
PŘEDSTAVENÍ A PŘEDNOSTI MONTE CARLO SIMULACÍ
Název „Monte Carlo“ byl poprvé použit vědci pracujícími na vývoji nukleárních zbraní v Los Alamos ve čtyřicátých letech 19. století. Popisovali jím soubor metod založených na hazardních hrách, jejichž chování a výsledky mohou být použity pro studium určitých zajímavých jevů. Přestože v principu není nutné používat počítač, efektivnost takovýchto metod je enormně zvýšena dostupností výkonné výpočetní techniky [5]. Princip a užitečnost Monte Carlo simulací shrnul snadno pochopitelným příkladem S. M. Ulam ve své autobiografii. Zabýval se problémem, jak spočítat pravděpodobnost výhry ve hře pasiáns. Za předpokladu dokonale zamíchaných karet a zvolení určité strategie lze úkol vyřešit pomocí základní pravděpodobnostní teorie – toto řešení je ale vysoce zdlouhavé. Na druhé straně není složité naprogramovat počítač, aby randomizoval seznam reprezentující 52 karet, vytvořil z něj seznamy reprezentující jednotlivé hromádky a simuloval hraní hry až do konce. Sledování mnoha opakování následně poskytne Monte Carlo odhad pravděpodobnosti úspěchu [4].
1.1
JEDNODUCHOST POUŽITÍ
Lidé se zpravidla staví ke změnám či novým věcem negativně. Proto je ideální spíše než snažit se manažera přesvědčit používat nový program, doplnit funkcionalitu do programu, který už běžně používá a jehož prostředí zná. Tohoto principu využívá např. software Palisade @Risk [1] nebo Oracle Crystal Ball [2] – oba představují nadstavbu MS Excel. To v praxi znamená, že pracovní plocha vypadá stále stejně, jen najednou umí víc. Důležitá je také jakási zpětná kompatibilita, umožňující doplnit simulační prvky do již vytvořených dokumentů jako jsou výkazy či různé plány. Mají-li tyto dokumenty správně nastavené odkazy mezi buňkami, pak lze během několika minut vygenerovat nové výstupy pracující s rizikem a poskytující užitečnější údaje. Jeden výstup pak nahradí několik variant scénářů, protože pracuje se stochastickými veličinami a nikoliv deterministickými daty. Manažer se pak dozví, s jakou pravděpodobností bude firma ve ztrátě, místo toho, aby se dozvěděl, že bude ve ztrátě při naplnění scénáře A, který uvažuje pesimistický vývoj proměnných. Jednoduchost použití je dána snadnou ovladatelností a intuitivním vytvářením modelů a simulací. Jak již bylo řečeno výše, lze simulace provádět po minimálních úpravách nad standardními výkazy a plány – to znamená, že se uživatel nemusí učit modely vytvářet. Vždy jen nahradí deterministické hodnoty stochastickými veličinami a určí, které výstupy chce sledovat. Software poté sám vytváří výstupní grafy, tabulky a analýzy citlivosti. Vše v rozmezí desítek vteřin. V porovnání s vytvářením nových modelů pro účely lineárního či nelineárního programování jde o zlomek času. Výsledky lze navíc snadno prezentovat lidem, kteří simulace neznají a kteří nedůvěřují externím programům. Ostatně Excelu věří v dnešní době skoro každý.
1.2
ROZSAH VÝSTUPŮ
Tradiční metody pracující s diskrétními hodnotami mají relevantnost svých výstupů omezenu svojí povahou – pracují za jistých podmínek a jejich výsledky jsou také diskrétní. Oproti tomu Monte Carlo simulace umožňují sledovat výstupy jako stochastické veličiny a zakomponovat tím do modelu riziko.
Neodpovídají tak na otázky „zda“ nebo „kolik“, své odpovědi poskytují formou pravděpodobnosti – v kolika procentech případů bude vyrobeno předepsané množství výrobků, s jakým rizikem bude čistá současná hodnota kladná, s jakou pravděpodobností se vyčerpají zásoby apod. Fakticky je vytvořeno tolik scénářů, kolik iterací simulace proběhne. Místo nejpravděpodobnějšího, pesimistického a optimistického scénáře má tak manažer k dispozici tisíce různých variant. Jakmile se pak začne nejistota vytrácet, je možné redukovat tyto varianty jen na ty relevantní a dostat tak zúžené pásmo pro konečné sledované hodnoty.
1.3
KOMPLEXNOST MODELU
Vzhledem k faktu, že nedochází k řešení žádných rovnic apod., lze vytvářet vysoce komplikované modely bez ohrožení jejich řešitelnosti [3]. Jediným omezením je čas a případně hardware, na kterém je simulace prováděna. Jednoduché problémy je možné vyřešit v řádu desítek sekund, složité si pak mohou vyžádat několikahodinové simulace. Nejedná se ovšem o čas strávený prací – během doby, kdy program pracuje, se může manažer snadno věnovat dalším činnostem. I přes komplexnost ale zůstává modelu intuitivnost. Zjednodušeně řečeno simulace vkládá různá čísla tam, kde před tím bylo jedno číslo dané pevně. Je tedy možné modelovat i prezentovat model s diskrétními hodnotami, které jsou po pochopení nahrazeny stochastickými veličinami.
1.4
VSTUPNÍ ÚDAJE
Uplatnění Monte Carlo simulací a obecně simulací jako takových stojí a padá na schopnosti získat přesné vstupní údaje, které se v modelu mají použít. Průměr či směrodatná odchylka určitého faktoru se odpozorují a vypočítají snadno, má-li se ale chování faktoru popsat některou z náhodných veličin, začíná být problém. Software zpravidla poskytuje několik pomůcek, jak pomoci s odhadem správných vstupních parametrů – např. v podobě možnosti zadávat nikoliv základní parametry rozdělení, ale příslušné kvantily (např. jako pesimistický a optimistický odhad). Dále je software schopen na základě vložené datové řady vygenerovat nejlépe vyhovující (dle Anderson-Darling testu) rozdělení (ať už diskrétní nebo spojité) včetně jeho parametrů a toto rozdělení použít pro následnou simulaci. Manažeři tak nemusí sami ovládat statistické metody a nemusí ani činit odhady „od oka“, software vše vykoná za ně. V potřebě přesných a někdy těžko získatelných vstupních dat je možné vidět nevýhody simulací, ale stejné nevýhody vznikají u všech metod využívajících stochastické veličiny. Výhodou je potom možnost použít již existující data vytvořená pro MS Excel, čímž odpadá čas strávený kopírováním nebo přepisem hodnot. Stačí otevřít starý dokument, nechat software vygenerovat nejlépe vyhovující rozdělení a spustit simulaci.
2
PŘÍKLAD VYUŽITÍ V OPTIMALIZACI PROCESU
Následující příklad ukazuje možná využití Monte Carlo simulací při optimalizaci podnikových procesů. Všechny uvedené simulace byly provedeny s pomocí software Oracle Crystal Ball jako nadstavby nad Microsoft Excel 2010. .
2.1
URČENÍ POČTU PRACOVNÍKŮ
Uvažujme pro začátek velmi zjednodušený příklad kapacitního plánování – výrobní společnost se na základě predikce poptávky rozhoduje o tom, kolik dělníků přijme do standardního provozu. Podnik expeduje denní zakázky a netvoří zásoby finální produkce. Neuspokojená poptávka je tak ztracena. Existuje několik možností, jak dojít k rozhodnutí, v závislosti na dostupných vstupních datech. Předpokládejme variantu, kdy má společnost proměnné vyjádřené náhodnými veličinami jako: Denní poptávka = náhodná veličina s normálním rozdělením, střední hodnota 2000 kusů, směrodatná odchylka 100 kusů; zaokrouhleno dolů na celé kusy denní produkce na jednoho dělníka = náhodná veličina s normálním rozdělením, střední hodnota 50 kusů, směrodatná odchylka 2 kusy, zaokrouhleno dolů na celé kusy ušlý zisk za jeden kus při neuspokojené poptávce = 200 Kč denní náklady spojené se zaměstnáním jednoho dělníka = 1000 Kč. První, nejjednodušší možností stanovení počtu potřebných dělníků, je prosté vydělení průměrných hodnot, tedy 2000 / 50 = 40 dělníků. Je zřejmé, že takovýto výpočet povede zhruba v polovině případů k nedostatečné výrobě a neuspokojené poptávce. Nakolik je tento stav přijatelný, poté závisí na době,
kterou je společnost ochotna držet zásoby finální produkce, neboť v dlouhém období se odchylky způsobené náhodou výrazně vyrovnají. Druhým způsobem je využití kvantilů náhodných veličin pro odhad s určitou mírou jistoty. Nabízí se (z pohledu vlivu na kapacitu) pesimistický odhad poptávky 2164 kusů (jako 95% kvantil příslušného rozdělení) a odhad produkce pracovníků 46 kusů (jako 5% kvantil příslušného rozdělení). Poté dostáváme prostým vydělením 2164 / 46 = 48 potřebných dělníků. V tomto případě je zaručena velmi nízká pravděpodobnost neuspokojení poptávky, na druhou stranu je ovšem třeba sledovat náklady spojené s takovýmto opatřením. S každým dalším dělníkem se zvyšují osobní náklady a snižují náklady spojené s ušlými zisky. Druhé jmenované náklady je ovšem náročné bez použití složitého matematického aparátu kvantifikovat. Třetím způsobem je sestavení modelu a spuštění Monte Carlo simulace nad tímto modelem. V každé iteraci je vygenerována denní poptávka a denní výkony zvlášť pro každého dělníka. Jestliže je celkové vyrobené množství nižší než poptávané, pak vzniká celkový ušlý zisk daný součinem tohoto rozdílu a ušlého zisku na jeden kus. Chceme-li sledovat závislost celkových nákladů na počtu dělníků, pak musíme provést simulaci několikrát pro různé počty pracovníků. Pro výše uvedené hodnoty a 40 dělníků dostáváme následující graf ušlého zisku (1 000 000 iterací): Obr. 1: Ušlý zisk, 40 dělníků, nulové zásoby
Zdroj: Vlastní zpracování Výsledky kopírují očekávání, kdy zhruba v polovině případů je poptávka uspokojena a v druhé polovině naopak uspokojena není. Stejně tak se potvrzuje logické očekávání, že častěji dochází k méně chybějícím výrobkům a tedy menšímu ušlému zisku. Průměrný ušlý zisk můžeme kvantifikovat jako vážený aritmetický průměr pomocí následující tabulky dat jednotlivých iterací rozdělených do 1000 intervalů. Tab. 1: Ušlý zisk, 40 dělníků, nulové zásoby – intervalové rozdělení
Interval 1 2 3 ... 999 1000
Minimum Maximum Frequency 0,00 41,41 498929 41,41 82,82 846 82,82 124,23 845 ... ... ... 41328,06 41369,47 101 41369,47 41410,88 95 Zdroj: Vlastní zpracování
Použitý software bohužel nedisponuje možností jemnější kategorizace, čímž vzniká určitý problém při počítání s prvním intervalem. Zatímco u ostatních intervalů lze vcelku klidně počítat s průměrnou hodnotou mezi minimem a maximem, u prvního intervalu dochází k určitému zkreslení. Hodnoty zde nejsou totiž ani vzdáleně rozdělené rovnoměrně – naprostá většina z nich je nulová (plné uspokojení
poptávky). Nabízí se tedy dvě možnosti – počítat s průměrnou hodnotou mezi minimem a maximem stejně jako u ostatních intervalů (čímž bude výsledná hodnota vyšší než reálná) nebo počítat s nulou (čímž bude výsledná hodnota nižší než reálná). V prvním případě dostáváme průměrný denní ušlý zisk 7280,241 Kč, ve druhém potom 7269,69 Kč. Skutečná hodnota tedy bude někde mezi těmito dvěma variantami; pro jednoduchost je dále uvedena pouze druhá varianta zaokrouhlená nahoru na celé koruny. Pro 40 dělníků jsou tedy celkové denní náklady (dané osobními náklady a ušlým ziskem) rovny 40 * 1000 + 7270 = 47270 Kč. Stejným způsobem lze výpočet provést pro 41, 42 až 48 dělníků. Není ovšem třeba pokračovat tak dlouho, neboť tendence je zřejmá již brzy. Tabulka 2 obsahuje jednotlivé počty dělníků a vypočtené náklady na základě simulace s 1 000 000 iterací. Tab. 2: Ušlý zisk a celkové náklady, variabilní počet dělníků, nulové zásoby
Počet dělníků 40 41 42 43
Osobní náklady v Kč 40000 41000 42000 43000
Ušlý zisk v Kč 7270 3055 918 183
Celkové náklady v Kč 47270 44055 42918 43183 Zdroj: Vlastní zpracování
Z tabulky 2 je patrné, že při nastavených podmínkách se jako optimální jeví 42 dělníků – při této úrovni jsou celkové náklady minimální. Není třeba ve výpočtu pokračovat pro více dělníků, neboť je zřejmé, že další snížení ušlého zisku není schopno vykompenzovat příslušné zvýšení osobních nákladů. Pomocí Monte Carlo simulace lze tedy velmi snadno kvantifikovat přínosy dalších dělníků a porovnat je se souvisejícími náklady. .
2.2
VARIANTA SE ZMETKOVITOSTÍ STROJŮ
Doposud jsme předpokládali, že se na výrobě podílí pouze lidé a nikoliv stroje. Postupně je možné tento velmi zjednodušený model zpřesňovat a přibližovat realitě. Uvažujme teď, že každý dělník pracuje na svém stroji a že má daný stroj určitou zmetkovitost. Tu lze opět vyjádřit mnoha různorodými způsoby, relativně či absolutně, deterministicky či stochasticky. Předpokládejme následující vyjádření zmetkovitosti stroje: Počet vyrobených zmetků na jednom stroji za den = náhodná veličina s Poissonovým rozdělením se střední hodnotou 2 kusy. Tento faktor lze opět snadno zahrnout do všech tří variant výpočtů. Počítáme-li s prostými průměry, pak lze jednoduše odečíst počet vyrobených zmetků od počtu vyrobených finálních výrobků. Počet dělníků je pak roven 2000 / ( 50 – 2 ) = 42. Podobně je možné uvažovat 5 zmetků (jako 95% kvantil příslušného rozdělení) pro výpočet počtu dělníků 2164 / ( 46 – 5 ) = 53. V Monte Carlo simulaci se pak změna projeví pomocí dalších více než 40 proměnných – jedna proměnná pro každý uvažovaný stroj. Každá z nich pro svůj příslušný stroj vygeneruje počet zmetků v souladu se zadaným rozdělením. Odečtením od vygenerovaného počtu vyrobených výrobků příslušného dělníka pak vzniká velikost produkce bez vady. Tabulka 3 plní stejnou funkci jako tabulka 2, tentokrát ovšem s uvážením zmetkovitosti (1 000 000 iterací). Tab. 3: Ušlý zisk a celkové náklady, variabilní počet dělníků, nulové zásoby, zmetkovitost
Počet dělníků 42 43 44 45
Osobní náklady v Kč 42000 43000 44000 45000
Ušlý zisk v Kč 5716 2282 658 131
Celkové náklady v Kč 47716 45282 44658 45131 Zdroj: Vlastní zpracování
Opět je patrné, že optimální počet dělníků se pohybuje mezi průměrným odhadem a odhadem daným snahou zaručit určitou míru jistoty. Opět se také ukazuje, že od určité chvíle, konkrétně 44 dělníků, nemá další snižování ušlého zisku z ekonomického pohledu smysl.
2.3
VARIANTA S DRŽENÍM ZÁSOB
Kritickým předpokladem modelu do této chvíle bylo, že společnost nedrží žádné zásoby. Tedy v praxi zastaví výrobu tehdy, jestliže naplní poptávku pro daný den. Uvažujme teď, že společnost drží zásoby neomezené (s nulovými náklady na skladování). Zmetkovitost v této variantě není uvažována. Monte Carlo simulaci je třeba výrazně pozměnit. Doposud totiž stačilo sledovat jeden den, což pro variantu s držením zásob není dostačující. Zde se začíná objevovat jediné omezení těchto simulací – čas. Jestliže zatím obsahovala simulace více než 40 proměnných pro dělníky a více než 40 proměnných pro stroje plus jednu proměnnou pro poptávku, pak každý sledovaný den zvyšuje počet nutných proměnných o více než 80. Tedy pro sledování celého měsíce by bylo zapotřebí přes 2400 proměnných. Délka takové simulace už se ovšem měří v desítkách minut až hodinách v závislosti na použitém hardware a software. Z tohoto důvodu je potřeba učinit v simulaci několik změn. Vzhledem k zadání je možné nahradit proměnné generující zvlášť hodnoty pro každého dělníka jednou proměnnou s normálním rozdělením dle Lindebergovo-Lévyho věty o součtu náhodných veličin. To je ovšem možné jen při homogenitě dělníků, kdy každý pracuje stejně. Při přesnější simulaci, která by každému dělníku přidělovala unikátní pracovní nasazení, by tento postup možný nebyl. Simulace je dále pozměněna tak, že případný přebytek výroby nad denní poptávkou je převeden do dalšího dne a přičten k vyrobenému množství. Pro období 30 dnů je opět použito 1 000 000 iterací. Tabulka 4 ukazuje výsledky simulace podobně jako předchozí tabulky, tentokrát jsou ovšem hodnoty získány jako prostý denní průměr z celkových 30 dnů simulace. Tab. 4: Ušlý zisk a celkové náklady, variabilní počet dělníků, neomezené zásoby, 30 dní
Počet dělníků 40 41 42
Denní osobní náklady v Kč 40000 41000 42000
Denní ušlý zisk v Kč 2525 305 53
Denní celkové náklady v Kč 42525 41305 42053 Zdroj: Vlastní zpracování
V případě možnosti držení zásob se jako optimální tedy jeví 41 dělníků. To ovšem za předpokladu, že skladování zásob nic nestojí. Pokud model dále zkomplikujeme náklady na držení zásob o velikosti 1 Kč na kus na den, dostáváme výsledky dané tabulkou 5. Tab. 5: Ušlý zisk a celkové náklady, variabilní počet dělníků, náklady na zásoby, 30 dní
Počet dělníků 40 41 42
Denní osobní náklady v Kč 40000 41000 42000
Denní ušlý zisk v Kč 2525 305 53
Denní náklady skladování v Kč 234 814 1554
Denní celkové náklady v Kč 42759 42119 43607 Zdroj: Vlastní zpracování
Při rostoucím počtu dělníků vykazují denní náklady na skladování také rostoucí tendenci. I v tomto případě je optimální počet pracovníků 41, rozdíl v nákladech už ale není tak velký. Model by bylo možné dále zpřesňovat a přibližovat realitě, zavést sezónnost poptávky nebo vkládat nové proměnné a sledovat jejich vliv. Bylo by také možné optimalizovat více kritérií, nejen počet dělníků; lze také pracovat s funkčností strojů popsanou Markovovými řetězci. Stejně tak by bylo možné analyzovat různé složitější scénáře a porovnávat je mezi sebou. Složitost je omezena pouze časem potřebným k proběhnutí simulace.
ZÁVĚR Monte Carlo simulace umožňují intuitivně optimalizovat procesy komukoliv, kdo běžně pracuje s kancelářským softwarem, aniž by musel ovládat složité optimalizační metody či ještě složitější matematický aparát. Matematické znalosti zůstávají důležité pro správnou identifikaci rozdělení náhodných veličin, respektive pro kontrolu programem navržených rozdělení, a správnou interpretaci výsledků. Pro samotný výpočet jich ovšem díky Monte Carlo simulacím není potřeba. Simulace poskytují výstupy uvažující riziko a snadno je lze aplikovat na již existující data. Není třeba strachovat se o řešitelnost problému, neboť jedinými relevantními omezeními jsou čas a parametry software a
hardware. S postupujícím technologickým vývojem lze očekávat radikální snížení času potřebného pro průběh simulací a relaxaci implicitních omezení software. Pak již nebude nic bránit vytváření a optimalizaci modelů přesně popisujících fungování organizace. Příspěvek vznikl v rámci projektu SGS-2012-028 Výzkum vlivu sledování, hodnocení a predikce vývoje organizačních procesů na celkovou výkonnost.
LITERATURA [1] [2] [3] [4] [5]
@RISK: Risk Analysis Software using Monte Carlo Simulation for Excel [online]. 2012. [cit. 201209-29]. Dostupné z:
. Crystal Ball Decision Optimizer [online]. 2012. [cit. 2012-09-29]. Dostupné z:
. DUNN, W., L., SHULTIS, J., K. Exploring Monte Carlo Methods. 1. vyd. Oxford: Elsevier, 2011. ISBN 978-0-444-51575-9. KALOS, M., H., WHITLOCK, P., A. Monte Carlo Methods. 2. vyd. Weinheim: Wiley-VCH Verlag GmbH & Co. KgaA, 2008. ISBN 978-3-527-40760-6. ULAM, S., M. Adventures of a Mathematician. Berkeley: University of California Press, 1991. ISBN 978-0-520-07154-4
Adresa autora: Bc. Radim Špicar Západočeská univerzita v Plzni Fakulta ekonomická Katedra podnikové ekonomiky a managementu E-mail: [email protected]
MONTE CARLO SIMULATION IN PROCESS OPTIMIZATION Abstract This article serves as an introduction to Monte Carlo simulation and highlights it as an easy-to-use method when compared to standard methods based on extensive mathematical knowledge. The first half of this paper focuses on description of Monte Carlo simulation and establishing its advantages, while the second half applies this method to a simplified but relevant problem. Oracle Crystal Ball and Microsoft Excel 2010 software were used to compute all presented simulations. Key words Simulation, Monte Carlo, Process optimization, Modelling JEL Classification C53, M11