User:Isar00
Úvodní odstavec
Contents
Definice problému
Simulace provozu čajovny s vodními dýmkami slouží k analýze vytíženosti podniku v průběhu dne a identifikaci klíčových bodů, kde může docházet k problémům, jako je nedostatek zaměstnanců, surovin, nebo volných míst k sezení, a nebo třeba také optimalizace nákladů a tedy zvětšení zisku. Čajovna je v provozu každý den mezi 16:00 až 01:00, má 40 míst k sezení a 1-3 zaměstnance co jsou momentálně v čajovně. Nabízí vodní dýmky, čaj a vodu. Globálním cílem simulace je tedy ověřit, zda jsou stávající provozní parametry dostačující a kde by bylo vhodné je optimalizovat.
Metoda
Prvně, během cca 10 návštěv podniku vznikla určitá představa o chodu podniku založená na pozorování chování návštěvníků a hlavně diskuzi s personálem, díky čemuž se podařilo odhalit sezonalitu denního i týdenního charakteru. Ukázalo se, že špičky návštěvy spadají do časového okna mezi 19:00 a 23:00. Zároveň platí, že se čajovna navštěvuje nejvíce během pátků a sobot - což dává smysl, jelikož od pondělí do pátečního večera průměrný návštěvník podniku takového charakteru pracuje a v neděli se opět chystá do práce.
Simulace je provedena pomocí systému Vensim. Po namáhavých pokusech o zprovoznění simulace s krokem o 1 minutě, která bohužel ve Vensimu stabilně padala, bylo rozhodnuto modelovat klíčové proměnné modelovány diskrétně s krokem 15 minut - pro každý datový bod z časové řady se tedy jedná o akumulaci měřené charakteristiky během následujících 15 minut. Vstupní data - primárně tedy proměnná arrivals pro příchody klientů - byla agregována z odhadnutých dat, která jsem simuloval v Pythonu se znalostí nabytých během návštěvy podniku. Během tvorby dat v Pythonu byla zohledněna i již zmíněná sezonalita jak denní, tak týdenní. Simulace ve Vensimu předpokládá, že každý klient setrvá v čajovně přibližně 120 minut, je to tedy zafixováno jako konstanta.
Data vytvořená v Pythonu jsou oindexovaná od 1 do 3780. Logika je následující: čajovna pracuje 7 dní v týdnu, jeden její pracovní den trvá 9 hodin, což je 540 minut. Tedy za jeden týden se odpracuje 3780 minut.
Ve Vensimu byla tato data pro proměnnou arrivals zaintegrována pomocí lookup funkce s dvojicemi (čas, počet příchodů) a v modelu se sleduje zpoždění mezi příchodem a odchodem. Tabák, uhlí, citrony, bylinky a peníze jsou modelovány jako stavy, do kterých vstupují a vystupují odpovídající toky podle spotřeby na jednoho klienta. Dále se zohledňuje kolik během každého kroku simulace podnik vydělá (moneyIn) a kolik utratí (moneyOut).
Model
Model má následující nastavení:
• Units for Time = Minute
• INITIAL TIME = 0 (první minuta pracovního týdne)
• FINAL TIME = 3780 (poslední pracovní minuta pracovního týdne)
• TIME STEP = 15 (data o evidenci příchodů návštěvníků, jak bylo psáno výše, jsou agregovaná po 15 minutových blocích)
Proměnné:
• myT: TIME BASE( 0 , 1 ).
• arrivals: Počet příchozích klientů v daném časovém kroku (tj. každých 15 minut).
• arrivedClients: Počet klientů, kteří do čajovny dorazili v daném časovém kroku – hodnota se bere z arrivals pomocí arrivals(myT).
• departures: Počet klientů, kteří čajovnu v daném intervalu opouštějí (fixně zadaná časové zpoždění o 120 minut po příchodu – vycházím z toho, co bylo popsáno v sekci Metoda). Počítá se jako DELAY FIXED(arrivals(myT), 120, 0).
• currentClients: Aktuální počet klientů přítomných v čajovně (vypočítává se jako arrivedClients minus departures). Počítá se jako INTEG((arrivals(myT) - departures)/15, 0).
• occupiedSeats: Počet obsazených míst v čajovně, daný aktuálním počtem klientů a kapacitou.
• neededWorkloadUnits: Celková potřebná pracovní kapacita (počet jednotek práce potřebných pro obsluhu všech klientů).
• deltaWorkload: Rozdíl mezi potřebnou pracovní kapacitou a skutečně dostupnou prací zaměstnanců; ukazuje, jestli je obsluha přetížena.
• inPreparationTeas: Počet čajů, které jsou právě ve fázi přípravy. Počítá se jako arrivedClients * 0.5, jelikož na základě konzultace s obsluhou si vodu dává každý druhý klient.
• inPreparationHookas: Počet vodních dýmek (hookah), které jsou právě připravovány. Počítá se jako arrivedClients * 0.95. Empiricky bylo vypozorováno, že téměř každý návštěvník si dá vodní dýmku, používám konstantu 0.95 pro případné odchylky.
• inPreparationWater: Počet porcí vody, které jsou aktuálně ve fázi přípravy. Počítá se jako arrivedClients * 0.5, nebo-li každý druhý zákazník si objedná karafu vody.
• moneyIn: Celkové tržby (příjmy) za objednávky klientů v daném intervalu. Počítáno jako 400 * inPreparationHookas + 200 * inPreparationTeas + 80 * inPreparationWater, kde jednotlivé konstanty značí prodejní cenu položek.
• moneyOut: Výdaje čajovny na suroviny, mzdy a další provozní náklady. Počítá se jako herbs + charcoalBriquettes + tobacco + wage + lemon.
• herbs: Náklady za čajovou směs pro čaj v daném časovém kroku (tj. každých 15 minut).
• charcoalBriquettes: Náklady za uhlí pro vodní dýmku v daném časovém kroku (tj. každých 15 minut).
• tobacco: Náklady za tabák v daném časovém kroku (tj. každých 15 minut).
• lemon: Náklady za citrón v daném časovém kroku (tj. každých 15 minut).
• employees: Počet zaměstnanců na směně. Typicky se rovná 2.
• wage: Výše vyplácené mzdy zaměstnancům za daný časový krok (za každých 15 minut). Hodinová mzda je 200 Kč čistého na zaměstnance.
• herbsAveragePrice: Průměrná cena bylinek na jednu porci čaje. Činí 50 korun.
• charcoalBriquetteAveragePrice: Průměrná cena jednoho uhlíku/brikety. Činí 3 koruny per briketa.
• charcoalBriquettePerHookah: Počet uhlíků/briket potřebných na jednu vodní dýmku během celé doby pobytu klienta. Typicky 12 briket.
• tobaccoGramAveragePrice: Průměrná cena gramu tabáku. Typicky 4 koruny.
• tobaccoGramPerHookah: Počet gramů tabáku na jednu vodní dýmku. Typicky 15 gramů.
• lemonAveragePrice: Průměrná cena jednoho citronu. Typicky 12 korun.
• lemonPerCarafe: Počet citronů potřebných na jednu karafu nápoje. Typicky 0.5, tedy půlka citrónu.
Výsledky
Simulace spuštěná s výše uvedenými proměnnými nám říká že náklady čajovny za pracovní týden činí cca 100,000 Korun, její zisky cca 300,000 korun. Tedy marže vychází na 200,000 tisíc. Nicméně, simulace nezohledňovala spoustu dalších proměnných jako náklady za nájem, vodu, elektřinu aj.
Empiricky se ukázalo, že s provozem čajovny si vystačí i 1 člověk, nicméně jich i tak běžně bývá na směně 2, tedy tato hodnota byla ponechána pro simulaci a z hlediska doporučení pro čajovnu asi není co vytknout - marže je optimální pro to, aby si mohli dovolit mít 2 lidi každý den.
Proměnná tobaccoGramsPerHookah je nastavená na 15, jelikož každá vodnice potřebuje cca 15 gramů tabáku. Zkusil jsem spustit simulaci s 10 gramy a ukázalo se, že by se celkové náklady snížily o cca 20,000 Kč. Tedy zde by doporučením pro provozovatele mohlo být zkusit snížit množství tabáku a sledovat, zda si toho někdo všimne. Pakliže to absolutní většině vadit nebude, mohl by na tom měsíčně ušetřit cca 80,000 korun. Pokud by se mu navíc povedlo sehnat tabák za 3 koruny za gram (momentálně gram tabáku ho stojí 4 koruny - viz. proměnná tobaccoGramAveragePrice), ušetřil by si dalších 6 tisíc korun za týden, a tedy v součtu za měsíc více jak 20,000 korun. Což znamená, že v součtu by si takovými manipulacemi s tabákem mohl snížit náklady o cca 100,000 korun měsíčně.
Pokud bude provozovatel do každé karafy s vodou přidávat místo půlky citrónu (lemonPerCarafe) jednu pětinu, pak ušetří cca 1,000 Kč týdně. Pokud tam bude přidávat jen desetinu, tak dokonce celkově 1,500 korun týdně. Tato optimalizace by potenciálně vedla k dalším 4,000 - 6,000 ušetřeným korunám co měsíc.
Dále, kdyby herbsAveragePrice kleslo z 50 korun co čaj na 40 korun co čaj, tak by výdaje za týden šly dolů až o cca 3,000 korun. To znamená, že měsíčně by se dalo ušetřit až 12,000 korun. Pokud by levnější čaj nešel sehnat, mohli by začít sypat do čaje 80% stávajícího objemu čajového mixu a tím by bylo dosaženo optimálních výdajů vedoucích ke zmíněnému šetření peněz.
Závěr
Pomocí na první pohled nepatrných, nicméně perzistentních manipulací s tím, kolik tabáku, čajových mixů a citrónu provozovatel spotřebuje, může dosáhnout toho, že ušetří až 120,000 tisíc nákladů měsíčně.

