Difference between revisions of "Optimalizace počtu výčapov piva na štadióne (Simprocess)"
m (→Model) |
m (→Model) |
||
(15 intermediate revisions by the same user not shown) | |||
Line 13: | Line 13: | ||
Na hokejových alebo futbalových zápasoch sa často stáva, že človek musí čakať na pivo v dlhom rade celú večnosť. Navyše, ak sa poblízku štadióna nachádza podnik, v ktorom tiež čapujú pivo, ľudia sa mnohokrát rozhodnú ísť si radšej načapovať pivo tam, pretože je to pre nich mnohokrát výhodnejšie, najmä z finančného hľadiska. Štadión tým pádom stráca potencionálny zisk a naopak, pri malom počte ľudí zbytočne prepláca pracujúcich výčapníkov. | Na hokejových alebo futbalových zápasoch sa často stáva, že človek musí čakať na pivo v dlhom rade celú večnosť. Navyše, ak sa poblízku štadióna nachádza podnik, v ktorom tiež čapujú pivo, ľudia sa mnohokrát rozhodnú ísť si radšej načapovať pivo tam, pretože je to pre nich mnohokrát výhodnejšie, najmä z finančného hľadiska. Štadión tým pádom stráca potencionálny zisk a naopak, pri malom počte ľudí zbytočne prepláca pracujúcich výčapníkov. | ||
+ | |||
+ | Divák vie, že na štadióne trvá čapovanie piva priemerne 2 minúty. Taktiež má zmeranú cestu do krčmy, ktorá trvá tam a späť 10 minút ( + v krčme čapujú pivo v priemere 3 minúty ). Ak je teda v rade na 1 výčapníka priemerne viac ako 6 ľudí, oplatí sa mu zájsť si po pivo do krčmy, pretože ušetrí minútu času. Ďalším faktorom by mohla byť cena piva, čo však v tejto simulácií nie je zakomponované. | ||
== Cíl simulace == | == Cíl simulace == | ||
Line 59: | Line 61: | ||
+ | {| class="wikitable" | ||
+ | |+ align="top" | ''' Popis použitých nástrojov - DELAY ''' | ||
+ | !| Názov || Názov nástroja || Typ distribúcie || Popis || Expressions | ||
+ | |- | ||
+ | | '''Kupovanie lístkov''' || Delay || Exp(2.0)/Minutes || akcia entity kupovania lístkov, priemerná doba predaja sa nelíši podľa druhu fanúšika, takže pani pri okienku vybaví priemerna za 2 minútu 1 diváka || X | ||
+ | |- | ||
+ | | '''Čapovanie piva na štadióne''' || Delay || Exp(2.0)/Minutes || priemerná doba načapovania a predania jedného piva na štadióne || | ||
+ | * <i>Accept Entity</i> : inkrementuje o 1 globálnu premenu modelu PeopleInQueue použitú pri rozhodvaní, kde si dá pivo | ||
+ | * <i>Release Entity</i> : dekrementuje o 1 globálnu premenu modelu PeopleInQueue a inkrementuje pomocnú premennú BeerSold | ||
+ | |- | ||
+ | | '''Čapovanie piva v krčme''' || Delay || Exp(3.0)/Minutes || priemerná doba načapovania a predania jedného piva v krčme trvá o minútu dlhšie ako na štadióne || | ||
+ | * <i>Release Entity</i> : dekrementuje o 1 pomocnú premennú BeerLost | ||
+ | |- | ||
+ | | '''Sledovanie zápasu pivára''' || Delay || Tri(25,40,60)/Minutes || pivár si dá pivo v priemere každých 40 minút, avšak niekedy si ide po ďalšie pivo skôr, už po 25 minutách, no na druhej strane viac ako 60 minút nevydrží určite || X | ||
+ | |- | ||
+ | | '''Sledovanie zápasu fanúšika''' || Delay || Tri(40,60,80)/Minutes || divák si dá pivo v priemere každých 60 minút, avšak niekedy si ide po ďalšie pivo skôr, po 40 minutách, no na druhej strane viac ako 80 minút nevydrží určite || X | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" | ||
+ | |+ align="top" | ''' Popis použitých nástrojov - BRANCH ''' | ||
+ | !| Názov || Názov nástroja || Typ distribúcie || Popis || Expressions | ||
+ | |- | ||
+ | | '''Dám si pivo?''' || Branch || Entity type || prvá križovatka typu <i>Entity type</i>, čo znamená, že pre každý vychádzajúci konektor ( <i>Connector</i>) musí byť zvolený typ entity, obyčajný fanúšik si po príchode dá pivo s 0% pravdepodobnosťou, zatiaľ čo pivár stále váha || X | ||
+ | |- | ||
+ | | '''Rozhodujem sa...''' || Branch|| Probability || <i>Beer Guy</i> si buď dá pivo na 40%, alebo sa rozhodne ísť sa usadiť na miesto || X | ||
+ | |- | ||
+ | | '''Kde si dám pivo?''' || Branch|| Attribute || bez ohľadu na typ entity sa divák rozhoduje, či si dá pivo na štadióne, alebo si pôjde dať pivo do vedľajšieho pivovaru (výhoda krčmového pivovaru je popísaná v úvode) || X | ||
+ | |- | ||
+ | | '''Oplatí sa mi ešte vracať?''' || Branch || Priority || divák sa rozhodne, či sa ešte vráti na miesto, alebo už opustí štadión || | ||
+ | *Release entity : podmienka porovnania súčasného stavu simulácie s časom 19:00, čo znamená že ak divákovi načapujú pivo po 19:00, na zápas sa už nevráti a ide domov | ||
+ | |- | ||
+ | | '''Idem domov?''' || Branch || Priority || divák sa rozhoduje, či si ešte dá pivo, alebo už opustí štadión || | ||
+ | *Release entity : podmienka porovnania súčasného stavu simulácie s časom 19:05, čo znamená, že ak divák výjde na chodbu po 19:05, urobí tak pretože chce opustiť štadión a na pivo už neide, keďže zápas sa konči o pár minút | ||
+ | |- | ||
+ | | '''Oplatí sa mi ešte vracať?''' || Branch || Priority || divák sa rozhodne, či sa ešte vráti na miesto, alebo už opustí štadión || | ||
+ | *Release entity : podmienka porovnania súčasného stavu simulácie s časom 19:00, čo znamená že ak divákovi načapujú pivo po 19:00, na zápas sa už nevráti a ide domov | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" | ||
+ | |+ align="top" | ''' Popis použitých nástrojov - CONNECTOR ''' | ||
+ | !| Názov || Názov nástroja || Typ distribúcie || Popis | ||
+ | |- | ||
+ | | '''Zatiaľ nie''' || Connector || Exp(4.0)/Minutes|| odpoveď určená pre entitu <i>Fan</i>, ktorej cestovanie <i>(Travel Duration)</i> trvá priemerne 4 minúty | ||
+ | |- | ||
+ | | '''Som pivár, obyčajný pivár''' || Connector || X || odpoveď určená pre entitu <i>Beer Guy</i> na otázku z Branche '''Dám si pivo?''', slúži iba ako pomocný konektor do ďalšej Branche | ||
+ | |- | ||
+ | | '''Jo!''' || Connector || Exp(5.0)/Minutes || kladná odpoveď na otázku, či si dá pivár pivo hneď po príchode na štadión (pravdepodobnosť 40%) | ||
+ | |- | ||
+ | | '''Nedám''' || Connector || Exp(4.0)/Minutes || negatívna odpoveď určená na otázku, či si dá pivár pivo hneď po príchode na štadión (pravdepodobnosť 60%) | ||
+ | |- | ||
+ | | '''Dám si ho tu!''' || Connector || Exp(30.0)/Seconds || divák vyhodnotil (odpoveď v Branchi '''Kde si dám pivo?'''), že sa mu oplatí počkať si v rade na pivo na štadióne | ||
+ | |- | ||
+ | | '''Idem do krčmy''' || Connector || Exp(5.0)/Minutes || divák vyhodnotil (odpoveď v Branchi '''Kde si dám pivo?'''), že sa mu oplatí ísť na pivo do konkurenčnej krčmy, ktorá je vzdialená priemerne 5 minút chôdze | ||
+ | |- | ||
+ | | '''Odchádzam''' || Connector || X || divákovi sa s načapovaným pivom neoplatí vracať po 19:00 (odpoveď v Branchi '''Oplatí sa mi ešte vracať?''') | ||
+ | |- | ||
+ | | '''Idem domov''' || Connector || X || divák ktorý vyšiel na chodbu po 19:00 už neide na pivo, ale domov (odpoveď v Branchi '''Idem domov?''') | ||
+ | |- | ||
+ | | '''Jedno ešte stíham :)''' || Connector || Exp(3.0)/Minutes || divák ktorý sa dostane na chodbu pred 19:00, si ide dať určite pivo (odpoveď v Branchi '''Idem domov?''') | ||
+ | |- | ||
+ | |} | ||
− | + | =Výsledky= | |
− | |||
− | |||
− | + | Výsledky ukazujú 4 rôzne simulácie, ktoré boli spustené s nasledujúcimi nastaveniami | |
− | *''' | + | * ''' Počet píp : 40 ''' |
+ | * ''' Max ľudí vo fronte : 40 ''' | ||
− | + | [[File:40accepted40pipes.png]] | |
− | + | ---- | |
− | *''' | + | * ''' Počet píp : 30 ''' |
+ | * ''' Max ľudí vo fronte : 200 ''' | ||
+ | [[File:200accepted30pipes.png]] | ||
− | + | ---- | |
− | *''' | + | * ''' Počet píp : 30 ''' |
+ | * ''' Max ľudí vo fronte : 500 ''' | ||
+ | [[File:500accepted30pipes.png]] | ||
− | + | ---- | |
− | *''' | + | * ''' Počet píp : 60 ''' |
+ | * ''' Max ľudí vo fronte : 420 ''' | ||
+ | [[File:420accepted60pipes.png]] | ||
− | *''' | + | * ''' Počet píp : 55 ''' |
+ | * ''' Max ľudí vo fronte : 385''' | ||
+ | [[File:385accepted55pipes.png]] | ||
− | + | ---- | |
− | + | Ako môžeme vidieť, pri zmene píp a maximálneho počtu ľudí vo fronte ( čo v reále znamená že človeku sa z časového hľadiska oplatí ísť do krčmy, ak počet čakajúcich ľudí vo fronte je vyšší ako '''Max ľudí vo fronte''' / '''Počet píp''') nám stále uniká dosť veľký počet pív. Umelé zvyšovanie maximálneho počtu čakajúcich ľudí nám nepomôže, aj keď simulácia naozaj počíta s extrémnym prípadom, kedy by každý na štadióne vypil viac ako 1 pivo za zápas. Zároveň nezahrňuje ani možnosť objednávať viac pív naraz, čo tiež nie je veľmi praktické. Tento model teda obsahuje možnosti rozšírenia, no takáto profesionálna simulácia by si vyžiadala podstatne viac času. Pri súčasnom nastavení všetkých podmienok a experimentovaní iba s 2 parametrami je pre štadión optimálne riešenie, ak by mal aspoň 53 píp, kedy by sa ľuďom z časového hľadiska takmer nikdy neoplatilo ísť si po pivo do krčmy. | |
− | |||
=Závěr= | =Závěr= |
Latest revision as of 18:35, 17 June 2019
Contents
Zadání
Název simulace: Simulace optímálneho počtu výčapov piva na štadióne
Autor: Bc. Dominik Turák, turd01
Typ modelu: Diskrétni simulace
Modelovací nástroj: SIMPROCESS
Popis Modelu
Na hokejových alebo futbalových zápasoch sa často stáva, že človek musí čakať na pivo v dlhom rade celú večnosť. Navyše, ak sa poblízku štadióna nachádza podnik, v ktorom tiež čapujú pivo, ľudia sa mnohokrát rozhodnú ísť si radšej načapovať pivo tam, pretože je to pre nich mnohokrát výhodnejšie, najmä z finančného hľadiska. Štadión tým pádom stráca potencionálny zisk a naopak, pri malom počte ľudí zbytočne prepláca pracujúcich výčapníkov.
Divák vie, že na štadióne trvá čapovanie piva priemerne 2 minúty. Taktiež má zmeranú cestu do krčmy, ktorá trvá tam a späť 10 minút ( + v krčme čapujú pivo v priemere 3 minúty ). Ak je teda v rade na 1 výčapníka priemerne viac ako 6 ľudí, oplatí sa mu zájsť si po pivo do krčmy, pretože ušetrí minútu času. Ďalším faktorom by mohla byť cena piva, čo však v tejto simulácií nie je zakomponované.
Cíl simulace
Nájsť otpimálny počet výčapov prihľiadnúc na počet ľudí na štadióne tak, aby sa minimalizovali straty od nedočkavých ľudí, ktorí si radšej zvolia konkurenčný výčap, avšak zachovať počet píp na čo najnižšom možnom čísle.
Metóda
Nasledujúce tabuľky približuje chovanie modelu a opisujú význam vybraných vstupných dát.
Názov entity | Názov schedule | Typ distribúcie | jednotka času | start/end |
---|---|---|---|---|
Fan | First real fans | Poi(20.0) | 1 minúta | 16:00 - 16:30 |
Fan | Normal real fans | Poi(30.0) | 1 minúta | 16:30 - 17:00 |
Beer guy | First Beer guys | Poi(15.0) | 1 minúta | 16:00 - 16:30 |
Beer guy | Normal Beer fans | Poi(10.0) | 1 minúta | 16:30 - 17:00 |
Pri generovaní fanúšikov som použil Poison Distribúciu, keďže entity sa generujú v krátkom časovom intervale, čo najlepšie vyhovuje mojmu prípadu, kedy sa snažím čo najrealistickejšie vystihnúť príchod fanúšikov na štadión.
Názov entity | Pravdepodobnosť zakúpenia piva ihneď po príchode | Dlžka sledovania zápasu do dalšieho piva (v minútach) |
---|---|---|
Fan | 0% | Tri(40,55,80) |
Beer guy | 40% | Tri(30,40,60) |
Hlavné rozdiely medzi pivármi a obyčajnými fanúšikmi je túžba po pive. Zatiaľ čo obyčajný fanúšik si nikdy pri vstupe nedá pivo, u pivára je až 40% šanca, že sa tak rozhodne. Na delay označujúci sledovanie zápasu som tentokrát použil Triangulovú distribúciu, čo je v tomto prípade lepšie ako Exponenciálna distribúcia, ktorá by tak dobre nevystihovala realitu, pretože v momentálnom modeli každí dostane chuť na pivo niekedy inokedy, a nie takmer všetci ľudia naraz ( v poradí ako prichádzali na štadión ) , ako by to bolo pri Exponenciálnej distribúcii.
Model
Hlavná obrazovka obsahuje hlavne Dynamic Labels, ktoré zjednodušujú pozorovanie simulácie. Generovanie fanúšika(Generate) je proces vysvetlený v tabuľke vyššie , Užívanie si zápasu(Process) je hlavný proces obsahujúci všetko potrebné na simulovanie hokejového zápasu a požiadaviek na pivo a Odchod domov(Dispose) simuluje odchod entity zo štadióna. Celá simulácia simuluje dátum 12.12.2018 s časom trvania 16:00 - 19:30 a približný výskyt divákov na zápase prvej slovenskej ligy v meste Prešov.
Názov | Názov nástroja | Typ distribúcie | Popis | Expressions |
---|---|---|---|---|
Kupovanie lístkov | Delay | Exp(2.0)/Minutes | akcia entity kupovania lístkov, priemerná doba predaja sa nelíši podľa druhu fanúšika, takže pani pri okienku vybaví priemerna za 2 minútu 1 diváka | X |
Čapovanie piva na štadióne | Delay | Exp(2.0)/Minutes | priemerná doba načapovania a predania jedného piva na štadióne |
|
Čapovanie piva v krčme | Delay | Exp(3.0)/Minutes | priemerná doba načapovania a predania jedného piva v krčme trvá o minútu dlhšie ako na štadióne |
|
Sledovanie zápasu pivára | Delay | Tri(25,40,60)/Minutes | pivár si dá pivo v priemere každých 40 minút, avšak niekedy si ide po ďalšie pivo skôr, už po 25 minutách, no na druhej strane viac ako 60 minút nevydrží určite | X |
Sledovanie zápasu fanúšika | Delay | Tri(40,60,80)/Minutes | divák si dá pivo v priemere každých 60 minút, avšak niekedy si ide po ďalšie pivo skôr, po 40 minutách, no na druhej strane viac ako 80 minút nevydrží určite | X |
Názov | Názov nástroja | Typ distribúcie | Popis | Expressions |
---|---|---|---|---|
Dám si pivo? | Branch | Entity type | prvá križovatka typu Entity type, čo znamená, že pre každý vychádzajúci konektor ( Connector) musí byť zvolený typ entity, obyčajný fanúšik si po príchode dá pivo s 0% pravdepodobnosťou, zatiaľ čo pivár stále váha | X |
Rozhodujem sa... | Branch | Probability | Beer Guy si buď dá pivo na 40%, alebo sa rozhodne ísť sa usadiť na miesto | X |
Kde si dám pivo? | Branch | Attribute | bez ohľadu na typ entity sa divák rozhoduje, či si dá pivo na štadióne, alebo si pôjde dať pivo do vedľajšieho pivovaru (výhoda krčmového pivovaru je popísaná v úvode) | X |
Oplatí sa mi ešte vracať? | Branch | Priority | divák sa rozhodne, či sa ešte vráti na miesto, alebo už opustí štadión |
|
Idem domov? | Branch | Priority | divák sa rozhoduje, či si ešte dá pivo, alebo už opustí štadión |
|
Oplatí sa mi ešte vracať? | Branch | Priority | divák sa rozhodne, či sa ešte vráti na miesto, alebo už opustí štadión |
|
Názov | Názov nástroja | Typ distribúcie | Popis |
---|---|---|---|
Zatiaľ nie | Connector | Exp(4.0)/Minutes | odpoveď určená pre entitu Fan, ktorej cestovanie (Travel Duration) trvá priemerne 4 minúty |
Som pivár, obyčajný pivár | Connector | X | odpoveď určená pre entitu Beer Guy na otázku z Branche Dám si pivo?, slúži iba ako pomocný konektor do ďalšej Branche |
Jo! | Connector | Exp(5.0)/Minutes | kladná odpoveď na otázku, či si dá pivár pivo hneď po príchode na štadión (pravdepodobnosť 40%) |
Nedám | Connector | Exp(4.0)/Minutes | negatívna odpoveď určená na otázku, či si dá pivár pivo hneď po príchode na štadión (pravdepodobnosť 60%) |
Dám si ho tu! | Connector | Exp(30.0)/Seconds | divák vyhodnotil (odpoveď v Branchi Kde si dám pivo?), že sa mu oplatí počkať si v rade na pivo na štadióne |
Idem do krčmy | Connector | Exp(5.0)/Minutes | divák vyhodnotil (odpoveď v Branchi Kde si dám pivo?), že sa mu oplatí ísť na pivo do konkurenčnej krčmy, ktorá je vzdialená priemerne 5 minút chôdze |
Odchádzam | Connector | X | divákovi sa s načapovaným pivom neoplatí vracať po 19:00 (odpoveď v Branchi Oplatí sa mi ešte vracať?) |
Idem domov | Connector | X | divák ktorý vyšiel na chodbu po 19:00 už neide na pivo, ale domov (odpoveď v Branchi Idem domov?) |
Jedno ešte stíham :) | Connector | Exp(3.0)/Minutes | divák ktorý sa dostane na chodbu pred 19:00, si ide dať určite pivo (odpoveď v Branchi Idem domov?) |
Výsledky
Výsledky ukazujú 4 rôzne simulácie, ktoré boli spustené s nasledujúcimi nastaveniami
- Počet píp : 40
- Max ľudí vo fronte : 40
- Počet píp : 30
- Max ľudí vo fronte : 200
- Počet píp : 30
- Max ľudí vo fronte : 500
- Počet píp : 60
- Max ľudí vo fronte : 420
- Počet píp : 55
- Max ľudí vo fronte : 385
Ako môžeme vidieť, pri zmene píp a maximálneho počtu ľudí vo fronte ( čo v reále znamená že človeku sa z časového hľadiska oplatí ísť do krčmy, ak počet čakajúcich ľudí vo fronte je vyšší ako Max ľudí vo fronte / Počet píp) nám stále uniká dosť veľký počet pív. Umelé zvyšovanie maximálneho počtu čakajúcich ľudí nám nepomôže, aj keď simulácia naozaj počíta s extrémnym prípadom, kedy by každý na štadióne vypil viac ako 1 pivo za zápas. Zároveň nezahrňuje ani možnosť objednávať viac pív naraz, čo tiež nie je veľmi praktické. Tento model teda obsahuje možnosti rozšírenia, no takáto profesionálna simulácia by si vyžiadala podstatne viac času. Pri súčasnom nastavení všetkých podmienok a experimentovaní iba s 2 parametrami je pre štadión optimálne riešenie, ak by mal aspoň 53 píp, kedy by sa ľuďom z časového hľadiska takmer nikdy neoplatilo ísť si po pivo do krčmy.
Závěr
Simulácia by sa dala rozšíriť o množstvo ďalších rozhodnutí, ako je napríklad potreba ísť na WC alebo zahrnúť skutočnosť, že by si ľudia v bufere mohli kúpiť aj niečo iné ako pivo. Pri mojom nastavení ani 40 píp na čapovanie nestačilo na to, aby štadíón nestrácal zisky (čo sa týka predaného piva, výčapníci a ich hodinová mzda v modeli zatiaľ chýba tiež) z divákov, ktorí chcú pivo v rovnaký čas. Naopak, otpimalizáciu prihľiadnúc na tento fakt by som považoval nasadenie 20 píp, kde by ale pracovníci nemali takmer žiaden oddych. Som rád, že som si nakoniec vybral Simprocess, pretože tento nástroj môže byť v budúcnosti veľmi žiadaný.
Kód
File:HockeyMatchesBeersOptimalization.spm
Reference
http://simprocess.com/Documentation/Windows_Manuals/SIMPROCESS_Getting_Started_Manual.pdf http://simprocess.com/Documentation/SIMPROCESS_Expression_Demo_Models.pdf