Optimalizace objednávek závozu v baru

From Simulace.info
Jump to: navigation, search

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í:

Model konzumace
Model objednávek závozu
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)

Jednotlivé procesy jsou tvořeny pro každý produkt zvlášť s jinými parametry. Jinak jsou shodné. Model je rozdělen do dvou hlavních částí. První z nich se věnuje přímé konzumaci nápojů.

Požadavek: Na základě náhodného rozložení (viz tabulka: Rozdělení objednávek nápojů) jsou vygenerovány požadavky na konzumaci, Ty jsou tvořeny každý den.

Konzumace: Je odebrán 1 zdroj s přílišným nápojem.

Konzumace: Ukončí proces.

Druhá část představuje proces objednávky u dodavatele závozu.

Objednávky zásob: Hlavní událost vytvoření množství a časového harmonogramu objednávky.

Čekání na dodavatele: Vyčkání 2 dnů než dorazí objednávka. Přestavuje zpoždění od neděle do úterního rána.

Zisk nápoje: Naskladnění objednaného množství zdrojů. (viz minimální objemy zboží)

Uskladněno: Ukončí proces.

Nastavení parametrů 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á. Ze simulace by mělo proběhnout objednání 9 padesátilitrových sudů každý týden. Zároveň díky nutným pravidelným každotýdenním objednávkám lze pozorovat nejlepší vytíženost zdroje ze všech sledovaných produktů.

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. Toto lze vnímat i na simulaci. 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 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.

Pivo 14° - speciál

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 spíše delší časový úsek k vynechání. I tak lze považovat objednávku 1 třicetilitrového sudu za 14 dní jako vhodnou.

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.

Točená limonáda

Při optimální objednávce dochází k nízkému vytížení zásob. Opět jako u předchozího případu by bylo nutné vytvořit střídavý plán s občasným vynecháním pravidelného objednání. V základě se však dá očekávat, že limonádu bude nutné získat alespoň jednou do měsíce.

Limonáda
Objednávka Výsledek
1x 3 týdny (1 sud) Optimální stav objednávek i když pouze s vytížeností 72,16%.
1x 4 týdny (1 sud) Dostáváme se k výsledku vytížení 93,94%, avšak dochází k menšímu nedostatku zásob.

Nealkoholické pivo

Nealkoholické pivo vychází téměř na pravidelné objednávky jednou za 14 dní, avšak ne úplně. Nejvhodnějším způsobem bylo bylo brát v potaz pravidelné zásobování jednou za 14 dní a občasné jednorázové přikoupení 1 přepravky navíc.

Nealkoholické pivo
Objednávka Výsledek
1x 1 týdny (1 přepravka) Velmi malá vytíženost pouze se 48,44%
1x 13 dní (1 přepravka) Optimální stav s vytížeností 87,57%
1x 2 týdny (1 přepravka) Vytíženost zdroje je 93,35%. Avšak vzniká nedostatek zásob.

Cola

Opačným problémem je zásobování coly. Obdobně bychom to vyřešili jako u předchozího nápoje s tím rozdílem, že objednávky by byly provozovány každý týden a po čase by se jedna neuskutečnila.

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 se velmi vychyluje oprati ostatním nápojům. Jeho prodeje jsou velmi malé a objednávky vychází dokonce jen na jednou za 2 měsíce!

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í 75,45% 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, i tak nelze se s tímto výsledkem spokojit.

Džus

Optimálním stavem by bylo objednávat jednou za 9 dní, avšak z podstaty týdenních závozů je nutné jako u některých předchozích nápojů objednávat každý týden s tím, že by se občasně vynechávalo.

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

Na základě konzultace s majitel podniku a objednávek za měsíc duben jsem srovnal výsledky simulace a skutečných objednávek. Pro potřeby jsem uvažoval, že se jedná o první objednávky a je potřeba doplnit všechny zásoby. Zvolil jsem pro jednotlivé položky optimální objednávky a v případě, že se jednalo o optimum v řádech dnů tak jsem vytvořil střídavý plán. Oba vytvořené plány jsem spolu srovnal a zkonzultoval znovu případné nesrovnalosti.

