Modelleren C Appels Christian Vleugels
Sander Verkerk
Richard Both
2 april 2010
Inhoudsopgave 1 Inleiding
2
2 Probleembeschrijving
2
3 Data
3
4 Aanpak
3
5 Data-analyse 5.1 Data-analyse: per product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Data-analyse: algemeen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 4 4
6 Resultaten
6
7 Conclusie
9
8 Toekomstplanning/wat nog te doen?
9
1
1
Inleiding
Iedereen loopt wel eens tegen een ruimteprobleem aan, soms zonder dat je je er in eerste instantie van bewust bent. Stel dat je net een nieuwe kast hebt gekocht bij IKEA. De kast bestaat uit twee zijsteunen en een aantal planken die op elke gewenste hoogte in de kast geplaatst kunnen worden. Een mogelijkheid is dat je de planken op gelijke afstand van elkaar in de kast plaatst, maar is dit wel de beste oplossing? Je kiest ervoor om dit te doen en op het moment dat de kast gevuld is merk je dat je ruimte te kort komt voor je spullen. Aan de andere kant heb je ook ’loze’ ruimte die niet gevuld is, maar daar passen je spullen niet meer in. Bestaat er nu een indeling van de planken zodat w´el al je spullen in de kast passen? Allereerst zal er een beschrijving van het probleem gegeven worden. Hierna zal er een aanpak voor het probleem gegeven worden en daarna zal worden toegelicht wat er tot nu toe onderzocht is. Vervolgens worden de behaalde resultaten weergegeven en de conclusies worden toegelicht. Ook zal er een schatting worden gegeven van de benodigde ruimte die voor de gegeven data nodig is. Tot slot geven wij een planning met de dingen die wij volgend blok gaan onderzoeken.
2
Probleembeschrijving
Een bedrijf runt een distributiecentrum met een groot aantal verschillende soorten appels. Een distributiecentrum is een grote hal waar producten volgens een aanvoerproces binnenkomen en er volgens een bestelpatroon weer uitgaan. In dit verslag wordt er dan ook gesproken over de aanvoer en de uitvoer. Volgens de huidige indeling blijkt het distributiecentrum te klein om alle aanvoer op te slaan. Omdat uitbreiding erg kostbaar is, komt het bedrijf met de volgende hoofdvraag. Wat is de meest ruimte-optimale binindeling van het distributiecentrum, zodanig dat men alle producten kwijt kan gegeven het aan- en uitvoerproces? Er zal zo uitgelegd worden wat er precies wordt bedoeld met een bin. Een antwoord op de hoofdvraag kan gevonden worden door naar een aantal deelvragen te kijken: 1. Hoe verhouden de aankomst- en vertrekprocessen van elk product zich ten opzichte van elkaar? 2. In hoeverre is er sprake van snellopende (populaire) producten? 3. In welke ordegrootte zal de maximaal benodigde ruimte moeten liggen? 4. Hoe kunnen we uit een binindeling de benodigde ruimte bepalen? 5. Wat is de minimale ruimte die benodigd is om de producten kwijt te kunnen? De aan- en uitvoer over een bepaalde periode uit het verleden zijn bekend. Aan de hand van deze gegevens zal er een indeling gemaakt moeten worden. De aan- en uitvoer van producten wordt gegeven in aantal pallets. Een pallet hoeft niet helemaal vol te staan, men gaat uit van positief, ree¨el aantal pallets. De pallets worden in het magazijn vervolgens opgeslagen in bins. Een bin is opslagruimte waarvan de grootte van tevoren is bepaald. Het is een verzameling palletplaatsen bij elkaar. De grootte van een bin is een natuurlijk getal en kan vari¨eren van 2
grootte 1 tot grootte 5. Een product dat op een bepaalde dag binnenkomt, wordt opgeslagen in ´e´en of meerdere bins. In deze bins mogen geen andere producten opgeslagen worden zolang er nog producten liggen. Hierbij geldt ´e´en uitzondering: twee dezelfde producten die op dezelfde dag binnenkomen mogen wel bij elkaar in dezelfde bin gestopt worden, in alle andere gevallen dienen we gebruik te maken van een lege bin. Voor de uitvoer van de producten geldt het FIFO principe (First-In = First-Out). Dit houdt in dat de producten die het langste in het magazijn aanwezig zijn als eerste moeten worden geleverd. Aanvoer die bestaat uit meer dan ´e´en pallet mag onbeperkt worden opgesplitst in kleinere hoeveelheden. Daarnaast dient het magazijn zowel een ingang als een uitgang te bevatten. Voor elke bin dient tevens een ruimte aanwezig te zijn zodat een vorkheftruck ruimte heeft om de producten te verplaatsen. Wij zullen ons probleem beperken tot het geval van vierkante pallets met een vaste grootte.
3
Data
De invoer en de uitvoer is bekend over een periode van 100 dagen. Elke dag wordt gewerkt van ongeveer 6 tot 20 uur. De data loopt daarom over een tijdsbestek van 3600 sec * 14 uur * 100 dagen = 50400000 seconden. De data is opgesplitst in een aanvoerbestand en een uitvoerbestand. Beide bestanden hebben een gelijkwaardige opbouw met de volgende gegevens: • Tijdstip van levering/bestelling (in seconden vanaf dag 1, 0:00) • Tijdstip van levering/bestelling (werkelijke tijd, in minuten) • ProductID/artikelnummer van het product dat wordt geleverd of besteld(7 cijferige productcode) • De grootte van de levering/bestelling in pallets (positief reel getal) Het magazijn heeft daarnaast de volgende eigenschappen: • Elke pallet heeft een grootte van 1 bij 1 meter. • ”Voor” elke bin is een ruimte van 2 vierkante meter nodig om producten te kunnen verplaatsen. • De grootte van een bin kan vari¨eren van 1 tot en met 5 pallets. De aanvoer is gegeven in een txt-file en bestaat uit 22430 leveringen. De afvoer is ook gegeven in een txt-file en bestaat uit 39964 bestellingen.
4
Aanpak
Het probleem wordt aangepakt in twee delen. Omdat er veel data gegeven is over het distributiecentrum ligt in het derde kwartiel de nadruk op deze data. Er wordt geprobeerd een oplossing te vinden voor de dataset. Daarnaast zal er in het vierde kwartiel ook een model gemaakt worden waarbij de oplossing zo algemeen mogelijk blijft. Zo kunnen andere problemen van dezelfde aard ook worden opgelost. Om dit model te kunnen maken, wordt daarom eerst de data geanalyseerd. Uit deze data worden dan parameters geschat die dan in het model gestopt kunnen worden. 3
5
Data-analyse
Van het probleem is veel data gegeven, hierdoor is het dus lastig om alle data in ´e´en keer te analyseren. Daarom is de data-analyse opgesplitst in twee delen: de data-analyse per product en de algemene data-analyse.
5.1
Data-analyse: per product
We onderzoeken eerst de eerste twee deelvragen. Om een schatting van de grootte van een bestelling en de tussenaankomsttijd te kunnen maken wordt de geleverde data geanalyseerd. Om dit te kunnen doen zal er gekeken worden naar de aan- en uitvoer per product. Allereerst is de data van de aan- en uitvoer bij elkaar gevoegd tot ´e´en groot databestand. Dit bestand wordt dan gesorteerd op productnummer. Zo kan er per product het gemiddelde aantal pallets dat per levering aankomt en het aantal pallets dat per order wordt uitgevoerd berekend worden. Dit gemiddelde wordt berekend door van de aanvoer alle pallet-groottes bij elkaar op te tellen en te delen door het aantal aankomsten van dat product. Het gemiddelde voor de uitvoer wordt analoog berekend. Voor de variantie van de pallet-grootte wordt de volgende formule gebruikt: n
s2 =
1 X (xi − µ)2 n−1
(1)
i=1
In deze formule staat n voor het aantal leveringen/orders van dat product, xi voor de grootte in het aantal pallets dat per levering wordt aangevoerd of het aantal pallets dat per order wordt uitgevoerd. De µ in de formule is het gemiddelde aantal pallets dat per levering wordt aangevoerd of het aantal pallets dat per order wordt uitgevoerd. Uit deze berekeningen volgen dus vier parameters: de gemiddelde grootte en de variantie van een pallet die aankomt en de gemiddelde grootte en variantie van een pallet die wordt uitgevoerd. Deze parameters zullen worden gebruikt om de invoerparameters van de simulatie te schatten. Verder speelt ook de tijd een rol. Hiervan kan ook het gemiddelde en de variantie van de tussenaankomst- en tussenuitvoertijd berekend worden. Het gemiddelde van de tussenaankomsttijd wordt berekend door alle tijden tussen twee opeenvolgende aankomsten van ´e´en product bij elkaar op te tellen en te delen door het aantal aankomsten minus 1 (dat is dus het aantal tussenaankomsttijden). De variantie hiervan wordt ook weer met formule (2) berekend.
5.2
Data-analyse: algemeen
Naast de analyse per product is ook de volledige dataset onderzocht. Hierbij richten we ons op de derde en vierde deelvraag, waarbij we een beeld willen krijen hoeveel ruimte er daadwerkelijk nodig is. Om een goed beeld te krijgen van de data moet eerst het aantal producten worden bepaald. De complexiteit van dit proces is O(regels data ∗ aantal producten), wat binnen redelijke tijd kan plaatsvinden. Aan de hand van de data kunnen we nu een ondergrens en een bovengrens bepalen voor het aantal bins dat gedurende deze 100 dagen nodig is in het magazijn. We zullen twee bovengrenzen en twee ondergrenzen bepalen zodat we een idee krijgen van het totale aantal bins in het magazijn. De eerste ondergrens die we zullen bepalen is de beginsituatie. De geleverde dataset begint halverwege een proces en vertelt niets over de producten die op dat 4
moment in het magazijn aanwezig zijn. Aan de hand van een bestand waar we de aanvoer en uitvoer samen hebben gevoegd kunnen we bepalen welke producten een tekort hebben en dit tekort kunnen we gebruiken als beginsituatie. Dit tekort bepalen we als volgt: Doorloop het data bestand eenmalig voor elk artikel. Begin voor elk artikel met een initi¨ele situatie van 0 benodigde pallets. Doorloop vervolgens de data. Tel bij een aanvoer het aantal pallets bij dit getal op en trek bij een uitvoer het aantal pallets van dit getal af. Houdt na elke aan- of uitvoer van dit product bij hoeveel pallets er op dat moment in het magazijn liggen. Houdt van dit aantal het minimum bij (wat 0 is of een negatief getal). Zodra we het bestand hebben doorlopen, weten we de minimale waarde die wordt bereikt. De absolute waarde hiervan nemen we als beginsituatie voor dit product. Bij elkaar levert dit de volgende formule op: Aantal bins in beginsituatie =
AantalX producten
Ceil |min xi |
(2)
i=1
Hierbij rond ’Ceil’ het aantal bins af naar boven en stelt xi het benodigde aantal bins voor van product i. Bij dit proces moet worden opgemerkt dat er in de beginsituatie geen rekening wordt gehouden met het FIFO principe. Hier kunnen we ook geen rekening mee houden, omdat wij geen informatie beschikken over hoe de aanwezige producten zijn aangevoerd. De complexiteit voor het bepalen van de beginsituatie is afhankelijk van de grootte van het databestand en het aantal producten en zal eveneens in de orde O(regels data ∗ aantal producten) tijd in beslag nemen. De beginopstelling is geen goede ondergrens, daarom bepalen we nog een betere ondergrens. Hierbij maken wel gebruik van de beginopstelling. Het bestand wordt gesorteerd op tijd. Er wordt nu niet meer gekeken naar de aan- en uitvoer per product, maar alleen naar de tijd. Er wordt op elk tijdstip gekeken hoe groot het totaal aantal pallets is, dat in het magazijn ligt. Nadat het hele bestand doorlopen is wordt van deze aantallen pallets het maximum gekozen. Dan wordt er voor dit maximum bepaald, hoeveel pallets er voor ieder product aanwezig zijn. Deze aantallen worden afgerond, aangezien een bin een gehele grootte heeft. Deze afgeronde getallen, bins dus, worden bij elkaar opgeteld. Hierdoor ontstaat er een ondergrens voor het maximum aantal bins dat aanwezig is in het magazijn. Om een beter beeld te krijgen van het aantal bins in het magazijn worden er ook twee bovengrenzen bepaald. De eerste bovengrens wordt als volgt bepaald: Sorteer eerst het bestand op tijd en daarna op artikelnummer. Begin bij het eerste artikel en doorloop de tijd. Houdt na elke aan- of uitvoer bij hoeveel bins er aanwezig zijn van dat product. Als voor dat product de hele periode doorlopen is, is er dus een rij van getallen ontstaan van het aantal bins dat aanwezig was in het magazijn na elke aanvoer. Hiervan wordt het maximum genomen, wat we zullen doen voor alle producten. Zodoende ontstaat er voor alle producten een maximum aantal pallets. Als deze maxima bij elkaar opgeteld worden ontstaat onze bovengrens. Bij het bepalen van deze bovengrens hebben we rekening gehouden met het FIFO-principe: de producten die het eerst zijn geplaatst of in de beginsituatie aanwezig zijn 5
worden het eerste gebruikt om een bestelling te leveren. Deze bovengrens is natuurlijk een veel te grote bovengrens, aangezien niet alle maxima van het aantal bins op hetzelfde tijdstip aanwezig zijn. Daarom wordt er nog een bovengrens bepaald. Bij deze bovengrens wordt er ook rekening gehouden met het FIFO-principe en zullen we het volledige bestand doorlopen aan de hand van de tijd. We houden precies bij in welke hoeveelheden elk product aanwezig zijn in het magazijn en we zorgen ervoor dat elk levering in zijn eigen bin geplaatst is. Dit levert een veel nauwkeurigere bovengrens. We hebben hiervan het aantal bins tegen de tijd uiteengezet in de volgende grafiek over een periode van ongeveer 24 dagen.
Figuur 1: Een plot van het aantal benodigde bins t.o.v. de tijd. De zwarte lijn geeft de grootste waarde en dus de bovengrens aan. Elke stip geeft een tijdstip aan waar producten zijn aangevoerd. Na elke aanvoer zijn alle aanwezige bins omhoog afgerond en vervolgens bij elkaar opgeteld.
Enig punt waar we in dit geval nog geen rekening mee hebben gehouden is de uitzondering dat twee leveringen van ´e´en product op dezelfde dag nog niet bij elkaar worden gezet. Deze bovengrens kunnen wij in de toekomst daarom nog iets nauwkeuriger maken.
6
Resultaten
Voor de data-analyse hebben we een programma geschreven in zowel Java als Pascal. Deze keuze is bewust gemaakt omdat binnen het projectgroepje de ervaring met deze programmeertalen verdeeld lag. Eerst wordt de data uit de aan- en uitvoer samengevoegd tot ´e´en tekstbestand. Omdat vooraf het aantal producten dat zich in de data bevindt niet bekend 6
was, bepalen wij eerst dit aantal. Het blijkt dat er 198 verschillende producten aanwezig zijn. Controle op de aparte aan- en uitvoerbestanden geeft aan dat er zowel in de aanvoer als in de uitvoer 198 producten aanwezig zijn (wat een logisch resultaat is). Vervolgens bepalen we de beginopstelling. Het programma leest het tekstbestand in met alle aan- en uitvoer van alle producten die gesorteerd zijn op productnummer. De totale bingrootte van de beginsituatie in het magazijn is 432 bins. Hierbij is rekening gehouden met de verschillende producten door eerst de aantallen per product omhoog af te ronden en vervolgens pas op te tellen. Met andere woorden, als er alleen maar bins ter grootte ´e´en aanwezig zijn, dat moeten er minstens 432 bins in het magazijn klaarstaan. Zoals beschreven wordt ook de tweede ondergrens bepaald. Deze is gebaseerd op het moment dat de meeste pallets in het magazijn aanwezig zijn. Het blijkt dat die ondergrens 699 bins bedraagt. Verder berekent het programma wat het maximum aantal pallets per product is over de hele periode van 100 dagen. Door deze aantallen bij elkaar op te tellen krijgen we de eerste bovengrens. Deze bovengrens heeft een totale grootte van 1534 bins. De nauwkeurigere bovengrens, waarbij rekening is gehouden dat niet al deze maxima tegelijk optreden, bedraagt 809 bins (zie figuur 1). Met de laatst bepaalde bovengrens kunnen we een magazijn cre¨eren waarin alle bestellingen verwerkt kunnen worden. We kunnen 809 bins verdelen over 18 gelijke rijen met 45 artikelen per rij. Om 18 rijen met artikelen te maken hebben we 9 gangen nodig met elk 4 meter gangpad. Ook moet een middengang worden meegenomen van 4 meter breed, zodat het magazijn een ingang en uitgang heeft. In totaal komen we daarmee uit op een magazijn van 9 ∗ (4 + 2) = 54 bij 45 + 4 = 49 meter. Een schematische weergave van het magazijn is te vinden in figuur 2.
7
Figuur 2: Het magazijn met 810 bins. De middengang moet 4 meter breed zijn, alle gangen moeten 4 meter tussenruimte hebben en elke bin is 1 bij 1 meter groot.
Met het programma worden verder de gemiddeldes en de varianties berekend. Ook zorgt dit programma voor een uitvoer, die gebruikt kan worden om in Excel enkele grafieken te laten tekenen. In de volgende tabel zijn het aantal bestellingen, het gemiddelde en de variantie van het aantal pallets te vinden voor zowel de aanvoer als de afvoer. Er is gekozen om alleen de informatie van de eerste 10 producten weer te geven, aangezien de tabel voor alle 198 producten ongeveer 4 pagina’s in beslag neemt.
8
ProductID 3005501 3005510 3005512 3005520 3005521 3005710 3005801 7600101 7600401 7601801
7
Aanvoer Afvoer # Bestellingen Gemiddelde σ # Bestellingen Gemiddelde 72 0.5916 0.2979 997 0.0425 100 0.0528 0.0437 99 0.0533 67 1.3636 0.0 67 1.3636 100 0.0575 0.0017 100 0.0575 23 0.015 0.0 23 0.015 298 1.3889 0.1724 298 1.3889 130 5.778 2.8777 298 2.5 99 1.1602 0.58 611 0.1863 99 8.9519 4.4759 368 2.3965 132 2.0524 1.0301 462 0.5867 Tabel 1: Gemiddelde en Variantie eerste 10 producten
σ 0.0231 0.0437 0.0 0.0017 0.0 0.1724 0.3103 0.2725 3.0493 0.7136
Conclusie
Met behulp van data-analyse weten we dat er 198 verschillende soorten appels aanwezig zijn en wat per product de gemiddelde grootte is per aanvoer/afvoer en de variantie. We hebben een beginopstelling bepaald om te zorgen dat er geen tekorten optreden in de periode van 100 dagen. Deze beginopstelling bestaat uit 432 bins van 79 verschillende soorten producten. Ook hebben we een onder- en bovengrens bepaalt voor de grootte van het magazijn. De ondergrens bedraagt 699 bins van grootte ´e´en en de bovengrens 809 bins van grootte ´e´en. In het geval dat we alles in bins ter grootte 1 willen plaatsen hebben we in dit geval een magazijn nodig met een grootte van 54 bij 49 meter.
8
Toekomstplanning/wat nog te doen?
Momenteel hebben wij een bovengrens waarbij alles in een magazijn kwijt kan van 54 bij 49 meter. We hebben tot nu toe alleen bins ter grootte 1 gebruikt, we willen nog gaan kijken wat de invloed is op het magazijn van verschillende grootte bins. Hierbij zullen wij dus een oplossing moeten vinden die binnen deze al berekende magazijngrootte van 54 bij 49 meter valt. In het algemeen willen wij een formule opstellen die aan de hand van de lengte van het magazijn en een gegeven binindeling de totale benodigde ruimte bepaald. Verder zijn we van plan om nog wat verder te gaan met de data-analyse van de aan- en afvoer. Met deze informatie willen we dan een simulatie maken van de aanvoer en afvoer. Hieruit kunnen we dan de grootte van het magazijn bepalen, waarbij dan ook rekening is gehouden met variabelen in de toekomst.
9