Optimalizace objednávek závozu v baru
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.
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í:
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á.
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.
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??
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
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
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
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
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
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. |