Wachten in de supermarkt Rik Schepens 0772841 Rob Wu 0787817 22 juni 2012 Begeleider: Marko Boon Modelleren A Vakcode: 2WH01
Inhoudsopgave Samenvatting 1 1 Inleiding 1 2 Theorie 1 3 Model 3 4 Resultaten 5 5 Conclusie en discussie 5 A Voorbeelden van wachtrij-aspecten 6 B Programma en algoritme 7 C Resultaten van de simulatie 8 Referenties 9
Samenvatting In een supermarkt zijn er vijf permanent bemande kassa s. Wanneer een klant wilt afrekenen, sluit hij bij één van de rijen voor deze kassa s aan. Het komt regelmatig voor dat een kassa vrij is, terwijl er een (lange) rij voor een andere kassa staat. Het inkorten van de wachttijden is in ieders belang, en daarom wordt er onderzocht hoe deze verkort kan worden. De situatie waarbij het aantal wachtrijen wordt teruggebracht tot één grote moet worden onderzocht. De wachttijd is afhankelijk van het volume klanten en de verwerkingscapaciteit van de kassa s. Met behulp van formules uit de wachtrijtheorie kan worden berekend wat de invloed van deze factoren is op de wachttijd. Door middel van simulaties is nogmaals te zien hoe de wachttijden zich ontwikkelen. Om de wachttijd te verkorten verdient het gebruik van één grote rij de voorkeur boven vijf kleine rijen. 1 Inleiding De supermarkt heeft vijf kassa s, die altijd bemand zijn. Op het moment kunnen klanten voor elke kassa bij de rij aansluiten. Het vaak voor dat een klant ziet dat een andere kassa vrij is gekomen, terwijl hij in de rij wacht. Soms wisselt hierdoor een klant van kassa, om zo sneller geholpen te worden. Misschien is het hanteren van één wachtrij efficiënter. In dit geval gaat een klant uit de rij naar een kassa, zodra deze vrijkomt. 2 Theorie Het probleem is onderdeel van een bepaalde tak van de wiskunde, de wachtrijtheorie. Om dit goed te begrijpen moet je eerst door een stuk theorie. Hieronder staat het standaard model van een wachtrij. De horizontale lijn is hier de rij, de verticale streepjes zijn de wachtenden, en het rondje is de server. De server verwerkt de wachtenden, hier is dit dus de kassa. 1
Standaard wachtrij model Vervolgens moet er rekening worden gehouden met de volgende punten: Het aankomstproces van de klanten, het gedrag van de klanten, de service snelheid, de verwerkingsvolgorde, de service capaciteit en de maximale lengte van de wachtrij. Deze beïnvloeden wat voor soort model je zou moeten kiezen. Hoe deze er bij ons model uitzien wordt bij het model verteld. En er staan per punt extra voorbeelden in de bijlage. (Bijlage: A) Een groot aantal modellen zijn door Kendall samen gevat in een korte notatie. Deze ziet eruit als a/b/c, hierbij is a de verdeling van de tijd tussen de aankomsten, b de verdeling van de service tijd, en c het aantal servers. De verdelingen worden afgekort met letters. De hier gebruikte letters zijn M (memoryless), welke een exponentiële verdeling aangeeft, en G (general) welke een verdeling in het algemeen aangeeft. De letters 1 en 1 geven respectievelijk de gemiddelde tussenaankomsttijd λ µ en de gemiddelde servicetijd weer. Deze zijn van belang bij de verdeling van aankomsten, en service tijd. De verhouding hiertussen wordt vaak aangeduid met ρ, het is zeer belangrijk dat deze verhouding kleiner is dan 1. Dit is de stabiliteitsvoorwaarde, als hier niet aan wordt voldaan dan groeit de wachtrij enkel. Tot slot moet er worden bepaalt waar naar wordt gekeken om de prestatie te meten. Hier zullen we vooral geïnteresseerd zijn in de gemiddelde waardes van de lengte van de wachtrij E(L q ) (q staat hier voor queue) en de wachttijd E(W ). De Wet van Little De wet van Little geeft een belangrijke relatie aan tussen deze laatstgenoemden. Hierbij is al wel aangenomen dat het een stabiel systeem is. Dus ρ < 1. Little zegt dan het volgende: Dit is heel handig om berekeningen uit te voeren. PASTA E(L q ) = λe(w ) (1) De PASTA eigenschap geld voor bepaalde wachtrij-modellen. En deze zegt dat als je op een willekeurig moment kijkt dat de kans dat je situatie A aantreft even groot is als de de fractie van de tijd dat het systeem zich in situatie A bevindt. 2
Over het algemeen is dit niet het geval. Enkel bij M/ / is dit altijd het geval. Dit zorgt ervoor dat bij een zodanig model de gemiddelde waardes makkelijker bepaald kunnen worden. 3 Model Het is belangrijk om eerst een paar dingen aan te nemen. Ten eerste nemen we aan dat de tussenaankomstijd exponentieel verdeeld is, dit maakt het rekenwerk veel eenvoudiger, en is ook een zeer representatief model voor de tussenaankomsttijden. Ook wordt de verdeling van de service tijd exponentieel verondersteld. Hier is wederom voor gekozen om het model eenvoudiger te houden. Ook is het een redelijk representatief model voor de service tijden. Daarnaast wordt er een situatie verondersteld met vijf kassa s die allen geopend zijn, dus de service capaciteit is vijf. Tevens veronderstellen we dat bij iedere kassa de service tijd identiek en onafhankelijk verdeeld is. Het is vrij logisch dat dit in de werkelijkheid niet volledig waar is, het verschil wat dit in de resultaten veroorzaakt is echter verwaarloosbaar. (Zie bijlage C) Ook wordt verondersteld dat er volgens een wie het eerst komt, wie het eerst maalt systeem wordt gewerkt, dit is gebruikelijk in een supermarkt. Tot slot is er geen maximale lengte van de wachtrij. Ten eerste staan hier de gekozen modellen zoveel mogelijk theoretisch uitgewerkt, hierin is de gemiddelde tussenaankomstijd van het hele systeem 1 λ genoemd en de gemiddelde service tijd per server 1. We gaan ervan uit dat ρ µ kleiner is dan 1, zodat er een stabiel systeem is. Daarnaast is er ook een programma wat een simulatie draait van de modellen, hier is het bijvoorbeeld ook mogelijk om verschil in service tijden in te voeren. Dit is theoretisch nauwelijks te verwerken, maar wel is het met een simulatie goed te benaderen. 1 rij per kassa Dit is het systeem dat op het moment eigenlijk overal wordt gebruikt. Hier zijn een paar extra aannames nodig om het model in goede banen te leiden. Om te beginnen, kiest klant een rij en blijft bij zijn keuze. Ofwel hij wisselt niet van rij. Daarnaast kiest een klant willekeurig een rij waarin hij aansluit. Dit is natuurlijk niet realistisch en zal een redelijk verschil maken, echter is er geen manier om een model zodanig te maken dat er een logische keuze, zoals sluit aan in de kortste rij, wordt gemaakt. Hier zal een simulatie alsnog uitkomst voor bieden. Deze aannames leveren vijf maal een M/M/1 model. Preciezer nog een 3
M( 1 λ)/m(µ)/1, waarbij dus de tussenaankomstentijden exponentieel verdeeld zijn met een gemiddelde van 1 1 en de service tijden exponentieel zijn 5 λ 5 verdeeld met een gemiddelde van 1. De gemiddelde rijlengte en de gemiddelde wachtrij zijn dan ook vrij vanzelfsprekend gelijk aan die van één maal µ ditzelfde model. Er geld dan ρ = 1 5 λ. Volgens de formules [1] geldt dan het volgende: µ E(W ) = ρ/µ 1 ρ E(L q ) = ρ2 1 ρ Let op L q staat hier natuurlijk wel voor de gemiddelde rijlengte per rij. Voor de totale wachtrij geldt: (2) (3) E(L q T ) = 5 ρ 2 1 ρ (4) 1 grote rij Dit is het alternatieve systeem waarvan wordt vermoed dat het wellicht beter werkt. Ook hier zijn een paar extra aannames vereist. Om te beginnen zal het in de praktijk wellicht voorkomen dat kassa s tijdelijk niemand bedienen, omdat mensen er nog naartoe moeten lopen. Dit is echter gering, zeker als je meeneemt dat als er bijna een kassa vrij is, dat dit wel duidelijk is, en de volgende persoon alvast naar de deze kassa kan lopen. Deze looptijd wordt dus op nul verondersteld. Dit levert een redelijk standaard voorbeeld van een M/M/c model, of preciezer een M(λ)/M(µ)/5 model. Met exponentieel verdeelde tussenaankomstentijden met een gemiddelde van 1 en met exponentieel verdeelde service λ tijden met een gemiddelde van 1 λ. Er geld dan ρ = (merk op dat deze µ 5µ gelijk is aan de ρ in het andere systeem). Volgens de formules [1] geldt dan het volgende: 1 E(W ) = Π W 1 ρ 1 (5) cµ E(L q ρ ) = Π W (6) 1 ρ Hierbij komt Π W tevoorschijn, dit is een aparte variabele die een vervelende som voorkomt, en ook snel het verband laat zien met het andere model van het systeem met vijf rijen. Π W is dusdanig lastig te berekenen dat het hier wordt overgeslagen. Meer informatie hierover is te vinden in [1]. 4
4 Resultaten Uit 6 en 4 blijkt al snel dat enkel Π W hoeft te worden vergeleken met ρ. Indien Π W < ρ dan levert één grote rij dus betere resultaten. Vice versa, als Π W > ρ dan geniet een rij per kassa de voorkeur. Uiteindelijk bleek echter uit de simulaties dat vooral het model voor de vijf rijen dusdanig ver van de werkelijkheid lag, dat de resultaten uit deze vergelijkingen niet representatief genoeg zijn. In de simulaties wordt ook duidelijk dat de situatie met 1 rij een beter resultaat levert. In de simulatie is duidelijk te zien dat de wachttijden korter worden bij kleine waarden van ρ. Bij gelijke waarden van ρ is te zien dat de wachttijden groter zijn bij kleinere waarden λ en µ. Dit is eenvoudig in te zien: Een kleine waarde λ of µ betekent dat de gemiddelde tussenaankomst- en verwerkingstijd een hoge waarde hebben. In de praktijk betekent dit dat er niet vaak klanten komen, maar dat áls er een klant komt, deze vaak een grote bestelling heeft gedaan. De kans dat twee of meer van deze klanten achter elkaar komen is niet te verwaarlozen, wat terug te zien is in de resultaten van de simulatie. De slechtere prestatie van het vijf-kassa s-model ten opzichte van de simulatie, waarbij wel slim word gekozen, is te verklaren door het feit dat bij het model er momenten zijn waarbij een kassa leeg is, terwijl er elders een wachtrij is. En dat de kans even groot is dat de nieuwe klant in een van beide rijen aansluit. 5 Conclusie en discussie Uit de simulaties blijkt dat de situatie met één lange wachtrij een kortere wachttijd per klant geeft dan het geval waarin er vijf wachtrijen zijn. Vandaar het advies om dit systeem te gebruiken. In de modellen zijn verschillende aannames gemaakt. Met de psychologische kant is geen rekening gehouden. Het is mogelijk dat een klant in een lange rij de duur van het wachten groter ervaart dan dat het in werkelijkheid is. In de praktijk zal de looptijd in de rij en tussen de rij en kassa een rol spelen. Denk hierbij aan een oude vrouw die slecht ter been is, of een groepje personen die in een geanimeerd gesprek niet door hebben dat de rij inmiddels is doorgeschoven. 5
A Voorbeelden van wachtrij-aspecten Het aankomstproces van de klanten Het is belangrijk om te weten hoe dit gebeurd, hiervoor is een verdeling van de tussenaankomsttijden nodig, en is het ook handig om hier meteen een gemiddelde van 1 bij te doen. λ Het gedrag van de klanten Het kan bijvoorbeeld zijn (bij een telefooncentrale) dat mensen uit de wachtrij stappen as ze al heel lang wachten, specifieke voorbeelden hier zijn dingen als hoe kiest een klant zijn rij. De service snelheid Ook hier is de vraag hoe de service tijd is verdeeld, en wat hier het gemiddelde van is. De verwerkingsvolgorde Wordt er FiFo (first-in, first-out) gewerkt, of worden de laatste mensen uit de rij eerst geholpen, of in een supermarkt vaak van toepassing, worden mensen met een kleine bestelling eerst geholpen. De service capaciteit Hoeveel servers heb je, hier dus 5 kassa s De maximale lengte van de wachtrij Hoe lang kan de rij worden, bij de Jumbo mag dit maar 4 zijn, anders zijn de boodschappen gratis. 6
B Programma en algoritme Voor dit project hebben we een programma geschreven die een simulatie uitvoert. Deze demo bevat ook een animatie van de situatie, en is te vinden op http://rob.lekensteyn.nl/supermarkt/ en volgt het volgende algoritme: Initialisatie: Bereken de eerstvolgende aankomsttijd (next time) van een klant, exponentieel verdeeld met gemiddelde 1 λ. Zolang de simulatie bezig is: 1. Verhoog de teller (time) die het aantal tijdseenheden bijhoudt met één. 2. Bereken het verschil tussen next time en time. Als deze afgerond kleiner is dan één, dan zitten de tijden dicht op elkaar. Dit betekent dat er een klant binnenkomt. Als dit niet het geval is, ga naar stap 6. 3. Maak een nieuwe klant met een willekeurige (exponentieel verdeeld) verwerkingstijd. Dit is de tijd die de kassa later nodig zal hebben voor deze klant. 4. Voeg deze klant toe aan de aankomstwachtrij (arrival queue), en verhoog de teller van het aantal aangekomen klanten met één. 5. Genereer een nieuwe waarde voor next time, zoals beschreven in de initialisatiestap. Deze waarde geeft aan hoeveel tijd er nog moet verstrijken voordat de volgende klant aankomt. Tel hierbij de huidige waarde van time op, zodat het verschil berekenen in stap 2 zinvol is. 6. Voer de model-afhankelijke stappen uitvoert. 7. Ga verder bij 1. Model-afhankelijke stappen voor één grote wachtrij In de broncode te vinden in functie demo 1q. 1. Volg voor elke kassa de volgende stappen: Als de kassa geen klant aan het verwerken is en arrival queue is niet leeg, verwijder de eerste klant uit deze wachtrij. Tel de verwerkingstijd van deze klant op bij de benodigde verwerkingstijd van de kassa. Als de verwerkingstijd van de kassa hoger is dan nul, trek daar dan één van af. 7
2. Tel de lengte van de arrival queue op bij de totale wachttijd. Model-afhankelijke stappen voor vijf wachtrijen In de broncode te vinden in functie demo 5q. 1. Als de lengte van arrival queue hoger is dan nul (dat wil zeggen, er is een klant gearriveerd), dan: ( Slim gekozen ) Neem van alle kassa s de kassa met de kortste wachtrij. (In overeenstemming met het theoretische model) Kies een kassa, volstrekt willekeurig. Voeg de nieuwe klant toe aan de wachtrij van deze kassa. 2. Voer de volgende stappen uit voor elke kassa: work load is de actuele verwerkingstijd die de kassa nog nodig heeft om zijn klant weg te werken Als de kassa bezig is (work load is groter dan nul), trek hier dan één eenheid van af. Als work load kleiner of gelijk is aan nul en de kassa heeft een niet-lege wachtrij, verwijder de eerste klant uit deze wachtrij, en voeg de waarde van de klant s verwerkingstijd toe aan work load. Tel de lengte van de rij bij de kassa op bij de totale wachttijd (iedere persoon in de rij moet immers één tijdseenheid wachten). De gemiddelde wachttijd per klant is uit te rekenen door de totale wachttijd te delen door het aantal aangekomen klanten. Merk op: In het algorithme is nergens een specificatie gegeven voor het aantal kassa s. De simulatie is dus algemeen toepasbaar voor een willekeurig aantal kassas. Dit is in de broncode bovenaan in te stellen via de variable CHECKOUT COUNT. C Resultaten van de simulatie In de tabel hieronder is te zien wat de gemiddelde wachttijd is per klant na 10 8 simulaties (in tijdseenheden). De simulatie is gedaan onder de aannames dat zowel de aankomsttijden van de klant, als de verwerkingstijden voor de 8
klant exponentieël verdeeld zijn met gemiddelde 1 respectievelijk 1. Verder λ µ zijn de kassa s identiek wat betreft verwerkingssnelheid en worden de klanten geholpen in de volgorde van aankomst bij de kassa (FIFO). De rijlengte is ongelimiteerd en er zijn vijf kassa s. Kolom Q1 geeft het resultaat bij één grote rij. Voor vijf rijen, waarbij de klant steeds de kortste kassa kiest is het resultaat weergeven in kolom Q5. Het geval waarbij een klant willekeurig een kassa kiest is in de laatste kolom (R5) te zien. λ µ ρ = λ Q1 Q5 R5 5µ 0.500 0.100 1.000 * * * 0.100 0.021 0.952 2.4 10 2 4.0 10 2 1.2 10 2 0.004 0.001 0.800 5.3 10 2 1.0 10 2 3.9 10 4 0.100 0.250 0.800 24 45 1.7 10 2 0.200 0.500 0.800 13 26 92 0.050 0.020 0.500 2.7 6.2 51 0.100 0.040 0.500 1.4 3,7 26 0.001 0.001 0.200 0.9 1.6 2.5 10 2 0.010 0.010 0.200 0.1 0.6 25 0.200 0.200 0.200 0 0.6 1.4 0.400 0.400 0.200 0 0.7 0.8 0.400 0.400 0.200 0 0.7 0.8 0.005 0.100 0.100 0 0 0.1 0.010 0.200 0.100 0 0 0.1 0.020 0.400 0.100 0 0 0 0.001 0.020 0.010 0 0 0.6 0.002 0.040 0.010 0 0 0.0 0.001 0.040 0.005 0 0 0 * Wanneer het quotient λ bijna gelijk of groter is aan één, is de gemiddelde tijd aankomsttijd van een klant gelijk aan de capaciteit van de kassa s 5µ gezamenlijk. Op een gegeven moment onstaan er rijen, die niet meer weg te werken zijn. Het gevolg is dat elke volgende klant gemiddeld langer moet wachten. Referenties [1] Adan, I., & Resing, J. (2002) Queueing Theory. Department of Mathematics and Computer Science, Eindhoven University of Technology [2] Queue 2.0: Applet Wachtrijsimulatie. Tu/e, faculteit Wiskunde en Informatica. URL: http://www.win.tue.nl/cow/q2 9