Difference between revisions of "User:Isar00"

From Simulace.info
Jump to: navigation, search
(Model)
(Model)
Line 26: Line 26:
  
 
Proměnné:
 
Proměnné:
 +
 
• '''myT''': TIME BASE( 0 , 1 ).
 
• '''myT''': TIME BASE( 0 , 1 ).
  

Revision as of 16:37, 27 June 2025

Úvodní odstavec

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 se přišlo na to, že vodu si 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 každý návštěvník si dá vodní dýmku, nicméně používám konstantu 0.95 k připouštění volatility, že si až 5% klientů vodní dýmku nedá.

inPreparationWater: Počet porcí vody, které jsou aktuálně ve fázi přípravy. Počítá se jako arrivedClients * 0.5, jelikož na základě konzultace s obsluhou se přišlo na to, že vodu si dává každý druhý klient.

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čí cca prodejní cenu jednotlivých položek.

moneyOut: Výdaje čajovny na suroviny, mzdy a další provozní náklady. Počítá se jako herbs + charcoalBriquettes + tobacco + wage + lemon, což zohledňuje výdaje na tyto jednotlivé suroviny a také na práci.

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ém krok (tj. za každých 15 minut). Hodinová mzda obsluhy činí 200 Kč čistého zisku. Při otevření tabulky po spuštění simulace s nastavením proměnné employees = 2 se v tabulce pro wage zobrazí 100, jelikož 15 minut provozu se 2 zaměstnanci stojí celkově 100 Kč z hlediska platu.

Ri model.png

Výsledky

Závěr

Kód