Optimalizace objednávek závozu v baru

From Simulace.info
Revision as of 15:01, 12 June 2022 by Nemj13 (talk | contribs) (v1.0)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Inprogress

Zadání

Název simulace: Optimalizace objednávek závozu v baru

Autor: Bc. Jiří Němeček, nemj13

Typ modelu: Diskrétní simulace

Modelovací nástroj: Simprocess

Definice problému

Jedná se o menší bar (spíše hospodu), ve kterém se převážně popíjí pivo. Problém nastává v objednávkách u závozníka. Ty se dělají každý týden v neděli a přiváží se v úterý ráno. Obsah objednávky se odhadují na základě momentálního stavu zásob, nadcházejících akcí a postřehů obsluhy. Problémem je však, že se stává, že jeden druh piva občas úplně dojde a některé ostatní nápoje vychází jen taktak. V takových to případech se pak složitě shánějí náhrady a často za vyšší ceny, aby do dalšího závozu byly k dispozici. Je tedy otázkou, zda by se tento problém nedal vyřešit určitým optimalizačním modelem. Existují zda však dva významné problémy. Nápoje nesmí nikdy dojít, jelikož by poté utrpěla reputace podniku a znamenalo by to další ztráty. Druhým je nedostatek místa. Sklad je není natolik velký, aby se v něm uchovávalo velké množství nápojů, a proto se snažíme zásoby minimalizovat.

Konkrétně se jedná o nápoje pivo 11°, pivo 13°, pivo 14° - speciál, točená limonáda, Nealkoholické pivo lahvové, Cola, Sprite, džus. Zbytek nápojů a dalších surovin se řeší individuálně a pružně v průběhu týdne. Není tak potřeba je brát v tomto případě v úvahu.

Metoda

Z podstaty problému jsem zvolil pro práci systém Simprocess. V něm lze pro potřeby simulace vhodně pracovat se zdroji a zajistit tak jejich maximální využit.

Model

Zdrojová data

Jako vstupní data byly použity interní záznamy o denních prodejích jednotlivých položek a to z období od 1. dubna 2022 až 15. května 2022. Točené nápoje (11°, 13°, 14°, Limo) jsou zaznamenány v litrech. Ty byly zároveň zaokrouhleny na nebližší poloviny, aby bylo abstrahováno od drobných odlišností (míra piva, rozlití, ...) Ostatní nápoje (Nealkoholické pivo, Cola, Sprite, Džus) jsou poté v kusech.

Histogram prodejů coly v kusech
Příklad jednotlivých záznamů
Datum Den 11° 13° 14° Točená Limo Nealkoholické pivo Cola Sprite Džus
01.04.2022 Pa 58,5 2 4 2 2 3 1 4
02.04.2022 So 48 1,5 1,5 2 0 4 0 2
03.04.2022 Ne 54,5 0 1,5 2,5 1 1 0 2

Dále také víme, v jakých minimálních objemech se zboží odebírá, lze tedy vždy nutné objednat celý sud/přepravku:

  • 11°, Točená limonáda - sud 50l
  • 13°, 14° - sud 30l
  • Nealkoholické pivo - přepravka po 20ks
  • Cola, Sprite, džus - přepravka po 24ks

Zdroje

Pro lepší práci byly záznamy v litrech převedeny na celá čísla odpovídající jednomu kusu nápoje. (0,5l = 1 sklenice) Všechny zdroje odpovídají jednotlivým nápojům a jsou všechny spotřebovatelné. Zároveň pro realističnost bylo hned do začátku ponechány alespoň nějaké zásoby odpovídající 10 kusů u lahvových nápojů a 1/4 sudu u točených.

  • pivo 11°
  • pivo 13°
  • pivo 14°
  • Točená limonáda
  • Nealkoholické pivo
  • Cola
  • Sprite
  • Džus

Entity

Pro každou objednávku byla zvolena dvojice entit (1 závoz, 1 prodej) pro lepší sledování výkonu.

  • Objednávka11, Objednávka11-zavoz
  • Objednávka13, Objednávka13-zavoz
  • Objednávka14, Objednávka14-zavoz
  • ObjednávkaLimo, ObjednávkaLimo-zavoz
  • ObjednávkaNealko, ObjednávkaNealko-zavoz
  • ObjednávkaCola, ObjednávkaCola-zavoz
  • ObjednávkaSprite, ObjednávkaSprite-zavoz
  • ObjednávkaDzus, ObjednávkaDzus-zavoz

Model simulace

Původní záměr byl simulovat všechny dny samostatně na základě svých hodnot. Jelikož se však jedná pouze o celkově 7 záznamů pro konkrétní den, změnil jsem záměr z důvodu nereprezentativního počtu. Nakonec se tak vytvořili univerzální dny, kdy byl stále stejný počet objednávek dle náhodného rozdělení. Pro všechny položky bylo nakonec zvoleno Poissonovo rozdělení z důvodu diskrétního rozdělení. Počet objednávek po produktu pro jednotlivé dny byly následující:

