Valósághű (?) sorbanállás szimulátor

Futtassunk szimulációkat Python-ban.

Az úgy volt, hogy elgondolkoztam azon, hogy vajon miért jó az, ha a kiszolgálás folyamatát több részre bontják. Ha egyáltalán jó az. Offline, bolti kiszolgálásról van szó, mielőtt bárki - a blog témáját figyelembe véve - jogosan másra gondolna.

Ha vesszük az értékesítő-pénztáros-árukiadó modellt, érzésre úgy tűnik, hogy a több sor végigjárása miatt többet is várunk. De a sorbanállás pszichológiája fura egy dolog. Jó példa erre a hipermarket, ahol N pénztárnak van N sora azért, mert az N pénztár 1 sor felállás zavaró lehet az embereknek a hosszú sor miatt, holott a várakozási idő úgy kevesebb lenne.

Itt az ideje szimulálni. Két eset lesz (meg talán egy bónusz :)). Az egyikben van 4 ember, aki értékesít, 1 kezeli a pénzt és 1 kiadja a vásárolt árut. A másikban 6 ember, aki a teljes vásárlási folyamatért felelős. Mindkét esetben ahány ember van, annyi sor is, valamint hirtelen nagyobb mennyiségű vásárló esik be a boltba, akik mindig a legrövidebb sort célozzák meg. A helyek közötti közlekedésre szánt időt figyelmen kívül hagyjuk. Nincsenek kezelve az olyan vásárlók, akik az értékesítés után "feladják" és hazamennek (csak érdeklődni jöttek be a boltba). Az egyes helyeken töltött időt random generáltam a következő intervallumokat használva:

Értékesítés:
30 és 300 másodperc között
Pénztár:
15 és 30 másodperc között
Árukiadás:
30 és 120 másodperc között

Az első változat eredményei 4 különböző adathalmazra, 25 egyszerre érkező vásárlóval (az eredmények percben vannak):

  A1 A2 A3 A4
Átlagos sorbanállással töltött idő 14.37 14.58 12.57 12.36
Az összes ember kiszolgálása 33.79 34.44 32.15 30.46

A kettes számú verzió a 6 eladóval, aki nem specializálódott:

  A1 A2 A3 A4
Átlagos sorbanállással töltött idő 7.28 6.90 6.91 7.61
Az összes ember kiszolgálása 24.28 22.12 27.27 23.65

Ezzel úgy tűnik el is dőlt, hogy a többszörös sorbanállás nem csak lassabbnak érződik, de lassabb is. Már amennyire meg lehet bízni az általam írt szimulációkban. :)

A bónusz eset megegyezik a kettes verzióval annyi különbséggel, hogy nem eladónként van egy sor, hanem egy sor van összesen:

  A1 A2 A3 A4
Átlagos sorbanállással töltött idő 7.05 6.80 6.43 7.45
Az összes ember kiszolgálása 21.61 23.75 18.89 21.80

A különbség nem annyira látványos, de azért még sikerült lefaragni valamennyit az időkből (az A2 idejét leszámítva, az valamilyen rejtélyes oknál fogva több lett).

A kód egyébként Python-ban készült és a használt adathalmazokkal együtt letölthető itt. Kellemes szimulálást. :)

Hozzáfűznél valamit?

Dobj egy emailt a blog kukac deadlime pont hu címre.

Feliratkoznál?

Az RSS feed-et ajánljuk, ha kedveled a régi jó dolgokat.