Optimální objednávka Skutečná objednávka
Nápoj 3. duben 10. duben 17. duben 3. duben 10. duben 17. duben
11° 9 sudů 9 sudů 9 sudů 11 sudů 10 sudů 12 sudů
13° 1 sud 1 sud --- --- 2 sudy ---
14° 1 sud --- 1 sud 1 sud --- ---
Limonáda 1 sud --- --- --- --- ---
Nealkoholické pivo 1 přepravka 1 přepravka --- 1 přepravka --- 1 přepravka
Cola 1 přepravka 1 přepravka 1 přepravka 2 přepravky --- 1přepravka
Sprite 1 přepravka --- --- --- --- ---
Džus 1 přepravka 1 přepravka 1 přepravka 2 přepravky 1 přepravka ---

Lze pozorovat, že nejvýznamnější rozdíly jsou v objednávkách piva 11°. To je způsobeno, že se jedná o klíčový produkt, který musí být vždy k dispozici a je normální, že se dělají zásoby navíc. S tímto myšlením je jasné proč jsou objednávky o sud vyšší. Také lze vidět, že neproběhla žádná objednávka točené limonády ani nápoje Sprite. To prý bylo z důvodu, že zásob bylo dostatek. Ostatní položky se relativně blíží odhadům. Navíc je důležité zmínit, že výrazně jsou objednávky ovlivněny skutečnými prodeji.

Závěr

Byl vytvořený nový optimalizovaný plán objednávek závozu, který předvídá, jak často a kolik by se mělo objednávat nápojů. Zároveň byl tento model srovnán se skutečností, která naznačuje, že model relativně odpovídá skutečnému stavu. Nejlépe lze vidět aplikaci modelu na objednávkách piva 11°, které mělo nejlepší výkonnost zdrojů a zároveň byl nejlépe optimalizován sklad z pohledu jeho minimalizace. Takovýto model by bylo nejvhodnější asi použit u většího podniku, ve kterém jsou celkově mnohem vyšší prodeje. Pro modelování byl vyšlo lépe pokud by se více řešil problém s počtem položek v objednávce spíše nežli kdy se daná objednávka uskuteční. I přesto může majiteli podniku výsledek pomoci. Návrhy jednotlivých objednávek můžou sloužit jako vhodný nástroj pro představu budoucích nákupů a naplánovat tak jejich akvizici., případně to může použít jako základní model, který si časem sám přizpůsobí.

Doporučeními, které lze sledovat z dat je nízká spotřeba točená limonády, která se objednává v 50l sudech. Jelikož se však spotřebovává relativně dlouhou dobu, ztrácí pak na chuti. Bylo by vhodné zvážit zda by neexistovala možnost objednávat menší (30l) sudy. Druhým málo objednáváním nápojem je položka Sprite. Tím, že se jedná o lahvový nápoj není to tak velký problém, že se nespotřebovává takovou dobu.

Simulace však trpí určitými nedostatky. Zdrojová data byla pouze z rozsahu 6 týdnů. Jelikož je toto odvětví velmi závislé na sezónnosti bylo by vhodné mít data z celého roku. Obzvlášť v létě jsou prodeje mnohem vyšší. Díky tomuto by bylo možné vytvořit plán podle jednotlivých dní, jak bylo také zprvu plánováno. Druhým problémem jsou i náhodné události. Stává se, že při různých srazech, dětských táborech či jiných slavností jsou prodeje lahvových nápojů výrazně odlišné a pak by objednávky byly nedostatečné. Další událostí jsou výhodné nákupy. Občas se naskytne možnost vzít vyšší množství nápojů za výhodnější ceny, což znovu ovlivňuje celé plánování.

Lze tedy vidět, že pro podnik takovéto velikosti je způsob objednávek ad-hoc vhodnější nežli pravidelný plán.

Zdroje

Původní data byla poskytnuta z interních záznamů konkrétního podniku. Výsledky byly konzultovány s majitelem podniku skrze online hovor.

Kód

Soubor se zdrojovými soubory a původními daty: File:Model nemj13.zip