Rozdělení objednávek nápojů
Nápoj Náhodné rozdělení
Pivo 11° Poi(125.731,1)
Pivo 13° Poi(5.04,1)
Pivo 14° Poi(3.82,1)
Točená limo Poi(3.64,1)
Nealkoholické pivo Poi(1.47,1)
Cola Poi(2.71,1)
Sprite Poi(0.40,1)
Džus Poi(2.60,1)



Nastavení simulace

Simulace probíhala pro jeden celý rok a první dva měsíce byly pouze zahřívací (Warmup). Celkově bylo provedeno pět iterací a výsledky byly interpretovány z průměru všech těchto replikací.


Výsledky

Optimální nastavení objednávek

Pivo 11°

Spotřeba piva 11° je s přehledem nejvýraznější. Jako u jediné nezvažuje pouze zda uskutečníme objednávku, ale kolik sudů se nakonec objedná.

Pivo 11°
Objednávka Výsledek
1x 1 týdny (8 sudů) Dochází k nedostatku zásob. V průměru se jedná o 1929 čekajících objednávek, což porušuje základní pravidlo.
1x 1 týdny (9 sudů) Optimální stav objednávky s dosaženou vytížeností 95,84%.


Pivo 13°

Jedná se o nejproblémovější typ nápoje. Ze zkušeností obsluhy je toto právě druh piva, který dochází nejčastěji.

Pivo 13°
Objednávka Výsledek
1x 1 týdny (1 sud) Velmi malá vytíženost 56,77%. Zbytečně se navyšuje sklad.
1x 11 dní (1 sud) Optimální nastavení s vytížeností 88%.
1x 12 dní (1 sud) Ve 4 replikacích došlo k optimálnímu nastavení, avšak 1 ukázalo velmi drobný nedostatek zásob. Z tohoto důvodu se nelze s takovouto objednávkou spokojit.
1x 2 týdny (1 sud) Dochází k nedostatku zásob. V průměru se jedná o 104 čekajících objednávek, což porušuje základní pravidlo.

U tohoto produktu nastává problém s nevyvážeností. Při objednání 1 sudu týdně dochází ke zbytečnému kumulování zásob, na druhou stranu jednou za 2 týdny naopak dochází k nedostatku zásob. Pro zachování podmínky mít vždy všeho dostatek by bylo ideální objednávat jedou za 11 dní. Tuto možnost však není možné v reálném světě aplikovat. Bylo by tedy nutné vytvořit nepravidelné případně střídavé objednávky.


Pivo 14° - speciál

POPIS TODO??

Pivo 14°
Objednávka Výsledek
1x 2 týdny (1 sud) Optimální stav objednávek s vytížeností 85,35%.
1x 3 týdny (1 sud) Dochází k nedostatku zásob. V průměru se jedná o 163 čekajících objednávek, což porušuje základní pravidlo.

Nejedná se sice o vytíženost přes 90%, ale z podstaty pravidelných objednávek není možné lepšího výsledku dosáhnout. Při využití takto nastavených objednávek by docházelo jednou za určitý čas k vynechání.

Točená limonáda

Limonáda
Objednávka Výsledek
Optimální stav objednávek s vytížeností 85,35%.
1x 3 týdny (1 sud) Dochází k nedostatku zásob. V průměru se jedná o 163 čekajících objednávek, což porušuje základní pravidlo.

Nealkoholické pivo

Nealkoholické pivo
Objednávka Výsledek
1x 1 týdny (1 přepravka) Stav s vytížeností 73,1%
1x 9 dní (1 přepravka) Optimální stav s 94% vytížeností. Výsledný report sice ukazuje čekající objednávku, ale v průměru se jedná jen o 0,04 a proto jsem to nebral v úvahu.
1x 2 týdny (1 přepravka) Dochází k nedostatku zásob. V průměru se jedná o 162 čekajících objednávek, což porušuje základní pravidlo.

Cola

Cola
Objednávka Výsledek
1x 1 týden (1 přepravka) Dochází k vytížení 75,43%.
1x 8 dní (1 přepravka) Optimální stav s vytížením 85,85%.
1x 9 dní (1 přepravka) Dochází k vytížení 96% avšak opět v některých replikacích vzniká nedostatek zboží.
1x 2 týdny (1 přepravka) Dochází k nedostatku zásob. V průměru se jedná o 178 čekajících objednávek, což porušuje základní pravidlo.

Sprite

Sprite
Objednávka Výsledek
1x 8 týdnů (1 přepravka) Optimální stav, ve kterém nedochází zásoby s vytížeností 82% zdroje Sprite.
1x 9 týdnů (1 přepravka) Dochází k nedostatku zásob. Jedná se však o velmi malé množství čekajících objednávek maximálně 2.

Džus

Džus
Objednávka Výsledek
1x 1 týdny (1 přepravka) Stav s vytížeností 73,1%
1x 9 dní (1 přepravka) Optimální stav s 94% vytížeností. Výsledný report sice ukazuje čekající objednávku, ale v průměru se jedná jen o 0,04 a proto jsem to nebral v úvahu.
1x 2 týdny (1 přepravka) Dochází k nedostatku zásob. V průměru se jedná o 162 čekajících objednávek, což porušuje základní pravidlo.


Srovnání se skutečnými objednávkami

Závěr

Kód