Difference between revisions of "Fronty na občerstvení"

From Simulace.info
Jump to: navigation, search
(Model)
(Model)
Line 24: Line 24:
 
Pro realizaci bylo nakonec zvolen SIMPROCESS také z důvodu snažšího zpracování výstupů z velmi podrobných reportů.
 
Pro realizaci bylo nakonec zvolen SIMPROCESS také z důvodu snažšího zpracování výstupů z velmi podrobných reportů.
  
=Model=
+
=Model= [[File:simproc_screen.png|thumb|right|Popisek]]
Zrod - lidé se do modelu generují dle normálního rozdělení v intervalu počtu sekund: Nor(16.0,2.0,1)
+
'''Zrod''' - lidé se do modelu generují dle normálního rozdělení v intervalu počtu sekund: Nor(16.0,2.0,1)
Nervozita - určuje prahovou hodnotu, kdy pohár trpělivosti (žízně) účastníků fronty přeteče a rozhodnou se pro předběhnutí a nebo požádají někoho více vepředu aby jim koupil limonádu.
+
 
 +
'''Nervozita''' - určuje prahovou hodnotu, kdy pohár trpělivosti (žízně) účastníků fronty přeteče a rozhodnou se pro předběhnutí a nebo požádají někoho více vepředu aby jim koupil limonádu (předají mu peníze, dále tedy jen "předávající").
 
Počet entit Clovek který musí do brány přijít aby začala generovat předbíhající/prosící se řídí dle: Nor(50.0,20.0,1)
 
Počet entit Clovek který musí do brány přijít aby začala generovat předbíhající/prosící se řídí dle: Nor(50.0,20.0,1)
Dále je na bráně přidán výraz ''Expression'' spouštěný při události ''Accept Entity'':
+
 
 +
Dále je na bráně '''Nervozita''' přidán výraz ''Expression'' spouštěný při události ''Accept Entity''. Výraz upravuje chování brány tak, aby při větších frontách u pípy začala častěji vpouštět dávky předbíhajících a předávajících:
 
<pre>
 
<pre>
 
IF Model.Odchodovost <= 0.4
 
IF Model.Odchodovost <= 0.4
Line 39: Line 41:
 
END IF
 
END IF
 
</pre>
 
</pre>
 
 
 
[[File:simproc_screen.png|thumb|right|Popisek]]
 
  
 
=Výsledky=
 
=Výsledky=

Revision as of 23:20, 12 June 2012

Úvodní odstavec

Definice problému

Model by simuloval tvoření front u stánků na občerstvení, které je možné často vidět na hudebních festivalech a dalších kulturních akcích akcích. Nejdříve si lidé kupují 1 až 2 položky (limonády, pivo...) a fronta poměrně ubývá. Postupem času, nebo při určité kritické velikosti fronty začne docházet k následujícím jevům:

  • Lidé stojící ve frontě víc vepředu začínají být žádáni, aby vzali občerstvení i pro kamarády, ale i pro cizí lidi. Může to být za úplatu př. “Kup nám 3 točené limonády a tady máš ještě na jednu navíc pro tebe” => to má za následek delší čekání lidí stojících vzadu. Obsluha jednoho člověka trvá déle hlavně v případě piva, kdy je jedna pípa a je třeba čekat na natočení např. šesti kelímků.
  • Může se objevovat předbíhání
  • Může dojít i ke kombinaci předbíhání a kupování více kelímků.

Účelem simulace je zachytit dynamiku tvorby těchto front a zjistit kdy začne být odbavení velmi pomalé. Výsledkem by mohlo být doporučení pro způsob jak zajistit rychlejší obsloužení zákazníků. Dále model může sledovat při jakém nastavení frontu je prodáno nejvíce občerstvení.

Metoda

Model by bylo možné realizovat jako multiagentní simulaci např. v Netlogo. Další možností je model simulovat jako proces v SIMPROCESS. První metoda by byla složitější na realizaci a vyžadovala by mnoho náležitostí "frontového" chování programovat. V SIMPROCESS je možné využít mnoho již vestavěných funkcí a velkou část simulace lze realizovat jen v editoru bez nutnosti programování. Na druhou stranu je v SIMPROCESS obtížnější realizovat některé věci, jako např. předbíhání nebo změnu chování čekajících na základě rostoucí nervozity či netrpělivosti.

Pro realizaci bylo nakonec zvolen SIMPROCESS také z důvodu snažšího zpracování výstupů z velmi podrobných reportů.

=Model=

Popisek

Zrod - lidé se do modelu generují dle normálního rozdělení v intervalu počtu sekund: Nor(16.0,2.0,1)

Nervozita - určuje prahovou hodnotu, kdy pohár trpělivosti (žízně) účastníků fronty přeteče a rozhodnou se pro předběhnutí a nebo požádají někoho více vepředu aby jim koupil limonádu (předají mu peníze, dále tedy jen "předávající"). Počet entit Clovek který musí do brány přijít aby začala generovat předbíhající/prosící se řídí dle: Nor(50.0,20.0,1)

Dále je na bráně Nervozita přidán výraz Expression spouštěný při události Accept Entity. Výraz upravuje chování brány tak, aby při větších frontách u pípy začala častěji vpouštět dávky předbíhajících a předávajících:

IF Model.Odchodovost <= 0.4
TrigFutureRelCount := DrawIntegerSample("Nor(30.0,15.0,1)");
	IF Model.Odchodovost <= 0.2
	TrigFutureRelCount := DrawIntegerSample("Nor(20.0,10.0,1)");
	END IF
ELSE
TrigFutureRelCount := DrawIntegerSample("Nor(50.0,20.0,1)");
END IF

Výsledky

Závěr

Kód