Universiteit van Amsterdam Faculteit Economie en Bedrijfskunde
Het ontwerpen van robuuste netwerken Door: Imre van der Woude, 6148980 Bram de Vries, 6034101 Datum: 12-07-2012 Opleiding: Bachelor Econometrie en Operationele Research Studierichting: Operationele Research Begeleiders: Prof. dr. N.M. van Dijk (UvA) Dr. ir. J. van Doremalen (CQM) Ir. M. van den Broek (CQM)
Managementsamenvatting Winstmaximaliserende bedrijven verleggen hun aandacht steeds meer naar het optimaliseren van hun distributienetwerk. Zonder onzekerheid in de omstandigheden is dit al een complex proces. Er moet rekening worden gehouden met allerlei kosten, maar ook vele logistieke beperkingen. Er kan gegeven deterministische omstandigheden een optimaal netwerkontwerp gevonden worden, maar wenselijk is een ontwerp dat ook bestand is tegen enige onzekerheid. Een dergelijk ontwerp wordt robuust genoemd. In dit verslag is het dan ook de bedoeling geweest om robuuste ontwerpen te verkrijgen. Hierbij is gebruik gemaakt van een case. In deze case is uitgegaan van een aantal klanten, elk met een vraag naar hetzelfde product. Aan deze vraag moest uiteraard voldaan worden en de klanten moesten bediend worden door een distributiecentrum. Op de volgende vragen moest antwoord gegeven worden: Hoeveel distributiecentra moeten er geopend worden? Wat is de precieze locatie van deze distributiecentra? De antwoorden hierop hangen af van de vaste kosten per distributiecentrum, maar ook van de transportkosten tussen distributiecentra en klanten. In de toekomst zullen de vraag en de transportkosten uiteraard verschillen. Het is echter onmogelijk telkens weer een ontwerp te veranderen. Er is dus een ontwerp gezocht, waarbij de kosten zo laag mogelijk blijven na het optreden van bepaalde veranderingen in de gegevens op basis van onzekerheid. Het deterministische probleem is opgelost met methodiek uit de deterministische Operationele Research (dit wordt nader toegelicht in het verslag). Door middel van het optimalisatieprogramma AIMMS is het mogelijk geweest om dit model op te lossen. Het omgaan met onzekerheid is gedaan via Monte Carlo simulatie. De Monte Carlo simulatie is gedaan met behulp van het programma Crystal Ball. Door de koppeling van Crystal Ball en AIMMS zijn onzekerheden gesimuleerd, waarmee onderzoek is gedaan naar het effect van deze onzekerheden op bepaalde netwerkontwerpen. Op basis hiervan zijn er een aantal dingen bereikt: Er zijn ontwerpen gemaakt gegeven deterministische omstandigheden. Er zijn methoden bedacht voor het omgaan met onzekerheid bij het ontwerpen van een netwerk. Hierbij is gekeken naar ontwerpen met minimale kosten, maar ook ontwerpen op basis van criteria met betrekking tot robuustheid.
2
Inhoud 1 Inleiding ‐ 1.1 Achtergrond Supply Chain Management ‐ 1.2 Doelstellingen ‐ 1.3 Literatuuronderzoek
4
5
2 De case, de aanpak en de eindproducten ‐ 2.1 De case ‐ 2.2 Gebruikte middelen en methoden ‐ 2.3 De eindproducten
7
3 Het model ‐ 3.1 Het Weberprobleem ‐ 3.2 UFLP ‐ 3.3 AIMMS 4 Deterministische oplossing en gevoeligheidsanalyse ‐ 4.1 Aansluiting op de case ‐ 4.2 Deterministische oplossing ‐ 4.3 Best case/worst case analyse ‐ 4.4 Conclusies en vooruitblik
10
5 Onzekerheid: methoden en resultaten ‐ 5.1 Onzekerheid ‐ 5.2.1 Excel bestand ‐ 5.2.2 Algemene invoer en uitvoer ‐ 5.3 Scenario’s en eerste uitstap naar Monte Carlo simulatie ‐ 5.4 Methode A: kosteneffect ‐ 5.5 Methode B: optimaliseren gegeven meerdere onzekerheden ‐ 5.6 Methode C: optimaliseren naar aantal locaties ‐ 5.7 Methode D: robuustheid op basis van variantie ‐ 5.8 Conclusies
12
6 Conclusies
24
7 Dankwoord
24
Bijlage A: Literatuuronderzoek
25
Bijlage B: Basisdata
28
Bijlage C: AIMMS
29
Bijlage D: Gebruikte locaties en Excel bestand
31
Bijlage E: Handleiding Aimms/Crystal Ball
32
Bijlage F: Resultaten
37
3
1 Inleiding 1.1 Achtergrond Supply Chain Management Bedrijven streven over het algemeen naar winstmaximalisatie. In het verleden werd er voornamelijk geprobeerd om dit doel te bereiken met behulp van zo efficiënt mogelijke productie. Toen dit proces zo geperfectioneerd was dat er niet veel extra profijt meer mee te behalen was, moesten bedrijven op zoek naar een ander middel om de concurrentie voor te blijven. Deze zoektocht heeft velen gebracht naar het logistieke netwerk, oftewel de supply chain. Het logistieke netwerk kan gezien worden als de route die een product volgt vanaf het moment dat het gemaakt wordt, tot aan het moment dat het bij de klant aankomt. Hierbij kan gedacht worden aan de verplaatsing van een product langs onder andere fabrieken, distributiecentra, en doorverkopers. Men realiseerde zich dat hieraan nog veel te verbeteren viel. Hierbij kan gedacht worden aan het optimaliseren van bezorgroutes, of het zo kort mogelijk maken van de levertijd. Dit kan een complex proces zijn, aangezien een logistiek netwerk uit veel onderdelen kan bestaan. 1.2 Doelstellingen Aansluitend op de genoemde complexiteit krijgt een logistiek netwerk uiteraard te maken met onzekerheden. Er zijn veel factoren die een opgezet plan in de weg kunnen zitten. Hierbij kan worden gedacht aan interne factoren als menselijke fouten of kapotte machines. Ook kunnen externe factoren een probleem zijn. Voorbeelden hiervan zijn files, weersomstandigheden of extremere invloeden zoals natuurrampen of politieke conflicten. Bedrijven zijn dan ook logischerwijs op zoek naar een distributienetwerk dat bestand is tegen enige onzekerheid. Een dergelijk netwerk wordt ook wel robuust genoemd. Een netwerk kan natuurlijk niet op elk mogelijk scenario voorbereid zijn, maar het blijft een interessante vraag hoe een bepaald netwerk reageert op een schok en in het verlengde daarvan of een netwerk ingericht kan worden om bepaalde onzekerheden aan te kunnen. Onze doelstellingen voor dit onderzoek waren dan ook:
1. Laten zien dat er methoden zijn om onzekerheden te verwerken in een model horende bij een logistiek netwerkmodel. 2. Inzicht geven in hoe een dergelijk model reageert op de onzekerheden. 3. Onderzoeken wat er mogelijk is qua ontwerp van een netwerk, opdat het tegen bepaalde schokken bestand is.
1.3 Literatuuronderzoek Een zoektocht naar literatuur omtrent dit onderwerp leverde drie mogelijke soorten artikelen. De verdeling is gemaakt in de deterministische methodiek, de stochastische methodiek en artikelen waarbij de koppeling tussen de deterministische optimalisatiesoftware en Monte Carlo simulatie centraal staat. Over dit laatste onderwerp is niets gevonden. Naar de artikelen over de deterministische methodiek en de artikelen over de stochastische methodiek zal in de desbetreffende hoofdstukken van dit verslag worden verwezen.
4
2 De case, de aanpak en de eindproducten 2.1 De case Het onderzoek is uitgevoerd aan de hand van een illustratief model horende bij een bedrijf in Nederland dat één product aan 90 klanten levert. Naar al deze klanten moet per twee jaar een aantal ritten gemaakt worden. Dit aantal ritten wordt in het vervolg beschouwd als de vraag per klant en zal de basisdata genoemd worden. Deze gegevens zijn geleverd door het bedrijf CQM. Deze data is te vinden in Bijlage B. Het in de eerste regel genoemde bedrijf wil een aantal distributiecentra in Nederland openen. De vraag hierbij is hoeveel distributiecentra er moeten komen en waar hun precieze locatie zal zijn. Hierbij moet voor het onderzoek rekening worden gehouden met de bijbehorende kosten; wanneer zijn deze laag en wanneer variëren deze niet veel gegeven toekomstige onzekerheid? De kosten bestaan hierbij uit twee factoren: -
-
De transportkosten van klant j naar locatie i. Deze zullen te maken hebben met de afstanden tussen klanten en locaties, evenals de vraag per klant en de benzineprijs per kilometer. Deze is in eerste instantie vastgesteld op €1. De vaste kosten voor het openhouden van een distributiecentrum per twee jaar. Deze zijn vastgesteld op €50.000.
Des te meer distributiecentra er worden geopend, des te minder transportkosten er zijn. Er zullen natuurlijk wel meer vaste kosten zijn. In eerste instantie is er een deterministische oplossing voor dit model berekend. Vervolgens is er gekeken naar de rol van onzekerheid. Er is Figuur 2.1: Nederland gekeken naar onzekerheid in de vraag en er is gekeken naar onzekerheid in de benzineprijs. Hierbij is er een aantal aannames gemaakt: ‐
De hemelsbrede afstand tussen een distributiecentrum en een bepaalde klant is ook de werkelijke bezorgafstand.
‐
Een klant wordt maar gekoppeld aan één distributiecentrum.
‐
De distributiecentra hebben niet te maken met capaciteitsbeperkingen.
2.2 Gebruikte middelen en methoden In het eerste onderdeel van dit onderzoek is het van belang geweest om de deterministische oplossing te kunnen genereren voor het gekozen model. Welk model dit is wordt beschreven in het volgende hoofdstuk. Dit model oplossen is gedaan via het softwareprogramma AIMMS. Met AIMMS zijn ook enkele methoden voor het omgaan met onzekerheid uitgevoerd Het werken met onzekerheid is in het tweede deel van dit onderzoek met Monte Carlo simulatie gedaan. Dit is op de volgende manieren gebeurd:
5
‐
Gevoeligheidsanalyse: de gevoeligheidsanalyse is aan de hand van scenario’s uitgevoerd en bestond uit het met de hand variëren van de gegevens en onderzoeken hoe een (optimaal) ontwerp verandert.
‐
Monte Carlo simulatie: Monte Carlo simulatie is het herhaaldelijk trekken van waarden uit een kansverdeling via een computerprogramma, om deze bij elke trekking als data voor een model te gebruiken. Als dit een groot aantal keren wordt herhaald en de uitkomsten van het model in een bepaald interval worden bijgehouden en geplot in een grafiek dan zal deze grafiek, mits de trekking groot genoeg is en de intervallen klein genoeg, op een kansverdeling gaan lijken. Deze verdeling kan discreet of continu zijn. Het computerprogramma dat hiervoor gebruikt is, is de invoegtoepassing Crystal Ball voor Microsoft Excel. Crystal Ball is vervolgens gekoppeld aan AIMMS (hierover later meer). Met Crystal Ball kunnen uit verschillende verdelingen trekkingen gedaan worden en kunnen onzekerheden volgens veronderstelde werkelijkheid worden nagebootst. Elke situatie komt in verhouding dus een op werkelijkheid gebaseerd aantal keren voor.
Met behulp van Monte Carlo simulatie is op verschillende manieren meer inzicht gegeven in het omgaan met onzekerheid. Er zijn hiervoor een aantal methoden gebruikt, die verderop in het verslag nader toegelicht zullen worden. 2.3 De eindproducten De eindproducten zullen duidelijkheid verschaffen over een aantal aspecten met betrekking tot robuustheid in een netwerk locatieprobleem. Er wordt een optimaal ontwerp voorgedragen voor een instructief netwerkmodel. Er wordt inzicht verschaft over mogelijke effecten van onzekerheden in robuustheid van een netwerkontwerp. Er wordt een aantal methoden voor onzekerheidsanalyse gekoppeld aan het instructieve model geleverd op basis van gevoeligheidsanalyse met AIMMS en Monte Carlo simulatie.
6
3 Het deterministische model: wiskundige formulering 3.1 Het Weberprobleem Er moest dus een model gevonden worden waarmee de case behandeld kon worden. Het besproken probleem lijkt in de deterministische situatie op het Weberprobleem. Bij het Weberprobleem is er een n aantal punten (met index j) met elk een locatie. Er zijn ook m andere punten (met index i) met elk een nog vast te stellen locatie. Hierbij is m kleiner dan n. Nu moeten de m locaties worden gevonden zodat de som van de afstanden van alle n vastgestelde punten naar het dichtstbijzijnde punt van alle m nog te bepalen punten zo klein mogelijk is. Als vaste kosten per de m geopende locatie en gewicht (vraag) voor alle n locaties aan het probleem worden toegevoegd, dan ziet de wiskundige formulering er voor deze toepassing van het Weberprobleem als volgt uit: m
n
2 2 Min F m zij d j (a j xi ) (b j yi ) x , y ,m
i 1 j 1
m
S .t .
z i 1
ij
1, j
z ij {0 ,1} Met: F : zij :
de vaste kosten per geopende locatie; een binaire variabele die aangeeft of locatie i aan locatie j gekoppeld wordt.
a j en b j : de coördinaten van de n vaste punten; xi en yi : de coördinaten van de m te bepalen punten;
De eerste restrictie zorgt er hier voor dat elk van de n locaties aan één van de m locaties gekoppeld wordt. Als dit wordt vergeleken met de case zijn er overeenkomsten. Zo representeren de vectoren x en y respectievelijk de breedtegraden en lentegraden van de distributiecentra die in de case moesten worden gevonden. Verder representeren de vectoren a en b respectievelijk de breedtegraden en lengtegraden van de locaties van de klanten die in de case worden genoemd. Ook kunnen de vaste kosten zoals getoond gemakkelijk worden opgenomen in de criteriumfunctie. Er is echter een wezenlijk verschil tussen het Weberprobleem en de case die behandeld moest worden: m staat bij het Weberprobleem al vast en in de case moet ook naar m worden geoptimaliseerd. Als het Weberplobleem op te lossen is, is het in ieder geval mogelijk om verschillende aantallen van m te vergelijken en zo alsnog optimale hoeveelheden en de locaties van de distributiecentra te bepalen, zoals besproken in de case. De criteriumfunctie geeft echter al genoeg reden om voor een ander probleem te kiezen. Met de optimalisatiemethodiek “impoving search” wordt er namelijk alleen een globaal minimum gevonden als de criteriumfunctie concaaf is. In dit geval is de criteriumfunctie een som. Een som van convexe functies is wederom convex en een som van concave functies is wederom concaaf. Nu is het deel
(a j xi ) 2 (b j yi ) 2 een convexe functie. Hieruit volgt dat er
slechts locale minima gevonden kunnen worden. Het is dus te moeilijk om afstanden naar plekken te optimaliseren, als deze plekken overal kunnen zijn; een continu model werd te complex voor de doeleinden van dit onderzoek. 7
3.2 UFLP Er moest dus een ander model worden gebruikt, waarmee de locatie van en de hoeveelheid distributiecentra konden worden gevonden. Het Uncapacitated Facility Location Problem (UFLP) is een model dat discreet is en bovendien het aantal distributiecentra bepaalt. Bij het UFLP zijn er n kandidaat locaties op plekken die vaststaan. Verder zijn er weer m locaties voor de klanten. Aangezien de kandidaat locaties al vaststaan, zal er niet geoptimaliseerd worden naar een bepaalde locatie en zijn de afstanden van de klanten naar de kandidaat locaties al gegeven, waardoor er naar een lineaire functie wordt geoptimaliseerd. De kandidaat locaties hebben de index i gekregen en staan aan of uit Figuur 3.1: kandidaat locaties bij een UFLP probleem De criteriumfunctie die het UFLP minimaliseert bestaat uit twee onderdelen. Allereerst is er de som van de afstanden van de klant naar de kandidaat locatie die deze klant bedient. Deze som is genomen over alle klanten. Hierbij wordt het product van het aantal kandidaat locaties dat aan staat en de vaste kosten F opgeteld. De wiskundige formulering van het UFLP ziet er als volgt uit: n
n
m
Min F yi cij p xij x, y
i 1
i 1 j 1
S .t. n
x i 1
ij
d j , j
xij D yi , i, j yi {0,1} Met: xij : een variabele die aangeeft of locatie i aan klant j gekoppeld wordt. Deze variabele is of n nul, of de vraag van klant j; yi : een binaire variabele die aangeeft of locatie i in het model gebruikt wordt; F : de vaste kosten per geopende locatie; c i j : de kosten voor levering van locatie i naar klant j;
p : de benzineprijs per kilometer; d j : de vraag per klant j; D : de som van alle d j ' s . De eerste restrictie geeft aan dat elke klant maar door één locatie bediend wordt. De tweede restrictie houdt in dat een klant alleen door een locatie bediend wordt als die locatie ook echt gebruikt wordt. Als dit model wordt opgelost met Branch and Bound is de tweede restrictie relatief complicerend, aangezien D een groot getal kan zijn. Dit zou betekenen dat het lang
8
zou kunnen duren om een oplossing te genereren. Er kan ook anders naar xij worden gekeken. Zo kan deze variabele ook aangeven of klant j wel of niet door kandidaat locatie wordt bediend. Doordat ervan wordt uitgegaan dat de afstand van een klant naar een bepaalde kandidaat locatie nooit even groot is als de afstand van die klant naar een andere kandidaat locatie, geeft het aantal leveringen evenveel informatie als de informatie over het wel of niet leveren. Nu wordt xij dus een binaire variabele. Het aantal leveringen moet nu worden * vermenigvuldigd met c ij Dit wordt nu aangegeven met c ij . De wiskundige formulering komt er nu als volgt uit te zien:
n
n
m
F y c
Min x, y
i 1
i
i 1 j 1
* ij
p xij
S .t. n
x i 1
ij
1, j
xij yi , i, j
xij , yi {0,1} De restrictie dat xij binair moet zijn zal automatisch gaan. Een klant wordt altijd gekoppeld aan de dichtstbijzijnde operationele faciliteit. Dit kan alleen mis gaan als twee locaties zich op precies dezelfde afstand van een klant bevinden. Om de oplossing sneller te genereren, wordt de restrictie wel aangegeven. Er kan ook gebruik worden gemaakt van de restrictie dat het aantal kandidaat locaties dat aan staat, een bepaalde waarde b heeft. Die restrictie ziet er dan als volgt uit: n
y i 1
i
b
3.3 AIMMS
Het is uiteraard onmogelijk om het hiervoor besproken model met de hand op te lossen, zeker als het niet bij kleine n en m blijft. Er moest dus een programma gevonden worden waarmee het genereren van een oplossing van dit model snel uitgevoerd kan worden. Een snel en handig computerprogramma dat optimalisatieproblemen oplost is AIMMS. In dit programma kunnen lineaire en een aantal niet-lineaire optimalisatieproblemen worden opgelost. Ook kan in AIMMS worden aangegeven met behulp van welke methode de oplossing gevonden moet worden. Hierin kan bijvoorbeeld onderscheid worden gemaakt tussen lineaire en niet-lineaire optimalisatiemethoden, wat in het geval van deze case dus zeer handig is gebleken. De Solver die is gebruikt om dit probleem op te lossen is CPLEX 12.4.
9
4 Deterministische oplossing en gevoeligheidsanalyse 4.1 Aansluiting op de case
De case lijkt op het UFLP zoals hierboven beschreven. F zijn hierbij de vaste kosten voor het openen van een distributiecentrum van €50.000. Er is gebruik gemaakt van de tweede modelformulering, waarbij c i*j op deze manier is gedefinieerd: (Afstand van faciliteit i naar klant j) (Aantal ritten dat naar klant j gemaakt moet worden) (Benzineprijs per kilometer). Deze kosten zijn gebruikt als de transportkosten. De afstanden tussen klanten en faciliteiten zijn via GPS-coördinaten berekend met de stelling van Pythagoras. Bij het UFLP kunnen de distributiecentra slechts op een beperkt aantal locaties terecht kunnen komen, in plaats van overal door Nederland. Het zou echter onrealistisch zijn geweest om ervan uit te gaan dat de distributiecentra overal konden worden geplaatst. Vaak kunnen de distributiecentra slechts op een beperkt aantal plekken door het land worden geplaatst, waardoor de case goed aansloot op het UFLP. De kandidaat locaties in het UFLP zijn dan de plekken in het land geweest waar eventueel een distributiecentrum kan worden geopend. Er is nog één probleem wat opgelost moest worden voordat het UFLP kon worden gebruikt om de case op te lossen. Aangezien de locaties van de klanten in GPS-coördinaten werden geleverd en de transportkosten in kilometers moesten worden gemeten, moesten de coördinaten worden omgerekend naar kilometers. Een breedtecoördinaat is als volgt omgerekend. Het aantal graden in een ronde is 360. Eén graad naar rechts of links is dus de omtrek van de aarde op die positie gedeeld door 360. De lengtegraden van Nederland zijn grofweg 52 graden. Het één graad naar het oosten of westen gaan in Nederland is dus ongeveer: Cos(52 graden) (Omtrek aarde rond evenaar)/360 = 68 kilometer. Op dezelfde manier kan, uitgaande van een breedtegraad van Nederland van grofweg 5 graden, berekend worden dat één graad naar het noorden of zuiden in Nederland ongeveer 111 kilometer is. De case is in de deterministische situatie opgelost met het UFLP, waarbij dus gebruik is gemaakt van Aimms. Dit model is ook gebruikt bij het omgaan met onzekerheid. 4.2 Deterministische oplossing
Eerst is er dus gekeken naar het deterministisch optimale ontwerp gegeven de aangeleverde basisdata. Er is hierbij uiteraard nog geen enkele vorm van onzekerheid in het model geplaatst. In Bijlage C zijn afbeeldingen te vinden van in- en uitvoer van AIMMS. Op basis van de basisdata heeft Aimms de locaties 12, 17 en 19 als optimaal bestempeld. Dit ontwerp is te zien in figuur 4.1. Hierbij horen kosten van €346.340,50. In de onderstaande tabel is de allocatie te vinden die bij dit ontwerp hoort. Locatie 12 17 19
Klanten 44, 69 t/m 99 28, 29, 33 t/m 35, 37 t/m 42, 45 t/m 68 10 t/m 27, 30 t/m 32, 36, 43
Tabel 4.1: allocatie deterministische oplossing
10
Figuur 4.1: optimaal deterministisch ontwerp
Deze resultaten zijn in principe fictief, maar ze tonen wel een aantal dingen aan. Het is namelijk gebleken dat het met AIMMS mogelijk is om netwerkproblemen van deze grootte met behulp van het UFLP op te lossen. Ook is er een ontwerp bepaald met redelijk logische locaties in het midden van Nederland, wat in het voordeel spreekt van het UFLP. In het vervolg is vaak gewerkt met toepassingen op deze basisdata, dus dit ontwerp is iets om in het achterhoofd te houden. 4.3 Best case/worst case analyse
Er is vervolgens een best case/worst case analyse uitgevoerd. Deze analyse is uitgevoerd op basis van een zowel positieve als negatieve verandering van het aantal ritten per klant van beiden 30 procent. Gegeven deze nieuwe aantallen ritten is met AIMMS vervolgens een bijbehorende optimale oplossing berekend. Voor een groei van 30 procent kwam dit neer op hetzelfde ontwerp als dat horende bij het deterministische ontwerp, met kosten van €405.242,60. Voor de daling van 30 procent bepaalde Aimms dat één locatie optimaal was, namelijk de locatie uit figuur 4.2. Hierbij hoorden kosten van €271.214,50. 4.4 Conclusies en vooruitblik Figuur 4.2: Optimale oplossing best case Er is gebleken dat er aardig wat te bereiken is op het gebied van robuust ontwerpen met behulp van best case/ worst case analyse. De beschikking over optimalisatiesoftware zoals AIMMS levert een krachtig gereedschap om veranderingen in de parameters snel door te rekenen, waarbij het UFLP probleem geloofwaardige ontwerpen levert als er geen capaciteitsbeperkingen in het model opgenomen zijn. Er kan een verwacht optimaal ontwerp berekend worden en vervolgens kan dit ontwerp getest worden op robuustheid door het door te rekenen van veranderingen in de gegevens. Dit zou in theorie voor grotere modellen kunnen gebeuren dan voor dit onderzoek het geval is geweest. Er is voor dit onderzoek ook gewerkt met scenarioanalyse. Dit is normaal gesproken een meer deterministische aanpak van robuust ontwerpen, maar omdat de analyse in dit geval uitgevoerd is samen met Monte Carlo simulatie zullen de resultaten hiervan in het volgende onderdeel worden besproken. In bijlage A is er een samenvatting te vinden van eerder verschenen literatuur over scenarioanalyse.
11
5 Monte Carlo simulatie: methoden en resultaten 5.1 Onzekerheid
Er is nu laten zien hoe een deterministisch model kan worden opgelost. Verder is er met intuïtieve gevoeligheidsanalyse aangetoond hoe op bepaalde schokken gereageerd wordt door een model. Deze schokken zijn echter niet gebaseerd op een bepaalde weging. Kansverdelingen van de verwachte toekomst hebben geen rol gespeeld. Het was dus van belang om een methode te vinden/ontwikkelen, die met kansverdelingen kan werken en zo een ontwerp kan geven dat robuust of optimaal is. Er moest verder worden gewerkt met verschillende vormen van onzekerheid. Hierbij is uitgekomen op Monte Carlo simulatie in Crystal Ball. Bij Monte Carlo simulatie wordt er per trekking “gedobbeld” over verschillende waarden uit een kansverdeling. Deze waarden worden als variabele parameters voor een model ingevoerd, waarna op basis van die parameters een oplossing wordt gegenereerd. Als er nu “veel” trekkingen worden uitgevoerd, dan zal de veronderstelde werkelijkheid worden nagebootst. Het is mogelijk gebleken om Crystal Ball te koppelen aan AIMMS. Daarover is meer te vinden in bijlage E. Hierdoor is het mogelijk geweest om voor elke trekking van de simulatie de optimale oplossing met AIMMS te vinden, gegeven die trekking.
Figuur 5.1: dobbelen met Crystal Ball
Met behulp van Monte Carlo simulatie kan er op verschillende manieren omgegaan worden met onzekerheid. Eerst is er op basis van door CQM geleverde scenario’s Monte Carlo simulatie uitgevoerd. Verder zijn er, zoals eerder genoemd, vier methoden gebruikt om te laten zien hoe met onzekerheid kan worden omgegaan.
Methode A (Kosteneffect): Een bepaalde deterministische verdeling van distributiecentra aan schokken blootstellen.
Methode B (Optimalisatie gegeven meerdere factoren van onzekerheid): Onzekerheden simuleren en daarbij de beste verdeling van distributiecentra bepalen.
Methode C (Optimalisatie met Monte Carlo simulatie naar één variabele): Het constant houden van één variabele en de andere simuleren om zo in te zien welke verdeling van distributiecentra de laagste kosten met zich meebrengt.
Methode D (Robuustheid op basis van variantie): Het bepalen van een robuust ontwerp op basis van kostenverdelingen, die verkregen zijn door simulatie onder een vast ontwerp. 12
Nadere beschrijvingen en resultaten van alle simulatietoepassingen zullen later in dit hoofdstuk beschreven worden. Eerst volgt er een beschrijving van de gebruikte middelen voor de simulaties. 5.2.1 Excel Bestand
Eerst zal kort de inhoud van het voor de simulaties gebruikte Excel Bestand toegelicht worden. In Bijlage D is een afbeelding van (een deel van) dit bestand te vinden. Helemaal bovenin staan de gegevens over de klanten; dit zijn hun locaties en het aantal keer dat zij bezocht moeten worden. Waarom dit laatste er drie keer staat wordt later duidelijk. Het getal achter Factor zal gebruikt worden voor de simulaties. Links bij Faciliteit staan de locaties van de mogelijk te openen distributiecentra. Afbeeldingen met de gebruikte aantallen mogelijke locaties (10 en 21) zijn ook te vinden in bijlage D. De precieze locaties van deze faciliteiten zijn te vinden in Bijlage B. Naast Kosten per km staan de variabele kosten per kilometer die een product vervoerd wordt. In de tabel bij Transportkosten staan de kosten die benodigd zijn om het gegeven aantal ritten van klant j naar distributiecentra i uit te voeren, eerder c i*j genoemd. De afstanden tussen de klanten en distributiecentra zijn zoals bekend berekend met behulp van de getallen bij Breedte en Lengte. De minimale kosten en het optimale aantal locaties gegeven bepaalde data komen te staan onder Uitkomst en Locaties, nadat ze door Aimms berekend zijn. Van dat bepaalde ontwerp komen dan ook de koppelingen tussen de gebruikte distributiecentra en hun klanten onder Allocatie te staan. Rechts daarvan wordt onder Totaal het aantal geleverde klanten per distributiecentrum weergegeven. Weer rechts daarvan bij Aan/Uit, is dit gegeven vertaald naar een binaire cel die aangeeft of een faciliteit gebruikt wordt of niet. Wanneer de cel in de rij van een faciliteit een 1 bevat betekent dit dat deze faciliteit in het desbetreffende ontwerp gebruikt wordt. 5.2.2 Algemene invoer en uitvoer
Voordat de verschillende gebruikte methoden toegelicht worden, zullen eerst de algemene inen uitvoer van de simulaties beschreven worden. Opmerking: als er wordt aangegeven dat een bepaalde grootheid (bijvoorbeeld kosten per km) is gebruikt als Assumption of Forecast, dan wordt bedoeld dat de cel met de waarde horende bij die grootheid als zodanig gedefinieerd is. Er is vanuit verschillende soorten vraagveranderingen gewerkt, elk met eventueel onzekerheid in andere kosten daarnaast. De Monte Carlo simulatie is gebruikt voor een genuanceerdere aanpak ten aanzien van het inbrengen van onzekerheid in het model. In totaal zijn hierbij de onderstaande Assumptions in Crystal Ball gebruikt. Opgemerkt dient te worden dat niet alle Assumptions bij elke methode gebruikt zijn. De gebruikte Assumptions zijn: -
-
Kosten per km: een driehoeksverdeling met minimale waarde 0.9, meest waarschijnlijke waarde 1.05 en maximale waarde 1.4. Aantal ritten: voor elke klant heeft het aantal ritten een lognormale verdeling gekregen, waarbij zowel het gemiddelde als de standaardafwijking het aantal ritten uit de basisdata zijn. Factor: de factor waarmee de hele vraag vermenigvuldigd wordt heeft in bepaalde gevallen een normale verdeling gekregen met ondergrens 0, gemiddelde 1 en standaardafwijking 1. In andere gevallen is er gewerkt met een lognormale verdeling met gemiddelde 1 en standaardafwijking 0,5.
13
Uiteraard worden de laatste twee Assumptions nooit tegelijk gebruikt. De eerste wordt gebruikt wanneer er wordt gesimuleerd dat iedere klantvraag een aparte verdeling heeft. De tweede wordt gebruikt wanneer de totale vraag een verdeling heeft. In het vervolg zal worden aangegeven bij welke methode welke Assumptions gebruikt worden. Forecasts zijn cellen die bij dit onderzoek wel bij elke methode gebruikt (kunnen) worden. Dit zijn de cellen waarvan tijdens de simulatie gegevens bijgehouden worden zodat er uiteindelijk onder andere een gemiddelde en een standaardafwijking door Crystal Ball kunnen worden berekend, gegeven de uitkomsten van de verschillende trekkingen. De Forecasts die zijn gebruikt: -
Uitkomst Aantal locaties Alle cellen onder Totaal. Dat wil zeggen: alle cellen die aangeven hoeveel klanten de mogelijke locaties bedienen.
5.3 Scenario’s en eerste uitstap naar Monte Carlo simulatie
Op basis van drie aangeleverde scenario’s met betrekking tot toekomstige vraag is er een gemiddelde toekomstige vraag berekend. Dit is gedaan op basis van het feit dat elk scenario een kans van 1/3 had op voorkomen. Bij de scenario’s werd aangegeven dat de kosten per kilometer de beschreven driehoeksverdeling hebben. Deze Assumption is ingevoerd in Crystal Ball, waarna er Monte Carlo simulatie is uitgevoerd. Ook zijn de drie verschillende scenario’s op deze manier apart doorgerekend. Dit alles is gedaan met 21 mogelijke locaties. Op basis van een Monte Carlo simulatie van 2000 trekkingen die uitging van het gemiddelde van de drie scenario’s, is naar voren gekomen dat in 1614 trekkingen drie locaties optimaal waren. Dit zijn weer de locaties uit figuur 4.1. Definities van robuustheid in de gevonden literatuur geven aan dat een ontwerp robuust is als het onder elk scenario niet veel slechter presteert dan het gekozen ontwerp. Dit komt ook terug in dit resultaat. Alle drie de scenario’s zijn apart doorgerekend en daarbij waren de gevonden locaties steeds optimaal of bijna optimaal. Dit is ook terug te vinden in Bijlage F. Om de prestatie van dit ontwerp te testen gegeven de onzekerheid in de benzineprijs, is het ontwerp vastgezet in Aimms. Dit houdt in dat de variabele y is omgezet in een parameter z waarbij locaties 12, 17 en 19 altijd in gebruik zijn en de rest niet. Vervolgens is er weer een Monte Carlo simulatie uitgevoerd op dit vastgestelde ontwerp, gegeven de gestelde onzekerheid in de kosten per kilometer. De gemiddelde kosten die bij dit ontwerp horen zijn €359.635,32 met een standaardafwijking van €19.834,83. Een uitgebreider verslag van deze uitkomst is te vinden in Bijlage F. 5.4 Methode A: kosteneffect
Methode A is de methode die de deterministische oplossing heeft getoetst onder onzekerheid. Daarvoor is eerst het deterministisch bepaalde optimale ontwerp bepaald. Bekeken moest worden hoe dit ontwerp onder onzekerheid presteert. Dit is gedaan met Monte Carlo simulatie op het vastgezette deterministische ontwerp. Er is naar twee types onzekerheid gekeken. De eerste is onzekerheid op elke vraag. De vraag is daarbij in elke regio aan onzekerheid onderhevig geweest, onafhankelijk van de vraag in de andere regio’s. De verdeling waaraan de vraag van elke klant onderhevig is geweest, is een lognormale verdeling. Deze verdeling werd gekozen als illustratief voorbeeld, maar er moest wel rekening worden gehouden met het feit dat een vraag niet negatief kan zijn. De verdelingsfunctie moest dus een kans nul hebben op een waarde kleiner dan nul, wat voor de lognormale verdeling geldt. Het gemiddelde dat bij deze methode is gehanteerd bij onzekerheid op elke vraag, is de vraag uit de basisdata. In
14
eerste instantie werd als standaard deviatie gekozen voor een tiende deel van het gemiddelde, maar dan was de variatie in de ontwerpen zeer gering en dus niet interessant om te onderzoeken. De gekozen standaard deviatie is gelijk aan het gemiddelde gekozen. Het tweede type onzekerheid is de onzekerheid op de benzineprijs. De onzekerheid op de benzineprijs heeft hetzelfde effect als onzekerheid op de gehele vraag, waarbij de verhoudingen van de vraag per regio hetzelfde blijven als in de basisdata. Dit komt door de eerder beschreven berekening van de transportkosten. In beide gevallen wordt de vraag vermenigvuldigd met een bepaalde factor, waardoor de verhoudingen tussen de individuele klantvragen gelijk blijven. Ook bij de benzineprijs (die nooit negatief kan zijn) is bij methode A van onzekerheid uitgegaan van een lognormale verdeling. De benzineprijs is in het deterministische model gelijk aan één. Daarom is gekozen voor een gemiddelde van tevens één. De standaard deviatie is 0,5. In AIMMS werd geoptimaliseerd naar de variabele x, die aangeeft welke klant door welk distributiecentrum wordt bediend. Als x vastligt, ligt de variabele y die aangeeft welke kandidaat locaties aanstaan ook vast. Een ontwerp vastzetten is in dit geval dus gebeurd door in AIMMS van de variabelen x en y parameters te maken en deze in te laten lezen vanuit Excel. Daarmee zijn de restricties overbodig geworden en konden deze dus verwijderd worden. Door met Monte Carlo simulatie op of elke vraag of de benzineprijs onzekerheid te laten werken, kregen de transportkosten bij elke trekking dus een andere waarde. Deze transportkosten werden door AIMMS ingelezen en er werden kosten uitgerekend. Doordat dit met Crystal Ball voor 1000 trekkingen uitgevoerd is, is er een kostenverdeling ontstaan van de kosten in een veronderstelde werkelijkheid. Figuur 5.2: optimaal deterministisch ontwerp In methode A is uitgegaan van tien kandidaat bij 10 mogelijke locaties locaties. Het optimale ontwerp ziet er dan in de deterministische situatie uit zoals aangegeven in figuur 5.2. In dit ontwerp staan de kandidaat locaties 3 en 9 aan. De gemiddelde kosten bij het deterministische ontwerp bij onzekerheid op elke vraag zijn uitgekomen op €376.700,10. De standaard deviatie is hierbij €43.690,47. De gemiddelde kosten bij onzekerheid op de brandstofprijs kwamen uit op €358.737,88 met een standaardafwijking van €129.365,46. In Bijlage F zijn meer gegevens over het ontwerp te vinden, waaronder de kostenverdelingen. Het verschil in standaard deviatie is groot, maar wel gemakkelijk te verklaren. In het geval er onzekerheid op elke vraag is, is de kans heel klein dat alle individuele vragen altijd samen toenemen of samen afnemen. Dit is echter in het geval van onzekerheid in de brandstofprijs altijd het geval. De toename bij de ene klant zal de afname bij de andere klant vaak een beetje opheffen in het geval van onzekerheid op elke vraag. Indien geen ontwerp vast wordt gezet, zijn de gemiddelde kosten bij onzekerheid op elke vraag €368.115,25 en bij onzekerheid op de brandstofprijs €346.890,99. Dit is dus een ondergrens voor de kosten bij een bepaald ontwerp. De kosten zitten er in beide gevallen van onzekerheid ongeveer €9.000 vanaf en dus zijn deze ontwerpen al zeer behoorlijk, als er alleen naar gemiddelde kosten wordt gekeken.
15
5.5 Methode B: optimaliseren gegeven meerdere onzekerheden
Ook hier is gewerkt met 21 mogelijke locaties. Bij deze methode is het ontwerp dus volledig vrij gelaten en is er met behulp van Crystal Ball en Aimms geoptimaliseerd gegeven onzekerheid op zowel de individuele vraag per klant als de kosten per kilometer. Beide Assumptions zijn voor deze methode gedefinieerd in Crystal Ball en vervolgens is er een Monte Carlo simulatie uitgevoerd. Uit deze simulatie is naar voren gekomen dat in 1300 van de 2000 trekkingen het aantal van drie locaties optimaal is gegeven deze onzekerheid. Dit is ook te zien in het histogram in figuur 5.3. Nu rest nog de vraag welke drie locaties het meest voorgekomen zijn. Om dit uit te zoeken is gekeken naar de Forecasts van de aantallen klanten per mogelijke locatie. Voor alle locaties die op een zeker moment in de simulatie een aantal klanten heeft bediend zijn deze gegevens opgeslagen en verwerkt in figuur 5.4. Frequentie aantal locaties 1400 n e g n ik k e tr l a t n a A
1200 1000 800 600 400 200 0 1
2
3
4
Aantal locaties
Figuur 5.3: histogram aantal locaties Methode B
Figuur 5.4: gebruikte locaties en aantallen bediende klanten
Links in deze figuur staan nog een keer de gegevens uit het eerder vertoonde histogram. Daarnaast staan onder locaties alle mogelijke locaties die operationeel zijn geweest tijdens de
16
simulatie. Naast de locaties staan de aantallen klanten die zij op zekere momenten tijdens de simulatie hebben bediend en daarnaast staat het aantal trekkingen dat de desbetreffende locatie dat bepaalde aantal klanten heeft bediend. Vervolgens is op basis van deze gegevens bepaald welke locaties het meest voorgekomen zijn. Kijkend naar het geval van drie locaties moeten er dus in de kolom onder klanten drie getallen zijn die samen op 90 uitkomen. Er zijn namelijk 90 klanten gebruikt in dit model. De getallen die in de figuur onder klanten blauw aangegeven zijn voldoen aan dit criterium. Dit ontwerp (locaties plus bijbehorende aantallen klanten) is dus maximaal 640 van de 2000 keer voorgekomen. Dit samen met het feit dat dit locaties zijn die eerder in het onderzoek als optimaal bestempeld zijn, maken het zeer aannemelijk dat dit ontwerp het verwachte optimale ontwerp is gegeven de beschreven onzekerheden. Dit ontwerp is dus het ontwerp dat al getoond is in figuur 4.1. Voor de andere aantallen locaties is op dezelfde manier bepaald welke locaties waarschijnlijk het vaakst bij dat aantal voorgekomen zijn. Dit is figuur 5.4 af te lezen aan de kleur van de getallen. Als een locatieaantal links een bepaalde kleur heeft, dan zijn de bijbehorende meest waarschijnlijke locaties in de rechtertabel met dezelfde kleur weergegeven. Het optimaal verwachte ontwerp horende bij drie locaties is weer vastgezet volgens de eerder beschreven methode en weer is er een Monte Carlo simulatie uitgevoerd op het vastgezette ontwerp, gegeven de verscheidene onzekerheden. Dit om de prestatie van het verwachte optimale ontwerp te testen. Hiermee zijn voor dit ontwerp gemiddelde kosten van €369.052,68 bepaald, met een standaardafwijking van €40.504,24. Weer is er een uitgebreider verslag van de uitkomst te vinden in bijlage F. 5.6 Methode C: optimaliseren naar aantal locaties
Opnieuw is er gewerkt met 21 mogelijke locaties. Bij deze methode is er gekeken welk aantal locaties minimale gemiddelde kosten oplevert. Dit alles is gedaan gegeven bepaalde onzekerheid in de klantvraag. Er is eerst gekeken naar variatie in de totale vraag en vervolgens naar variatie in de totale vraag. De manier waarop dit gedaan is en de bijbehorende Assumptions in Crystal Ball zijn in de paragraaf hierboven besproken. Voor elke vraagvariatie is vervolgens hetzelfde gedaan. In het model in Aimms is bij de volgende constraint op deze manier het aantal locaties vastgezet op in eerste instantie één: 21
y i 1
i
1
Vervolgens is er Monte Carlo simulatie uitgevoerd gegeven de onzekerheid horende bij de respectievelijke vraagvariatie. Daarna zijn de gemiddelde kosten horende bij deze simulatie opgeslagen. Dit proces is voor beide vraagvariaties herhaald voor aantallen locaties van twee tot en met tien. Zo is het mogelijk geweest voor beide instanties een grafiek te maken met het aantal locaties op de horizontale as en de gemiddelde kosten op de verticale as. Hieruit is dan af te lezen bij welk aantal locaties de gemiddelde kosten het laagst zijn. Een algemeen stappenplan voor deze methode:
17
1. 2. 3. 4. 5.
Bepaal gebruikte variabele (in dit geval het aantal locaties). Stel de variabele in op de startwaarde. Voer met Crystal Ball een Monte Carlo simulatie met n trekkingen uit. Noteer gemiddelde kosten en bijbehorend betrouwbaarheidsinterval. Hoog zolang gewenst de waarde van de gebruikte variabele op en ga terug naar stap 3, anders: 6. Verwerk de resultaten. Figuur 5.5: stappenplan methode C
Op de hierboven beschreven manier is voor de simulaties waarbij is uitgegaan van een verdeling voor het totale aantal ritten de volgende tabel met gemiddelde kosten verkregen:
Tabel 5.1: gemiddelde kosten bij optimalisatie gegeven totale vraagverdeling
Hierbij is de onderstaande grafiek gemaakt:
Gemiddelde kosten
Gemiddelde kosten bij vastgezette aantal locaties, 21 mogelijke locaties 800.000,00 600.000,00 400.000,00 200.000,00 0,00 1
2
3
4
5
6
7
8
9
10
Aantal locaties
Figuur 5.6: gemiddelde kosten bij optimalisatie gegeven totale vraagverdeling
Uit de tabel en de grafiek is af te lezen dat er bij vier locaties de minimale gemiddelde kosten bereikt worden. De situatie met drie locaties doet hier echter niet veel voor onder. Omdat de situatie met vier locaties het absolute minimum geeft, is bij deze situatie gekeken welke locaties er voorgekomen zijn. Dit betreft voor alle 2000 trekkingen de locaties 2, 11, 12 en 19. In figuur 5.7 is dit ontwerp weergegeven. Dit ontwerp is weer vastgezet om de prestatie ervan te meten. Dit is gedaan met behulp van een Monte Carlo simulatie gegeven de in dit geval geldende onzekerheid. Hieruit kwamen gemiddelde kosten van €405.056,55 met een standaardafwijking van €156.846,38. Meer informatie over deze resultaten is weer te vinden in Figuur 5.7: locaties bij optimalisatie gegeven bijlage F. variatie in de totale vraag Op dezelfde manier zijn resultaten verkregen voor de situatie waarbij elk aantal ritten per klant een individuele verdeling heeft gekregen. De tabel met gemiddelde kosten voor de aantallen locatie is in dit geval:
18
Tabel 5.2: gemiddelde kosten bij optimalisatie gegeven individuele vraagverdeling
De bijbehorende grafiek:
Gemiddelde kosten
Gemiddelde kosten bij vastgezette aantal locaties, 21 mogelijke locaties en individuele vraagverdeling 700.000,00 600.000,00 500.000,00 400.000,00 300.000,00 200.000,00 100.000,00 0,00 1
2
3
4
5
6
7
8
9
10
Aantal locaties
Figuur 5.8: gemiddelde kosten bij optimalisatie gegeven individuele vraagverdeling
Uit de grafiek is af te lezen dat er bij drie locaties minimale gemiddelde kosten bereikt worden. Bij nadere bestudering van de gegevens van de Forecasts op eenzelfde manier als uitgelegd bij methode B, is gebleken dat de bekende locaties 12, 17 en 19 maximaal 845 van de 2000 trekkingen voorgekomen zijn. Hiermee vormen deze locaties in alle waarschijnlijkheid het verwachte optimale ontwerp. Dit ontwerp is terug te vinden in figuur 4.1. De prestatie van dit ontwerp onder de bijbehorende onzekerheid is weer gemeten. De gemiddelde kosten horende bij dit ontwerp zijn €346.366,67 met een standaardafwijking van €30.136,75. 5.7 Methode D: Robuustheid op basis van variantie
Bij deze methode is gewerkt met 10 kandidaat locaties, zoals ook bij methode A. Bij methode D is er niet naar een ontwerp gezocht dat de kosten minimaliseert, maar is er ook rekening gehouden met de robuustheid van het ontwerp. De robuustheid wordt getoetst door naar de variantie te kijken. Op dezelfde manier als bij methode B is bijgehouden hoe vaak een bepaalde kandidaat locatie aan stond onder onzekerheid als de variabelen x en y vrij werden gelaten. Op basis hiervan zijn geschikt lijkende combinaties vergeleken. Er is echter wel minder specifiek gekeken naar welke combinaties wanneer en hoe vaak aan staan. Dit was niet expliciet nodig aangezien er van verschillende ontwerpen kostenverdelingen zijn bekeken om zo een robuust ontwerp te bepalen. Het was mogelijk om de verschillende combinaties van faciliteiten nader te onderzoeken zoals in methode B en vervolgens de robuustheid toetsen. Dit was echter, zolang de variatie in de gebruikte kandidaat locaties niet te groot is, niet noodzakelijk. Eerst zijn er voor ontwerpen, waarvan de kosten niet al te veel verschillen, kostenverdelingen bepaald. Daarna is er op basis van een criterium een robuust ontwerp bepaald. Dat criterium kan de variantie zijn, maar er is ook gekeken naar boven welke kostengrens de bijvoorbeeld hoogste 10 procent zich bevindt. 19
Bij onzekerheid in elke vraag is weer uitgegaan van een lognormale verdeling met zowel gemiddelde als standaardafwijking gelijk aan de vraag in de basisdata. Bij de onzekerheid in de benzineprijs is bij methode D uitgegaan van een lognormale verdeling met gemiddelde 1 en standaardafwijking 0,5. In tabel 5.3 is aangegeven hoe vaak een kandidaat locatie aanstaat op 1000 trekkingen bij onzekerheid op elke vraag. Locatie: 1 2 3 4 5 6 7 8 9 10
Aantal keer aan op 1000 trekkingen: 0 120 1000 0 0 0 200 200 750 0
Tabel 5.3: aantal klanten per locatie
Het is duidelijk dat kandidaat locaties 3 en 9 respectievelijk altijd en vaak aan staan. Deze zullen dus in een robuust ontwerp waarschijnlijk aan staan. In tabel 5.4 staat een aantal ontwerpen dat op basis van de bovenstaande tabel mogelijk tot een goed robuust ontwerp kan leiden en hun gemiddelde en standaardafwijking. Locaties aan: 3,9 3,8,9 3,7,8,9 3,7,9 2,3,7,9 2,3,7,8,9
Gemiddelde: 376.700,10 397.520,61 420.813,06 376.703,74 408.776,43 448.547,53
Standaard deviatie: 43.690,47 36.835,54 34.338,43 32.839,54 31.628,69 30.723,24
Tabel 5.4: opsomming resultaten van ontwerpen
Het valt wellicht op dat de variantie afneemt naarmate het aantal kandidaat locaties dat aan staat toeneemt. Dit is logisch, aangezien de transportkosten minder groot worden terwijl de vaste constante kosten van het openhouden van een distributiecentrum een grotere rol spelen als er meer distributiecentra gebruikt worden. Zo wordt de standaardafwijking dus minder groot. De standaardafwijking is het laagst gebleken als kandidaat locaties 2,3,7,8 en 9 aan staan, maar de gemiddelde kosten zijn zo hoog dat dit geen verstandig ontwerp is om te gebruiken. Ditzelfde geldt in mindere mate voor het aan laten staan van kandidaat locaties 2,3,7 en 9. Echter, als de kandidaat locaties 3,7 en 9 aan staan zijn zowel de standaardafwijking als de gemiddelde kosten laag. Dit ontwerp is nader vergeleken met het ontwerp waarbij de kandidaat locaties 3 en 9 aan staan, omdat bij dat ontwerp de gemiddelde kosten ook laag zijn. In tabel 5.5 worden de percentielen van de kosten weergegeven.
20
Percentiel (in %) 0 10 20 30 40 50 60 70 80 90 100
Waarde 277.391,45 328.585,52 341.229,38 352.085,88 361.108,29 371.465,11 382.726,49 393.094,53 409.708,31 431.465,82 710.059,66
Percentiel (in %) 0 10 20 30 40 50 60 70 80 90 100
Waarde 283.283,18 337.574,58 349.652,68 357.425,59 365.770,26 373.310,16 381.395,10 390.937,25 403.452,49 420.424,91 498.582,13
Tabel 5.5: links locaties 3 en 9 aan, rechts 3,7 en 9 aan
Als de gegevens van percentielen met elkaar worden vergeleken, is goed te zien dat het 100% percentiel bij het ontwerp met kandidaat locaties 3 en 9 aan een stuk hoger ligt dan bij het ontwerp met kandidaat locaties 3,7 en 9 aan. Dit zou echter kunnen komen door toeval, dus hoeft nog niet veel te zeggen. Verder is in beide tabellen te zien dat de hoge kosten (vanaf ongeveer €380.000) vaker voorkomen bij het ontwerp met locaties 3 en 9 aan dan bij het ontwerp met locaties 3,7 en 9 aan. Het beste robuuste ontwerp is het ontwerp met locaties 3, 7 en 9 aan. In figuur 5.9 is te zien hoe dat er in Nederland uitziet. In dit geval zijn de kosten vrijwel precies hetzelfde en is dus het ontwerp met de kleinste standaardafwijking vrijwel zeker robuuster. Het kan ook Figuur 5.9: locaties 3, 7 en 9 voorkomen dat de standaardafwijking bij een ontwerp groter is dan bij een ander ontwerp, maar de gemiddelde kosten wel duidelijk lager. Door naar de kostenverdelingen te kijken en de percentielen, is na te gaan op welke kosten het ene ontwerp een kleinere kans heeft dan het andere ontwerp. Zo kan uitgaande van wat in een specifieke situatie belangrijk is worden bepaald wat qua robuustheid het gewenste ontwerp is. Bij onzekerheid in de benzineprijs zijn de gevolgde stappen voor methode D hetzelfde als bij onzekerheid in elke vraag. Daarom zal dit geval van onzekerheid minder uitgebreid worden behandeld en zullen vooral de resultaten worden getoond. In de onderstaande tabel is aangegeven hoe vaak een kandidaat locatie aanstaat op 1000 trekkingen bij onzekerheid in de benzineprijs. Locatie 1 2 3 4 5 6 7 8 9 10
Aantal keer aan op 1000 trekkingen 0 0 1000 0 0 0 380 0 900 0
Tabel 5.6: aantal klanten per locatie
21
De ontwerpen die onderzocht dienden te worden zijn op basis van deze tabel eenvoudig te bepalen. In de onderstaande tabel zijn de ontwerpen met de gemiddelde kosten en de standaardafwijking aangegeven. Locaties aan 3 3,9 3,7 3,7,9
Gemiddelde 409.257,78 358.737,88 393.909,08 356.803,02
Standaard deviatie 179.401,79 129.365,46 149.941,99 109.029,38
Tabel 5.7: opsomming resultaten van ontwerpen
Het ontwerp waarbij de kosten en de standaard deviatie het laagst is zal waarschijnlijk het meeste robuuste ontwerp zijn. De standaard deviatie is zeer informatief, maar hoeft niet per definitie alle informatie te bevatten, aangezien de kostenverdelingen van de verschillende ontwerpen verschillend kunnen zijn. Het ontwerp waar locaties 3,7 en 9 aanstaan en het ontwerp waar locaties 3 en 9 aanstaan zullen worden vergeleken. In tabel 5.8 staan de percentielen van de kosten. Percentiel (in %) Waarde 0 162.906,06 10 227.518,09 20 255.048,88 30 282.172,17 40 301.599,19 50 326.623,93 60 357.584,47 70 394.957,39 80 447.537,13 90 528.196,15 100 1.186.479,52
Percentiel (in %) Waarde 0 188.088,47 10 248.966,84 20 273.349,92 30 291.580,40 40 310.796,27 50 332.403,99 60 358.882,43 70 390.691,96 80 422.197,72 90 484.350,01 100 1.078.761,11
Tabel 5.8: links locaties 3,7 en 9 aan, rechts 3 en 9 aan
Ook door deze figuren te vergelijken kan worden geconcludeerd dat qua robuustheid het beste ontwerp bestaat uit de locaties 3,7 en 9 aan, net als bij onzekerheid op elke vraag. In figuur 5.9 wordt dit ontwerp getoond. In bijlage F staat een aantal frequentiegrafieken dat toont hoe de besproken ontwerpen zich gedragen onder onzekerheid. 5.8 Conclusies
Door het gebruiken van Monte Carlo simulatie kan op verschillende manieren een gewogen inzicht gegeven worden in het effect van onzekerheid op een netwerkontwerp. De scenarioanalyse heeft uitgewezen dat het met Monte Carlo simulatie mogelijk is om een netwerk te ontwerpen onder onzekerheid. Andere toepassingen van Monte Carlo simulatie zijn getoond met de verschillende methoden: -
Met methode A kunnen door het vastzetten van variabelen kostenverdelingen worden gemaakt. Zo komt naar voren dat de deterministische oplossing maar 9.000 euro meer kost dan bij het vrijlaten van alle variabelen en dus een zeer behoorlijk ontwerp is
22
-
-
Met methode B wordt het aantal keer dat een kandidaat locatie aanstaat bijgehouden en zo kan door het analyseren van deze gegevens een optimaal ontwerp worden ontworpen. Handig hierbij is dat dit kan gegeven meerdere vormen van onzekerheid die tegelijkertijd plaatshebben. Met methode C wordt er geoptimaliseerd naar het aantal locaties. Gebleken is dus dat er met Monte Carlo simulatie geoptimaliseerd kan worden naar een gekozen variabele. Bij methode D is gebleken dat er een robuust ontwerp op basis van variantie gevonden kan worden met Monte Carlo simulatie. Door verschillende ontwerpen te vergelijken op kostenverdelingen is het mogelijk om ook variantie een rol te laten spelen in het bepalen van een ontwerp. Bij het beste robuuste ontwerp worden meer distributiecentra gebruikt dan bij het ontwerp met de gemiddeld laagste kosten.
Zoals gemeld is er in de literatuur niets gevonden over eerdere koppelingen tussen optimalisatiesoftware en Crystal Ball (of andere software die Monte Carlo simulatie mogelijk maakt). Wel is er op andere manieren onderzoek gedaan naar een stochastische aanpak als het gaat om het robuust ontwerpen van netwerken. Voor een samenvatting hiervan wordt doorverwezen naar Bijlage A.
23
6 Conclusies
Met behulp van AIMMS is er voor gegeven invoer met betrekking tot de parameters van het UFLP model een netwerkontwerp te maken voor de gebruikte case. Dit zou met behulp van andere modellen op basis van andere cases uiteraard ook gedaan kunnen worden. Met AIMMS kan dus ook best case/worst case analyse uitgevoerd worden, evenals scenarioanalyse. Deze methoden kunnen worden gebruikt voor onderzoek naar robuustheid van een ontwerp, maar er is met de ILP formulering van het UFLP geen algemene gevoeligheidsanalyse uit te voeren. Ook mist de aanpak waarbij alleen AIMMS gebruikt wordt weging in de onzekerheid. Aangezien AIMMS gekoppeld kan worden aan Crystal Ball, is het echter mogelijk om Monte Carlo simulatie uit te voeren waarbij optimalisatiesoftware de oplossingen van het model levert, in plaats van Excel. Op basis van Monte Carlo simulatie zijn er een aantal methoden ontwikkeld waarmee omgegaan kan worden met onzekerheid in een netwerkontwerp. De gebruikte methoden zijn uit te breiden en er kunnen in de toekomst uiteraard meer manieren gevonden worden om met Monte Carlo simulatie bij te dragen aan het robuust ontwerpen van netwerken. In dit onderzoek zijn de volgende punten naar voren gekomen qua Monte Carlo simulatie: -
-
-
Met behulp van de koppeling tussen AIMMS en Crystal Ball kunnen onzekerheden worden gesimuleerd en zo kan een verwachte onzekerheid in een netwerkontwerp verwerkt worden. Door het bijhouden van gegevens over de verschillende onderdelen van een netwerk tijdens een Monte Carlo simulatie, kan er uitgaande van bepaalde criteria op basis van deze gegevens gekozen worden voor een bepaald ontwerp. Deze criteria kunnen te maken hebben met de robuustheid van het ontwerp, maar er zou ook puur naar minimale gemiddelde kosten gekeken kunnen worden. Als een ontwerp eenmaal is gekozen, dan kan dit worden vastgezet in AIMMS en kan weer met Monte Carlo simulatie de prestatie van dit ontwerp onder onzekerheid worden getest.
Helaas blijft het ontwerpen van robuuste netwerken een gecompliceerde zaak. Er is geen methode beschikbaar waarbij het robuust ontwerpen zo simpel is als het invoeren van het model en het drukken op een knop. Robuustheid is een begrip waarvan de precieze definitie voor eenieder verschillend is. Optimalisatiesoftware geeft met scenarioanalyse wel de mogelijkheid tot robuust ontwerpen, maar aan wie is het om te bepalen welke scenario’s gebruikt worden? Dit probleem komt ook naar voren bij Monte Carlo simulatie: welke kansverdeling moet er aan een bepaalde variabele gegeven worden? Gegevens uit het verleden zullen niet per definitie een goede aanduiding zijn voor toekomstige gedragingen van bijvoorbeeld klanten of benzineprijzen. De zoektocht naar robuuste ontwerpen heeft dus nog niet een einde bereikt, maar hopelijk levert de getoonde koppeling tussen optimalisatieen simulatiesoftware inspiratie en ondersteuning voor toekomstig onderzoek. 7 Dankwoord
De auteurs willen allereerst Jan van Doremalen en Monique van den Broek van CQM bedanken voor het aanleveren van de case en de basisdata en voor het geven van zinvolle feedback. Daarnaast is er dank voor de heer Cees Duin voor de hulp bij het kiezen voor een model en uiteraard voor Nico van Dijk, voor de begeleiding gedurende het onderzoek en de verslaglegging ervan.
24
Bijlage A: Literatuuronderzoek A.1 Literatuur scenarioanalyse (gevoeligheid)
Tsiakis et al. [1] presenteren een methode voor het omgaan met onzekerheid in distributienetwerken. Dit wordt gedaan op basis van een netwerk waar verschillende producten verplaatst worden van grote warenhuizen naar kleinere distributiecentra en vervolgens naar verschillende klantenzones. Er wordt gewerkt met vraag per klantenzone, capaciteit voor zowel warenhuizen als distributiecentra en bepaalde intensiteiten qua productie en doorstroming van de producten door het netwerk. Het ontwerp voor dit netwerk moet dan kostenminimaliserend zijn. Hierbij zijn de kosten bepaald op basis van zowel vaste kosten per te openen faciliteit en variabele kosten aangaande productie en verplaatsing van het product. Voor het bepalen van het ontwerp is een MILP (Mixed Integer Lineair Programma) gebruikt, dat opgelost is met bepaalde optimalisatiesoftware. Dit alles is gedaan op basis van deterministische gegevens, maar ook onder onzekerheid in de vraag per klantzone. Hierbij zijn de individuele vragen als gecorreleerd beschouwd. Deze onzekerheid is door de auteurs gemodelleerd op basis van verschillende scenario’s met betrekking tot toekomstige vraag, waarbij er zowel positieve als negatieve scenario’s zijn gebruikt. Er is gebleken dat het aantal gebruikte scenario’s niet groot hoeft te zijn. Vervolgens is er op basis van een case voor zowel deterministische als onzekere gegevens gezocht naar een robuust ontwerp, dat redelijk presteert onder alle scenario’s. Dit is gedaan op basis van bekende kansen op de scenario’s, waarbij er is gekeken naar minimale verwachte kosten met betrekking tot alle scenario’s. Scenario analyse wordt ook gebruikt door Nagi en Pan [2] voor het omgaan met onzekerheid met betrekking tot het ontwerpen van een distributienetwerk. Hierbij wordt gekeken naar virtuele organisaties; concurrenten die tijdelijk de krachten binden om een product te maken dat elk bedrijf individueel niet had kunnen produceren. Er wordt gekeken naar beslissingen betreffende partnerschap, productieplannen en voorraadgroottes in een tijdspanne van meerdere even lange periodes. De productietijd van het product is één periode. In deze periodes wordt vervolgens door elk onderdeel van het distributienetwerk een aantal operaties uitgevoerd. Hierbij moet dus een keuze gemaakt worden welke bedrijven in welke periode actief zijn. De auteurs modelleren dit met een netwerk met knopen en kanten, waarbij de knopen productielocaties zijn en de kanten verbindingen tussen deze locaties. Vervolgens wordt er in het model onzekerheid op basis van scenario’s ingebouwd. In elke periode zijn er verschillende mogelijke vraaggroottes, elk met een bepaalde kans op voorkomen. Dit leidt tot een scenarioboom over de verschillende periodes, waarbij voor elk scenario in elke periode een bepaalde vraag wordt gerealiseerd. Een ontworpen distributienetwerk wordt als robuust beschouwd, als de bijbehorende kosten voor elk scenario dicht bij de minimale kosten liggen. De auteurs hebben bij deze beschrijving een model gemaakt, met een criteriumfunctie die drie onderdelen heeft. Deze onderdelen zijn de verwachte totale kosten van het ontwerp, variatie in de kosten (voor het omgaan met onzekerheid) en een straf voor wanneer het ontwerp bepaalde vraag onvoldaan laat. Dit model wordt opgelost met behulp van een heuristiek die de uitkomstenruimte uitdunt. Deze heuristiek werkt op basis van de kortste-pad methode. Een derde toepassing van scenario analyse wordt gegeven door Azaron et al. [3]. Zij werken met een model met twee fases; in de eerste fase worden beslissingen genomen omtrent locaties van fabrieken en warenhuizen en in de tweede fase worden productiegroottes, voorraadgroottes en transportkenmerken bepaald. Dit model wordt behandeld door middel van robuust Stochastisch Programmeren. Hierbij wordt er gewerkt met onzekerheid die zich niet alleen voordoet in de vraag, maar ook in onder andere het aanbod, transportkosten en tekortkosten. De criteriumfunctie bestaat hierbij uit drie verschillende onderdelen. In het eerste onderdeel worden de kosten in de eerste fase geminimaliseerd, samen met de verwachte
25
kosten van de tweede fase. Het tweede onderdeel minimaliseert de variantie van de totale kosten. In het derde onderdeel wordt het financiële risico geminimaliseerd, waarbij financieel risico is gedefinieerd als de kans op het overschrijden van een bepaald kostenniveau. Dit model wordt behandeld als een Multi-objective Design Problem. Dit houdt in dat er meerdere Pareto-optimale mogelijke ontwerpen als oplossing worden gepresenteerd, in plaats van een enkele oplossing. Het stochastisch programma wordt opgelost met de Goal Attainment Technique. [1] P. Tsiakis, N. Shah, C.C. Pantelides, Design of Multi-echelon Supply Chain Networks under Demand Uncertainty, Industrial & Engineering Chemistry Research 40 (2001) 3585-3604. [2] F. Pang, S. Nagi, Robust supply chain design under uncertain demand in agile manufacturing, Computers & Operations Research 37 (2010) 668-683. [3] A. Azaron, K.N. Brown, S.A. Tarim, M. Modarres, A multi-objective stochastic programming approach for supply chain design considering risk, International Journal of Production Economics 116 (2008) 129-138. A.2 Literatuur onzekerheidsanalyse
Er is al laten zien dat er reeds onderzoek is gedaan naar eerder onderzoek over de deterministische methodiek. Hier wordt eerder onderzoek naar de stochastische methodiek besproken. In het artikel van Santoso, Ahmed, Goetschalckx en Shapiro [1] is een praktische methodiek ontwikkeld voor distributienetwerkontwerpen onder onzekerheid. Bij deze methodiek wordt de accelerated decomposition methode gekoppeld aan de sample average appoximation methode. Hierbij kunnen kandidaat ontwerpen op een efficiënte manier worden gecreëerd en getest. Ter illustratie zijn in het artikel van twee netwerken ontwerpen en resultaten weergegeven. Hierbij is laten zien dat deze methode beter werkt dan de traditionele mean value methode. Niet alleen zijn de kosten beter, maar ook is de variantie van de kosten lager en neemt het verschil in variantie neemt toe naarmate de onzekerheid in het netwerk ook toeneemt. In het artikel van Listes en Dekker [2] worden netwerk ontwerpen bij onzekerheid besproken op basis van een voorbeeld uit de praktijk. Dit voorbeeld is het logistieke management van het recyclen van zand van sloopafval in Nederland. Er wordt aangegeven dat naarmate er meer zand gerecycled kan worden, de methodiek waarmee het netwerk bepaald wordt er één is die robuust is afhankelijkheid van de vraag. Echter, op het moment dat de hoeveelheid zand dat gerecycled kan worden relatief laag is, is de manier van het creëren van een ontwerp niet robuust afhankelijk van de vraag. Er kan in dit geval beter met andere stochastische benaderingen worden gewerkt, die beter bestand zijn tegen onzekerheid. Er wordt in dit onderzoek zo laten zien dat er efficiëntere algoritmes zijn voor het bepalen van een ontwerp en dat het mogelijk is deze te implementeren. In het artikel van Lieckens en Vandaele [3] is het MILP model uitgebreid door wachttijdmodellen. Dit is gedaan om zo een realistischer beeld te geven van de invloed van onzekerheid op de cyclustijd en de kosten. Dit kan van belang zijn voor producten waarbij de levertijd van belang is. De methode die is gebruikt, is de techniek van differential evolution. Na het onderzoeken van verschillende complexe cases, zijn twee belangrijke conclusies getrokken. Ten eerste is de techniek van differential evolution een robuuste methode met betrekking tot de cyclustijden, die bovendien niet ver boven het werkelijke globale optimum van de cyclustijden komen. Ten tweede is in het artikel naar voren gekomen dat de kosten van dit model, bestaande uit een combinatie van het MILP model en wachtrijmodellen, hogere
26
winsten met zich meebrengt dan het MILP model op het moment dat er meerdere onzekerheden mee gaan spelen. [1] T.Santoso, S.Ahmed, M.Goetschalckx, A.Shapiro, A stochastic programming approach for supply chain network design under uncertainty, School of Industrial & Systems Engineering (2003) [2] O. Listes, R.Dekker, A stochastic approach to a case study for product recovery network design, Erasmus University Rotterdam (2001) [3] K.Lieckens, N.Vandaele, Reverse logistics network design with stochastic lead times, University of Antwerp (2005)
27
Bijlage B: Basisdata Klant Latitude Longitude Ritten Klant Latitude Longitude Ritten Klant Latitude Longitude Ritten 10 52,36998 4,894488 244 40 51,90189 5,445391 22 70 51,96021 6,283889 5 11 52,34714 4,86647 72 41 51,93163 5,179541 99 71 52,00277 6,577709 3 12 52,23854 5,174627 136 42 51,80251 5,004042 52 72 52,15501 6,260749 4 13 52,33027 5,123112 60 43 51,62408 3,727961 3 73 52,21476 6,002247 116 14 52,34521 5,030746 53 45 51,30337 3,937786 4 74 52,30542 6,501807 116 15 52,46264 4,809292 32 46 51,50166 4,29415 1 75 52,30391 6,877034 14 16 52,68298 5,113191 35 47 51,60115 4,530219 14 76 52,4151 6,658313 77 17 52,73853 4,816527 107 48 51,57827 4,771461 58 77 52,55296 6,406103 137 18 52,64121 4,736925 69 49 51,68413 4,840921 40 78 52,7839 6,877641 40 19 52,5126 4,664685 195 50 51,55534 5,12614 211 79 52,68743 6,285874 23 20 52,38995 4,633633 225 51 51,61164 4,998672 168 80 52,48898 6,041046 207 21 52,31911 4,618829 125 52 51,68725 5,265137 39 81 52,35633 6,044263 96 22 52,1485 4,418118 43 53 51,76053 5,50008 94 82 52,57248 5,887625 156 23 52,15733 4,50811 18 54 51,62735 5,670169 95 83 52,73917 5,898307 17 24 52,14329 4,691723 27 55 51,38065 5,376886 76 84 53,01102 6,180753 4 25 52,07569 4,309952 33 56 51,46116 5,469277 65 85 52,8952 5,630839 2 26 52,00573 4,340956 22 57 51,4576 5,720051 159 87 53,02587 5,494889 1 27 52,05347 4,563055 5 58 51,58234 5,969815 9 88 53,20559 5,46742 1 28 51,98306 4,734333 6 59 51,38995 6,123304 5 91 53,42768 6,107286 1 29 51,88374 4,605235 27 60 51,28217 5,690537 26 92 53,14002 6,098937 2 30 51,925 4,496355 115 61 51,00758 5,839029 1 93 53,12448 6,396847 9 31 51,90818 4,323759 92 62 50,82467 5,741879 1 94 52,99257 6,577976 65 32 51,82238 4,239658 30 63 50,85787 5,950328 3 95 52,95953 6,974377 8 33 51,82518 4,685265 19 64 50,89209 5,990683 1 96 53,15657 6,866669 22 34 52,05072 4,999799 224 65 51,80533 5,879446 95 97 53,21233 6,587302 114 35 52,09079 5,112713 229 66 51,86407 5,716701 112 98 53,23523 6,363402 5 36 52,18449 4,966326 179 67 52,04149 5,648341 48 99 53,3503 6,706704 38 37 52,13953 5,285296 181 68 51,97909 5,881995 39 38 52,19752 5,444107 131 69 52,00739 6,066399 6 39 52,0288 5,314623 Tabel B.1: locaties en vraag per klant
28
Faciliteit
Latitude Longitude 1 51,150046 4,539565 2 51,475423 5,351169 3 51,800799 6,162773 4 52,126175 4,539565 5 52,451551 5,351169 6 52,776928 6,162773 7 53,102304 4,539565 8 51,150046 5,351169 9 51,475423 6,162773 10 51,800799 4,539565 11 52,126175 5,351169 12 52,451551 6,162773 13 52,776928 4,539565 14 53,102304 5,351169 15 51,150046 6,162773 16 51,475423 4,539565 17 51,800799 5,351169 18 52,126175 6,162773 19 52,451551 4,539565 20 52,776928 5,351169 21 53,102304 6,162773
Faciliteit Latitude Longitude 1 51,25851 4,8101 2 51,69234 4,8101 3 52,12618 4,8101 4 52,56001 4,8101 5 52,99385 4,8101 6 51,25851 5,892238 7 51,69234 5,892238 8 52,12618 5,892238 9 52,56001 5,892238 10 52,99385 5,892238
Tabel B.2: links locaties 21 mogelijke faciliteiten, rechts locaties 10 mogelijke faciliteiten
29
Bijlage C: Aimms
Figuur C.1: invoer Aimms (transportkosten).
Figuur C.2: uitvoer Aimms (allocatie)
30
Bijlage D: Gebruikte locaties en Excel bestand
Figuur D.1: locaties bij 21 mogelijke faciliteiten
Figuur D.2: locaties bij 10 mogelijke faciliteiten
Figuur D.3: het gebruikte Excel bestand
31
Bijlage E: Handleiding Aimms/Crystal Ball Wat volgt is een handleiding aangaande de koppeling tussen het optimalisatieprogramma Aimms en de simulatiesoftware Crystal Ball. Laatstgenoemde is een invoegtoepassing van Microsoft Excel. In het vervolg wordt aangenomen dat de lezer beschikking heeft over in ieder geval een computer met daarop een versie van Aimms 3 en Microsoft Excel met Crystal Ball. De versie van Microsoft Excel die voor dit onderzoek gebruikt is, is Microsoft Excel 2003. Deze handleiding zal het volgende beschrijven: -
Hoe de koppeling tussen Aimms en Excel gemaakt kan worden met de Aimms invoegtoepassing voor Excel. Hoe de genoemde Aimms invoegtoepassing werkt. Hoe Crystal Ball werkt. Hoe met behulp van deze Aimms invoegtoepassing Crystal Ball aan Aimms gekoppeld kan worden.
Koppeling Aimms/Excel
Indien de lezer ervaring heeft met de Aimms invoegtoepassing voor Excel, wordt er geadviseerd om dit en het volgende onderdeel over te slaan en te beginnen bij Werking Crystal Ball. Wat volgt is een stappenplan om de Aimms invoegtoepassing op een computer geïnstalleerd te krijgen: 1. Start Aimms op. 2. Klik op de link Index of all Examples. Deze is te vinden in het menu Getting Started, linksboven onder het Aimms logo. 3. Klik onder de tab Aimms Functional Examples op Excel Link en sla dit bestand op in de gewenste map. 4. Klik links onder Navigation op Open Explorer. Hierdoor wordt de map geopend waar het bestand Excel Link zojuist is opgeslagen. 5. Open het bestand ExcelAddinExample. Mogelijk moet hierbij de beveiliging van Microsoft Excel aangepast worden, zodat invoegtoepassingen en macro’s ingeschakeld kunnen worden. Afhangende van de gebruikte versie van Excel kan er dan op verschillende manieren aangegeven worden dat macro’s en/of invoegtoepassingen ingeschakeld worden. Zodra dit is gebeurd verschijnt er een bericht dat aangeeft dat de Aimms Excel invoegtoepassing succesvol is geïnstalleerd, als alles goed is gegaan. 6. Nu kan eventueel met het bijgevoegde voorbeeld de functionaliteit van de Aimms invoegtoepassing bekeken worden. Als dit bestand wordt afgesloten wordt de vraag gesteld of de invoegtoepassing geïnstalleerd moet blijven. Dit wordt aangeraden als deze in de toekomst vaker gebruikt zal worden. Werking Aimms invoegtoepassing
Nu de Aimms invoegtoepassing succesvol is geïnstalleerd, kan naar de werking gekeken worden. De invoegtoepassing is in elke Excel map aan het Aimms logo te herkennen. In Excel 2003 is dit rechts bovenin te vinden. Voor andere versies van Excel wordt aangeraden om te zoeken op invoegtoepassingen.
32
Om een bepaald Excel bestand aan een Aimms project te koppelen, dient eerst het gewenste Excel bestand geopend te worden. Klik vervolgens op het Aimms logo om de Aimms invoegtoepassing te openen. Eventueel verschijnt er een venster waarin wordt gevraagd of macro’s in- of uitgeschakeld moeten worden. Om de invoegtoepassing te gebruiken dienen macro’s ingeschakeld te zijn. Als dit is gebeurd verschijnt het venster van de invoegtoepassing. Bij Project file kan vervolgens worden aangegeven welk Aimms project aan dit Excel bestand gekoppeld moet worden. Door op Browse te klikken kan gezocht worden naar het project in de bestanden op de gebruikte computer. Als het project gevonden is kan het door erop te klikken worden gekoppeld aan dit Excel bestand. Vervolgens kan onder de tab Execution Sequences gedefinieerd worden welke acties de Aimms invoegtoepassing moet uitvoeren. Deze tab kan bovenaan het venster in het midden gevonden worden. Bij Sequence Name kan dan worden gekozen in welke Sequence de acties gemaakt moeten worden. Een Sequence is een verzameling acties die samen op een voorbepaalde volgorde worden uitgevoerd als de hele Sequence wordt uitgevoerd. Als voor het project waarvoor de invoegtoepassing gebruikt dient te worden niet meerdere Sequences nodig zijn, dan wordt aangeraden om de acties in de Sequence Main te definiëren. Waarom dit zo is zal later duidelijk worden gemaakt. Voor een volledig overzicht van alle mogelijke acties wordt doorverwezen naar de handleiding van Aimms zelf. Deze is te vinden op de website van Aimms onder de volgende link: http://www.aimms.com/aimms/download/manuals/aimms_excel.pdf. De acties worden voornamelijk beschreven in hoofdstuk drie. Een aantal acties dat belangrijk is voor het onderzoek horende bij deze handleiding worden hieronder verder toegelicht. Om een actie te creëren dient er op New Action geklikt te worden. Bij Action Specification kan dan worden geselecteerd wat voor soort actie er uitgevoerd moet worden. Zo is het mogelijk om gegevens vanuit een Excel bestand naar een Aimms project weg te lezen. Ook kunnen gegevens uit een Aimms project naar een Excel bestand geschreven worden. Verder is het bijvoorbeeld mogelijk om Aimms procedures vanuit Excel uit te voeren. Onderstaand een beschrijving van de genoemde acties:
Assign Array Data/Table De actie Assign Array Data kent een vector gegevens toe aan een parameter of variabele (met andere elementen uit het model samengevat onder de naam Identifier) in Aimms. Als deze actie is geselecteerd bij Action Specification, dan kan door op het symbool met de drie puntjes te klikken de variabele of parameter geselecteerd worden waaraan de gegevens toegekend moeten worden. Door bij Data Range op Select te klikken kan gekozen worden welke gegevens aan deze Identifier toegekend moeten worden. Dit gebeurt door de desbetreffende cellen in Excel te selecteren. Wanneer de Identifier waaraan gegevens gewenst te worden toegekend een matrix of tabel is, dan kan dit met de actie Assign Table. Deze actie is vergelijkbaar met de actie Assign Array Data. Uiteraard moet bij Data Range nu een matrix worden geselecteerd. Ook moeten nu de Rows Range en Columns Range worden geselecteerd. Eerstgenoemde zijn de cellen direct links naast de gegevensmatrix, laatstgenoemde de cellen direct boven de gegevensmatrix. Voor een goede werking wordt aangeraden om in deze cellen de corresponderende namen uit de verzamelingen waarover de Identifier gedefinieerd is te plaatsen. (Voor het onderzoek horende bij deze handleiding staan dan in de cellen van de Rows Range de getallen 1 tot en met het getal horende bij de laatste gedefinieerde mogelijke locatie. In de cellen van de Columns Range staan dan 10 tot en met 99. Dit zijn de klanten.) De opties genaamd Row Mode en Column Mode moeten dan worden ingesteld op User Input. Opmerking: de acties Retrieve Array Data en Retrieve Table lezen gegevens van Identifiers
33
uit Aimms en schrijven deze weg naar Excel. Ze werken hetzelfde als de hierboven beschreven acties.
Run Procedure De actie Run Procedure maakt het mogelijk om de invoegtoepassing Aimms te laten instrueren om een procedure uit te voeren. Bij Aimms Identifier dient te worden geselecteerd welke procedure moet worden uitgevoerd. Dit kan bijvoorbeeld de standaardprocedure MainExecution zijn, waarbij Aimms het ingevoerde model optimaliseert en dus oplost.
Waarom is dit handig? Met behulp van de Aimms invoegtoepassing is het dus niet alleen mogelijk om gegevens uit te wisselen tussen Excel en Aimms, maar ook om al het werk horende bij een project uit te voeren in Excel (mits het model in Aimms ingevoerd is en naar wens werkt uiteraard). Door de acties een bepaalde volgorde te geven kan vanuit Excel dus bijvoorbeeld: 1. Gegevens laten inlezen naar Aimms. 2. Aimms op basis van deze gegevens het gebruikte model laten oplossen. 3. De oplossing laten terugschrijven naar Excel, eventueel samen met andere gewenste gegevens. Het feit dat dit mogelijk is, is essentieel voor het onderzoek horende bij deze handleiding. Meer hierover wordt duidelijk in de volgende paragraaf. Om de invoegtoepassing een bepaalde Sequence te laten uitvoeren, dient in Excel op het menu Execute geklikt te worden. Dit menu is te vinden naast het Aimms logo, waarmee de acties gedefinieerd werden. Er is aangeraden om de Sequence Main te gebruiken, omdat deze standaard al zichtbaar is wanneer op Execute geklikt wordt. Uiteraard kan ervoor gezorgd worden dat andere Sequences ook onder dit menu komen te staan. Dit kan bereikt worden door in het menu van de desbetreffende Sequence het vakje Include in Execute Menu aan te vinken. Dit kan gedaan worden onder Sequence Name. Werking Crystal Ball
Als Crystal Ball is opgestart, kan naar de werking gekeken worden. Het is voor de werking van Crystal Ball belangrijk dat de in- en uitvoer van het gebruikte model cellen in een bepaald Excel bestand zijn. Zoals later zal blijken kunnen sommige berekeningen eventueel wel met andere programma’s uitgevoerd worden. Dit is alleen mogelijk als dat programma dit toelaat. Wanneer Crystal Ball eenmaal is opgestart, dan verschijnt er in Microsoft Excel 2003 onder de standaard taakbalken een Crystal Ball taakbalk. Deze bevat initieel negentien knoppen. De werking van de bij deze handleiding belangrijke knoppen zal nu uitgelegd worden. Wanneer de muis stil wordt gehouden op één van de knoppen dan is de naam van deze knop te lezen. De belangrijke knoppen zijn: -
Define Assumption: hiermee kunnen bepaalde cellen een kansverdeling toegewezen krijgen. Het is belangrijk dat de te definiëren cel al een waarde bevat. Door de gewenste cel te selecteren en vervolgens op deze knop te drukken, verschijnt het selectievenster. De gewenste kansverdeling kan worden geselecteerd door erop te klikken en vervolgens kunnen de benodigde parameters ingevuld worden.
34
-
-
-
-
Define Forecast: door een cel met als definitie een waarde of formule te selecteren en vervolgens op deze knop te drukken, kan deze cel worden gedefinieerd als voorspellingscel waarover gegevens bijgehouden moeten worden. Alle cellen in het model waarvan gegevens als het gemiddelde en de standaardafwijking berekend moeten worden kunnen worden aangegeven als Forecast. Select Assumptions en Select Forecasts: met deze knoppen kunnen respectievelijk alle gedefinieerde Assumptions en Forecasts worden geselecteerd. Run Preferences: met deze knop kunnen de instellingen van de simulatie aangepast worden. Onder andere kan worden aangegeven: aantal trekkingen, de snelheid van de simulatie, welke methode gebruikt moet worden, of er Excel macro’s voor, tijdens of na de simulatie moeten worden uitgevoerd et cetera. Reset Simulation: het aantal trekkingen moet op nul gezet worden, alvorens een volgende simulatie van start kan gaan. Dat kan met deze knop. Single Step: met deze knop kunnen handmatig trekkingen gedaan worden om te onderzoeken of het model naar behoren werkt. Open Forecast Windows: van alle cellen gedefinieerd als Forecast wordt na de simulatie een venster geopend met daarin de vergaarde data over deze variabele, evenals een frequentiegrafiek. Als gesloten Forecasts opnieuw geopend dienen te worden, dan kan dat met deze knop. Create Report: met deze knop wordt een nieuw Excel bestand geopend waarin alle vergaarde gegevens over de Forecast cellen worden weergegeven.
Al met al is het dus mogelijk om bepaalde variabelen in een model een kansverdeling te geven. Daarna is het mogelijk om dit model n keer te laten oplossen (dan wel met Excel, dan wel met een ander programma) waarbij alle n keer verschillende trekkingen uit de gedefinieerde kansverdeling(en) als gegevens voor de variabele dienen. Uiteindelijk kan over gewenste variabelen en uitkomsten van het model een samenvatting (onder andere gemiddelde en standaardafwijking) over de n trekkingen verkregen worden. Koppeling Aimms/Crystal Ball
Wanneer de Aimms invoegtoepassing en ook Crystal Ball succesvol geïnstalleerd zijn in de gebruikte versie van Excel, dan kan begonnen worden met de koppeling tussen de twee. Essentieel hierbij is dat het mogelijk is in Excel om de Aimms invoegtoepassing Sequences te laten uitvoeren met behulp van een macro. Een Sequence is een verzameling van acties die de Aimms invoegtoepassing uitvoert op een bepaalde volgorde, wanneer het commando wordt gegeven om de hele Sequence te laten uitvoeren. Een macro bestaat uit een verzameling acties die door Excel worden uitgevoerd wanneer het commando wordt gegeven om de macro uit te voeren. Macro’s zijn handig wanneer een bepaalde (volgorde van) actie(s) steeds opnieuw uitgevoerd dient te worden. Aangezien Crystal Ball het mogelijk maakt om na elke trekking een macro te laten uitvoeren, zou dus met een macro na elke trekking de optimale oplossing gegeven die trekking te bepalen zijn. Aangezien het gewenst is voor deze toepassing om gegeven elke trekking met Aimms de optimale oplossing te bepalen, is het dus nodig om Aimms Sequences te laten uitvoeren met een macro. Dit kan door het commando: Run "aimms.xla!ExecuteAimmsSequence", "SequenceName"
35
in te voegen in een macro. Op de plek van SequenceName moet dan de naam van de uit te voeren Sequence (bijvoorbeeld Main) komen te staan. Het invoegen van dit commando gaat als volgt:
1. Klik in het menu Extra op Macro Nieuwe macro opnemen… 2. Geef onder Macronaam de gewenste naam van de macro aan en klik op OK. 3. Klik in het blauwe venster dat verschijnt op het vierkant dat staat voor opname stoppen. Dit houdt in dat de macro wel gedefinieerd wordt, maar dat hij (nog) geen uit te voeren acties bevat. 4. Klik in het menu Extra op Macro Macro’s… en selecteer de net gedefinieerde macro door er één keer op te klikken. Klik vervolgens rechts op bewerken. 5. Er verschijnt nu een groot venster met een klein venster daarbinnen. Het kleine venster bevat de code van de macro. Deze begint bij Sub en eindigt bij End Sub. Voer de bovenstaande code in op de lege regel tussen de twee aanhalingstekens. Belangrijk is dus dat SequenceName vervangen is door de naam van de gewenste uit te voeren Sequence. Sluit vervolgens het grote en het kleine venster af. De macro kan getest worden door in het menu Extra op Macro Macro’s… te klikken en vervolgens de macro twee keer aan te klikken. Als alles naar behoren werkt wordt Aimms nu opgestart en wordt de desbetreffende Sequence uitgevoerd. Onder de Run Preferences knop van Crystal Ball kan de naam van deze macro nu worden ingevoerd. Dit kan gedaan worden voor verschillende momenten tijdens de simulatie. Omdat voor deze toepassing gewenst wordt dat Aimms na elke trekking de optimale oplossing bepaalt, wordt aangeraden om de naam van de macro in te voeren onder het kopje After Recalculations. Als het invoeren van de macro succesvol is gebeurd zal nu bij het starten van de simulatie de Aimms invoegtoepassing na elke simulatie de gewenste acties uitvoeren. Er zijn echter wel een paar opmerkingen over de werking van deze koppeling: -
-
Het kan zijn dat Excel elke keer dat Aimms en Crystal Ball opgestart worden vraagt of macro’s ingeschakeld dienen te worden. Als dit het geval is blijkt het noodzakelijk te zijn om elke keer Aimms eerst op te starten en te klikken op Macro’s inschakelen. Vervolgens kan dit gedaan worden voor Crystal Ball. Als deze volgorde wordt omgedraaid kan het zijn dat de koppeling niet werkt. Wanneer Aimms wordt bestuurd met de Aimms invoegtoepassing, wordt er een versie van Aimms geopend die bestemd is voor eindgebruikers van het model. Als deze versie van Aimms wordt afgesloten (bijvoorbeeld na een simulatie) om bijvoorbeeld in de volledige versie van Aimms aanpassingen te doen aan het model, dan kunnen er problemen ontstaan als de invoegtoepassing-versie van Aimms weer wordt opgestart (bijvoorbeeld bij een nieuwe simulatie). Zo kan er een foutmelding verschijnen wanneer geprobeerd wordt om een Sequence uit te voeren. Dit probleem kan vermeden worden door na het opnieuw opstarten van de eindgebruikers versie van Aimms eerst op het Aimms logo van de invoegtoepassing te klikken, een willekeurige actie (die het kopje Aimms Identifier bevat) te selecteren en bij het genoemde kopje op de knop met de drie puntjes te klikken. Vervolgens verschijnt er een scherm waarin op beëindigen geklikt dient te worden. Als dit is gedaan is het beschreven probleem verholpen. Helaas lijkt dit elke keer te moeten gebeuren als de Aimms eindgebruikers versie wordt opgestart in dezelfde Excel sessie.
36
Bijlage F: Resultaten F.1: Deterministisch ontwerp en scenarioanalyse
Deze bijlage geeft een overzicht van de al getoonde resultaten en bevat bovendien extra informatie over deze resultaten. Opgemerkt dient te worden dat klanten 44, 86, 89 en 90 niet in de basisdata opgenomen waren, maar wel in het gebruikte model. Deze klanten hebben een vraag van nul gekregen en hebben dus geen effect gehad op de keuzes voor locaties van faciliteiten. Dit is gedaan om het model makkelijker hanteerbaar te maken. Deterministische oplossing
Gemiddelde kosten: €346.340,50 Allocatie: Locatie 12 17 19
Klanten 44, 69 t/m 99 28, 29, 33 t/m 35, 37 t/m 42, 45 t/m 68 10 t/m 27, 30 t/m 32, 36, 43
Tabel F.1: allocatie deterministische oplossing
Groei 30 procent
Gemiddelde kosten: €405.242,60 Allocatie: dezelfde als de deterministische oplossing. Daling 30 procent
Gemiddelde kosten: €271.214,50 Allocatie: locatie 11 bedient alle klanten. Scenario’s
Het gemiddelde aantal ritten berekend over de drie scenario’s gaf de volgende verwachte optimale oplossing:
Allocatie: dezelfde als de deterministische oplossing. Doorrekening andere scenario’s: Voorkomende locaties 11 12 17 19
Scenario 1 Scenario 2 1075 2000 2000 2000 925 2000 925
Tabel F.2: frequenties locaties voor alle scenario’s
37
Scenario 3 965 1035 1035 1035
Gemiddelde kosten na vastzetten ontwerp: €359.635,32 Standaardafwijking: €19.834,83 Grafiek gemiddelde kosten: Forecast: Uitkomst 2.000 Trials
Frequency Chart
0 Outliers
,027
53
,020
39, 75
,013
26, 5
,007
13, 25
,000
0
310. 000,00
337.500,00
365. 000,00
392. 500,00
420.000,00
Cert aint y is 95, 00% f rom -I nfinit y t o 395.433, 33
Figuur F.1: frequentiegrafiek kosten bij gemiddelde van scenario’s
Opmerking: in deze grafiek is de hoogste vijf procent gemiddelde kosten rood aangegeven. Met een zekerheid van 95 procent geeft deze allocatie onder de gestelde variatie in de kosten per kilometer dus uitkomsten in het blauwe gedeelte van de grafiek. F.2: Monte Carlo simulatie Methode A: Kosteneffect
Onzekerheid in elke vraag:
Gemiddelde kosten: 376.700,10 Standaardafwijking: 43.690,47 Grafiek kosten: Forecast: Uitkomst 1.000 Trials
FrequencyChart
23 Outliers
,033
33
,025
24,75
,017
16,5
,008
8,25
,000 100.000,00
0 250.000,00 400.000,00 550.000,00 Certainty is 94,90% from -Infinity to 578.000,00
700.000,00
Figuur F.2: frequentiegrafiek kosten bij onzekerheid in vraag, 10 locaties
38
Onzekerheid in brandstofprijs:
Gemiddelde kosten: 358.737,88 Standaardafwijking: 129.365,46 Grafiek kosten:
Forecast: Uitkomst 1.000 Trials
FrequencyChart
9 Outliers
,034
34
,026
25,5
,017
17
,009
8,5
,000 250.000,00
0 312.500,00 375.000,00 437.500,00 Certainty is 95,00% from -Infinity to 451.666,67
500.000,00
Figuur F.3: frequentiegrafiek kosten bij onzekerheid in brandstofprijs, 10 locaties
Methode B: verwacht optimaal ontwerp gegeven meerdere onzekerheden
Allocatie: dezelfde als de deterministische oplossing. Gemiddelde kosten na vastzetten ontwerp: €369.052,68 Standaardafwijking: €40.504,24 Grafiek kosten:
Forecast: Uitkomst 2.000 Trials
Frequency Chart
27 Outliers
,026
51
,019
38, 25
,013
25, 5
,006
12, 75
,000 250. 000,00
0 306.250,00
362. 500,00
418. 750,00
Cert aint y is 94, 90% f rom -I nfinit y t o 441.250, 00
39
475.000,00
Methode C: optimalisatie naar aantal locaties
Eerst zullen de resultaten van de situatie waar het totale aantal ritten een kansverdeling heeft gegeven worden:
Allocatie: Locatie 2 11 12 19
Klanten 24 t/m 64 12 t/m 14, 28, 29, 33 t/m 42, 65 t/m 68 69 t/m 99 10,11, 15 t/m 27, 30 t/m 32, 43
Tabel F.3: allocatie Methode C met variatie in totale aantal ritten
Gemiddelde kosten na vastzetten ontwerp: €405.056,55 Standaardafwijking: €156.846,38 Grafiek kosten: Forecast: Uitkomst 2.000 Trials
Frequency Chart
9 Outliers
,028
56
,021
42
,014
28
,007
14
,000 100. 000,00
0 300.000,00
500. 000,00
700. 000,00
900.000,00
Cert aint y is 95, 00% f rom -I nfinit y t o 681.333, 33
Figuur F.5: frequentiegrafiek kosten bij Methode B met variatie in totale aantal ritten
Nu volgen de resultaten van de situatie waar elk individueel aantal ritten per klant een verdeling toegewezen kreeg:
Allocatie: dezelfde als de deterministische oplossing Gemiddelde kosten na vastzetten ontwerp: €346.366,67 Standaardafwijking: €30.136,75 Grafiek kosten:
40
Forecast: Uitkomst 2.000 Trials
Frequency Chart
30 Outliers
, 029
58
, 022
43, 5
, 015
29
, 007
14, 5
, 000
0
250. 000,00
293. 750,00
337. 500,00
381. 250,00
425. 000,00
Cert aint y is 94, 95% f rom -I nfinit y t o 400.500, 00
Figuur F.6: frequentiegrafiek kosten bij Methode B met variatie in individuele aantallen ritten
Ook is er een tabel gemaakt met daarin voor de verschillende aantallen locaties het waarschijnlijke verwachte optimale ontwerp voor zowel de onzekerheid in het totale aantal ritten als de onzekerheid in de individuele ritten per klant: Aantal locaties 1 2 3 4 5 6 7 8 9 10
Totale aantal ritten 11 11, 12 12, 17, 19 2, 11, 12, 19 2, 10, 11, 12, 19 2, 10, 11, 12, 19, 21 2, 10, 11, 12, 17, 19, 21 2, 4, 10, 11, 12, 17, 19, 21 2, 4, 10, 11, 12, 17, 18, 19, 21 2, 4, 10, 11, 12, 13, 17, 18, 19, 21
Individuele aantallen ritten 11 11, 12 12, 17, 19 2, 11, 12, 19 2, 11, 12, 19, 21 2, 10, 11, 12, 19, 21 2, 10, 11, 12, 13, 19, 21 2, 10, 11, 12, 13, 17, 19, 21 2, 4, 10, 11, 12, 17, 18, 19, 21 2, 3, 4, 10, 11, 12, 13, 17, 19, 21
Tabel F.4: Ontwerpen optimalisatie naar aantal locaties
Opmerking: deze ontwerpen zijn zoals bekend heuristisch bepaald. Het kan zijn dat ze in enkele locaties variëren van het werkelijk verwachte optimale ontwerp, wat niet te traceren viel.
41
Methode D:
Hier worden een aantal frequentiegrafieken gepresenteerd die informatie verschaffen over de verschillende kostenverdelingen van de besproken ontwerpen. Forecast: Uitkomst 1.000 Trials
FrequencyChart
23 Outliers
,033
33
,025
24,75
,017
16,5
,008
8,25
,000
0
100.000,00
250.000,00 400.000,00 550.000,00 Certainty is 94,90% from -Infinity to 578.000,00
700.000,00
Figuur F.7: locaties 3 en 9 aan, onzekerheid in brandstofprijs
Forecast: Uitkomst 1.000 Trials
FrequencyChart
9 Outliers
,034
34
,026
25,5
,017
17
,009
8,5
,000
0
250.000,00
312.500,00 375.000,00 437.500,00 Certainty is 95,00% from -Infinity to 451.666,67
500.000,00
Figuur F.8: locaties 3 en 9 aan, onzekerheid in elke vraag
Forecast: Uitkomst 1.000 Trials
FrequencyChart
22 Outliers
,035
35
,026
26,25
,018
17,5
,009
8,75
,000 150.000,00
0 275.000,00 400.000,00 525.000,00 Certainty is 95,00% from -Infinity to 558.333,33
650.000,00
Figuur F.9: Locaties 3, 7 en 9 aan, onzekerheid in brandstofprijs
42
Forecast: Uitkomst 1.000 Trials
FrequencyChart
15 Outliers
,032
32
,024
24
,016
16
,008
8
,000 275.000,00
0 325.000,00 375.000,00 425.000,00 Certainty is 94,90% from -Infinity to 440.333,33
475.000,00
Figuur F.10: Locaties 3, 7 en 9 aan, onzekerheid in elke vraag
43