Het Inventory Routing Probleem (IRP) met...
Transcript of Het Inventory Routing Probleem (IRP) met...
Wouter Travers
beperkingen.bevoorradingstijdvensters en het personeelsuurroosterHet Inventory Routing Probleem (IRP) met
Academiejaar 2010-2011Faculteit Ingenieurswetenschappen en ArchitectuurVoorzitter: prof. dr. El-Houssaine AghezzafVakgroep Technische Bedrijfsvoering
operationeel onderzoekMaster in de ingenieurswetenschappen: bedrijfskundige systeemtechnieken en
Masterproef ingediend tot het behalen van de academische graad van
Begeleider: Yiqing ZhongPromotor: prof. dr. El-Houssaine Aghezzaf
Wouter Travers
beperkingen.bevoorradingstijdvensters en het personeelsuurroosterHet Inventory Routing Probleem (IRP) met
Academiejaar 2010-2011Faculteit Ingenieurswetenschappen en ArchitectuurVoorzitter: prof. dr. El-Houssaine AghezzafVakgroep Technische Bedrijfsvoering
operationeel onderzoekMaster in de ingenieurswetenschappen: bedrijfskundige systeemtechnieken en
Masterproef ingediend tot het behalen van de academische graad van
Begeleider: Yiqing ZhongPromotor: prof. dr. El-Houssaine Aghezzaf
PERMISSION
De auteur geeft de toelating deze masterproef voor consultatie beschikbaar te stellen en delen van de
masterproef te kopiëren voor persoonlijk gebruik. Elk ander gebruik valt onder de beperkingen van
het auteursrecht, in het bijzonder met betrekking tot de verplichting de bron uitdrukkelijk te
vermelden bij het aanhalen van resultaten uit deze scriptie.
The author gives the permission to use this thesis for consultation and to copy parts of it for personal
use. Every other use is subject to the copyright laws, more specifically the source must be extensively
specified when using results from this thesis.
Gent, Juni 2011
De promotor De auteur
Prof. Dr. El-Houssaine Aghezzaf Wouter Travers
Woord vooraf Hiermee wil ik iedereen bedanken die op één of andere wijze bijgedragen heeft bij het tot stand
komen van deze thesis. Familie en vrienden voor de mentale ruggensteun, de diverse internetfora
voor het leveren van code fragmenten en oplossingen, Mevr. Carine De Bruycker voor de
spellingscontrole en bovenal mijn ouders voor de welgekomen mentale en financiële steun
gedurende mijn studies. Met bijzondere dank ook aan mijn promotor Prof. Dr. El-Houssaine Aghezzaf
voor de sturing en ondersteuning van mijn thesis.
HET INVENTORY ROUTING PROBLEEM (IRP) MET
BEVOORRADINGSTIJDSVENSTERS EN HET PERSONEELSUURROOSTER
BEPERKINGEN D O O R
WO U T E R T R A V E R S
SC R I P T I E I N G E D I E N D T O T H E T B E H A L E N V A N D E A C A D E M I S C H E G R A A D V A N
M A S T E R I N D E I N G E N I E U R S W E T E N S C H A P P E N :
BE D R I J F S K U N D I G E S Y S T E E M T E C H N I E K E N E N O P E R A T I O N E E L O N D E R Z O E K
AC A D E M I E J A A R 2010-2011
PR O M O T O R E N : PR O F . D R . E L -H O U S S A I N E A G H E Z Z A F
SC R I P T I E B E G E L E I D E R S : Y I Q I N G Z H O N G
F A C U L T E I T I N G E N I E U R S W E T E N S C H A P P E N
UN I V E R S I T E I T G E N T
V A K G R O E P T E C H N I S C H E B E D R I J F S V O E R I N G
V O O R Z I T T E R : PR O F . D R . EL -H O U S S A I N E AG H E Z Z A F
Samenvatting Deze scriptie behandelt het “Inventory Routing” probleem (IRP) met tijdvensters en verplichte
opname van pauzes in de route planning. Dit probleem stelt zich indien een “Vendor Managed
Inventory, (VMI)” strategie wordt gevolgd. In het kader van VMI neemt de leverancier volledige
verantwoordelijkheid voor het bijhouden en beheren van de voorraad voor zijn afnemers (inclusief
de beslissingen tot herbevoorrading). Zowel de te leveren hoeveelheid als de gebruikte routes dienen
bepaald te worden. De klant moet hierbij geleverd worden binnen een gegeven
bevoorradingstijdvenster (bv. Tussen 10 en 11u) zonder dat er ooit voorraadbreuk optreed. Dit
probleem is vooralsnog niet exact op te lossen, daarom wordt gebruik gemaakt van een
benaderingsmethode en een heuristiek om een “lage” bovengrens te bekomen.
Trefwoorden Driver Availability, Vendor Managed Inventory, Inventory Routing Problem, Supply Chain
Management, Combinatorische Optimalisatie
THE INVENTORY ROUTING PROBLEM WITH TIME WINDOWS AND
PERSONNEL SCHEDULING LIMITATIONS Wouter Travers
Supervisor(s): prof. Dr. El-Houssaine Aghezzaf
Abstract This article studies both a heuristic and an
approximation method for optimizing an Inventory Routing
Problem with time windows (IRPTW) that also considers drivers’
breaks. The heuristic method uses different Vehicle Routing
Problem heuristics (with Time Windows (VRPTW)) that has been
adapted to consider drivers’ breaks. By using various meta-
heuristics the diversity in VRPTW solutions augments, which
benefits the IRPTW heuristic. The approximation method on the
other hand uses Lagrangian Relaxation to decompose the problem
in a Routing and Inventory sub problem.
Keywords Combinatorial Optimization, Inventory Routing
Problem, Time Windows, Drivers Break
I . IN T R O D U C T I O N
We consider a generic Inventory Routing Problem (IRP)
with time windows (TW) and simplified personnel scheduling
limitations. We build up to this model by first studying
several heuristic methods for solving a Vehicle Routing
Problem with time windows. Next an exact method for a
simplified IRP model is implemented using a Branch and Cut
algorithm. Afterwards a Surrogate Sub gradient is used to
approximately solve an IRP model adapted for time windows.
Finally a heuristics approach is considered.
I I . TH E R O U T I N G S U B P R O B L E M
Four meta-heuristics are used for solving the VRPTW.
These heuristics are adapted to consider three breaks: a
morning and afternoon break of 15 minutes and a lunch
break of 45 minutes. These breaks have to be imbedded in
the drivers’ schedule. Although this is not nearly enough to
be in accordance to EU Legislation, it does provide some
personnel scheduling limitations.
The four applied meta-heuristics are: an Ants Colony
System (ACS)[1], an Improved Greedy Randomized Adaptive
Search Procedure (GRASP)[2], a Hybrid Tabu-Search and
Simulated Annealing (TSSA)[3], and a Variable
Neighbourhood Search (VNS)[4]. The VNS consistently
outperforms the other meta-heuristics on the Solomon test
cases, although it has to be mentioned the effectiveness of
both the TSSA and the GRASP has been lowered to augment
the flexibility. The heuristics have been implemented in
MATLAB 2010b. Figure 1 illustrates the VRPTW heuristics on
the first 15 customers of the C101 Solomon test case. The
data is summerized in the first graph, it includes the time
windows (B/E TW), the service time (ST) and the determinic
demand (D).
I I I . TH E IN V E N T O R Y R O U T I N G PR O B L E M
An exact Branch and Cut algorithm is applied on a
simplified IRP which provides a Lower Bound for the
problem, the model is based on the work of Archetti et al. [5]
The IRP is simplified by only allowing one vehicle.
The model is implemented in IBM ILOG 6.3 and employs
CPLEX cuts instead of the dynamic cuts proposed by Archetti
et al. However, due to the simplifications the quality of the
bound is subpar, making the Lower Bound close to irrelevant
for the problem setting.
Therefor we explore the approximation method provided
by Yu, Chen and Chu. [6] Their IRP model is first modified to
consider time windows. Arc’s infringing the time windows are
excluded; a binary variable (=“1” if route (i, j) is
possible, “0” otherwise) is used to impose this restriction.
The following constraint is added to the model of Yu, Chen
and Chu:
Where:
N: Number of customers
T: Number of periods
: Number of times arc (i, j) is used in period t
Using the Lagrangian Relaxation technique the IRP model
can be decomposed in a Routing and Inventory sub model.
The following five constraints are relaxed:
(∑
) ∑
FIGURE 1: VRPTW-DATA & HEURISTIC SOLUTIONS
2
14
12
15
13
10
11
9
8
6
7
4
3
5
1
Total Distance
= 376
ACS
2
1412
15
13
10
11
9
8
6
7
4
3
5
1
B.TW:727
E:TW:782
ST:90
D:10
B.TW:534
E:TW:605
ST:90
D:10B.TW:621
E:TW:702
ST:90
D:20
B.TW:448
E:TW:505
ST:90
D:10
B.TW:567
E:TW:620
ST:90
D:10
B.TW:652
E:TW:721
ST:90
D:20
B.TW:384
E:TW:429
ST:90
D:40
B.TW:30
E:TW:92
ST:90
D:30B.TW:357
E:TW:410
ST:90
D:10
B.TW:255
E:TW:324
ST:90
D:20
B.TW:170
E:TW:225
ST:90
D:20B.TW:15
E:TW:67
ST:90
D:10
B.TW:912
E:TW:967
ST:90
D:10
B.TW:65
E:TW:146
ST:90
D:10
B.TW:825
E:TW:870
ST:90
D:30
2
14 12
15
13
10
11
9
8
6
7
4
3
5
1
Total Distance
= 203
TSSA
2
14 12
15
13
10
11
9
8
6
7
4
3
5
1
Total Distance
= 173GRASP
2
14 12
15
13
10
11
9
8
6
7
4
3
5
1
Total Distance
= 178
VNS
( )
( )
Where:
M: Number of vehicles
: Quantity transported by vehicle m, over arc (0, i)
in period t
: Quantity transported over arc (i, j) in period t
: Binary variable; “1” if vehicle m is used to go to
customer i in period t, “0” otherwise
: Vehicle capacity
Relaxing these constraints enables us to separate the
Routing and Inventory decision variables (( ) &
( )) and decompose the model. Given that this isn’t
an exact decomposition a Surrogate Sub gradient method is
used to solve the model. First the sub models are
independently solved with the multipliers ( ) set to zero.
( , -) These multipliers are then updated using the
following formula:
* +
Where:
k= Number of iteration
S= Calculated step size
g= Gradients
The sub models are then recalculated using the updated
multipliers and the values for from the
previous iteration. The iterations stop when certain criteria’s
are met. In order to retrieve a feasible solution the variables
and from the final iteration are inputted in the
IRP(TW) model. This provides us with a feasible value for
(=Order Quantity for customer i in period t). The Order
Quantity ( ) then serves as input variable for a VRPTW
heuristic. This way a feasible solution for the IRPTW with
breaks can be determined. The Surrogate Sub gradient and
the different models are all implemented in IBM ILOG 6.3.
After the approximation approach a heuristic approach is
considered. The developed heuristic leaves the inventory
costs out of the equation and focuses on minimizing the
number of vehicles and travelled distance. (Figure 2)
An initial solution is determined by ordering X times the
current demand when a stock-out should occur (Inventory
( ) 0). For the test cases three times the current demand
is ordered. The heuristic then takes a route out of the busiest
period and plans it in the previous period. The extracted
route is the route most likely to be compatible to other
routes, augmenting the chance that the route can be inserted
in the other routes. In certain cases the order quantity is
lowered, but only when this leads to a decrease in the
number of routes. Adjustments are made and the iteration
starts over. The loop stops when certain criteria’s are met.
FIGURE 2: IRPTW HEURISTIC
The heuristic applies the VRPTW heuristics as described
before to determine the routes in each period. The diversity
provided by using different meta-heuristics seems to benefits
the IRPTW heuristic. There seems to no one VRPTW meta-
heuristic that consistently provides the best solution within
the IRPTW heuristic, although the ACS does seems to come
out on top quite often.
TABLE 1: SAVINGS COMPARED TO INITIAL SOLUTION
Method C1 (1-3) R2 (1-3) RC2(1-3) Average
TSSA 12% 18% 22% 18%
VNS 14% 20% 13% 15%
GRASP 9% 20% 23% 17%
ACS 11% 25% 21% 19%
Approximation 9% -8% 18% 7%
IV. C O N C L U S I O N
Test cases for the IRPTW are developed based on the
SOLOMON test cases (C1, R2 and RC2) for the VRPTW. Table
1 shows the savings compared to the initial solution (=
ordering three times the current demand when a stock-out
should occur) for those test cases.
Not surprisingly the approximation approach provides the
best inventory costs for all the test cases. The transport costs
however are quite high. If the emphasis is on the transport
costs the heuristic approach clearly outperforms the
approximation approach. This becomes very apparent in
customer sets R2. Here the transport aspect weighs much
more on the total costs than the inventory aspect. The
preferred method thus depends on the weight given to those
mayor cost factors. The weight used gives the heuristic
approach the edge over the approximation method.
R E F E R E N CE S
[1] Tong, Z., et al. Hybrid Ant Colony Algorithm for the Vehicle Routing with Time Windows. in Computing, Communication, Control, and Management, 2008. CCCM '08. ISECS International Colloquium on. 2008. [2] Li, Z. and Orchard, Improved GRASP with Tabu search for vehicle routing with both time window and limited number of vehicles Innovations in Applied Artificial Intelligence. Vol. 3029. 2004. [3] R.Thangiah, S., I.H. Osman, and T. Sun, Hybrid Genetic Algorithm, Simulated Annealing and Tabu Search Methods for Vehicle Routing Problems with Time Windows. Report SRU CpSc-TR-94-27, 1994. [4] Bräysy, O., A reactive variable neighborhood search for the vehicle-routing problem with time windows. INFORMS journal on computing, 2003. 15(4): p. 347. [5] Archetti, C., et al., A Branch-and-Cut Algorithm for a Vendor-Managed Inventory-Routing Problem. Transportation Science, 2007. 41(3): p. 382-391. [6] Yu, Y., H. Chen, and F. Chu, A new model and hybrid approach for large scale inventory routing problems. European Journal of Operational Research, 2008. 189(3): p. 1022-1040.
Determine
initial Order
Quantity
Execute a
VRPTW for
each period
Busiest
period?
Route to
take out?
Reschedule
route
Make adjustments
and check for
stock-outs
#
routes
For busiest
period
Which period
to adjust
VII Inhoudsopgave
Inhoudsopgave Afkortingen ............................................................................................................................................. IX
1 Inleiding ........................................................................................................................................... 1
1.1 Inventory Routing Probleem ................................................................................................... 2
1.2 Voorbeeld ................................................................................................................................ 4
1.3 Aanpak ..................................................................................................................................... 8
2 Het Vehicle Routing Probleem ........................................................................................................ 9
2.1 Inleiding ................................................................................................................................... 9
2.2 Exacte algoritmen voor een VRPTW ...................................................................................... 11
2.2.1 Complexiteit van het VRPTW ........................................................................................ 11
2.2.2 Polythoop van een VRPTW ............................................................................................ 11
2.2.3 Exacte decompositie...................................................................................................... 12
2.3 Heuristiek voor een VRPTW .................................................................................................. 13
2.3.1 Push Forward Insertion Heuristiek ................................................................................ 14
2.3.2 Hybride Tabu Search en Simulating Annealing ............................................................. 16
2.3.3 Improved Greedy Randomized Adaptive Search Procedure ......................................... 22
2.3.4 Variable Neighbourhood Search ................................................................................... 28
2.3.5 Ants Colony System ....................................................................................................... 32
2.3.6 Conclusies ...................................................................................................................... 36
3 Het Inventory Routing Probleem................................................................................................... 38
3.1 Een basis IRP Model .............................................................................................................. 38
3.1.1 Model P ......................................................................................................................... 38
3.2 Een Branch en Cut algoritme voor een IRP ........................................................................... 41
3.2.1 Model BC ....................................................................................................................... 41
3.3 Benaderingsmethode voor een IRPTW model ...................................................................... 47
3.3.1 Beperking oplossingsruimte .......................................................................................... 47
3.3.2 Een hybride aanpak voor het IRPTW model .................................................................. 49
3.4 Heuristieken voor een IRPTW model .................................................................................... 63
3.4.1 IRPTW via een GA en een VNS VRPTW heuristiek ......................................................... 63
3.4.2 Een optimalisatie heuristiek .......................................................................................... 72
3.4.3 Kleinste bovengrens ...................................................................................................... 84
4 Vergelijkende resultaten ............................................................................................................... 87
5 Conclusie ....................................................................................................................................... 90
Referenties ............................................................................................................................................ 91
VIII Inhoudsopgave
Lijst met figuren ..................................................................................................................................... 96
Lijst met tabellen ................................................................................................................................... 97
Bijlagen .................................................................................................................................................. 98
Bijlage A: Standaardinstanties IRPTW ............................................................................................... 98
Bijlage B: Branch en Cut model ......................................................................................................... 99
Databestand .................................................................................................................................. 99
Modelbestand ............................................................................................................................... 99
OptieBestand ............................................................................................................................... 100
Resultaat ...................................................................................................................................... 100
Bijlage C: Hybride IRP(TW) model ................................................................................................... 102
Submodel 1: vereenvoudigde modellering ................................................................................. 102
Submodel 2: vereenvoudigde modellering ................................................................................. 104
Model P’: vereenvoudigde modellering ...................................................................................... 106
Bijlage D: Voorraadmodel ............................................................................................................... 108
Bijlage E: MATLAB GA toolbox function description ....................................................................... 110
Scaling function ........................................................................................................................... 110
Selection function ........................................................................................................................ 110
Reproduction ............................................................................................................................... 111
Mutation function ....................................................................................................................... 111
Migration ..................................................................................................................................... 113
Plot functions............................................................................................................................... 113
Bijlage F: routeuit.m ........................................................................................................................ 115
Bijlage G: kosten.m .......................................................................................................................... 116
Bijlage H: Uitleg bij IRPTW.m ........................................................................................................... 117
Bijlage I: Resultaten IRPTW heuristieken op voorbeeld .................................................................. 118
Kosten berekend via de TSSA heuristiek ..................................................................................... 118
Kosten berekend via de ANTS heuristiek .................................................................................... 119
Kosten berekend via de GRASP heuristiek .................................................................................. 120
Kosten berekend via de VNS 3H heuristiek ................................................................................. 121
Kosten berekend via de VNS 2H heuristiek ................................................................................. 122
Bijlage J: Instructie invoeren heuristieken ...................................................................................... 123
IX Afkortingen
Afkortingen Combinatorische problemen:
– BBP: Bin Packing Probleem
– CVRP: Capacitated Vehicle Routing Probleem
– IRP: Inventory Routing Probleem
– IRPTW: Inventory Routing Probleem met tijdsvensters
– SS1: Single Machine Scheduling Probleem
– TSP: Travelling Salesmen Probleem
– VRP: Vehicle Routing Probleem
– VRPTW: Vehicle Routing Probleem met tijdsvensters
Metaheuristieken:
– ACS: Ants Colony System
– GA: Genetic Algoritme
– GRASP: Greedy Randomized Adaptive Search
– PFIH: Push Forward Insertion Heuristiek
– SA: Simulating Annealing
– TS: Tabu Search
– TSSA: Hybride Tabu Search en Simulating Annealing
– VNS: Variable Neighbourhood Search
– VNS2H: Variable Neighbourhood Search met 2 mutatie functies
Andere:
– B&C: Branch & Cut
– MIP: Mixed Integer Programming
– SSG: Surrogate Subgradient
– VMI: Vendor Managed Inventory
– UB: Upper Bound
– LB: Lower Bound
1 Inleiding
1 Inleiding Een Inventory Routing Probleem (IRP) behandelt de coördinatie van zowel transport als
voorraadbeheer [1], gewoonlijk noodzakelijk voor situaties waar consumenten zich beroepen op een
centrale leverancier voor de bevoorrading van een veelgebruikt goed. [2] Het IRP beoogt een
leveringsschema op te stellen dat de voorraadkosten afweegt tegen de transportkosten. [3] Het is
dan ook het kernprobleem voor supply chains die een zogenoemde Vendor Managed Inventory
(VMI) strategie volgen. [1] Het optimaliseren van een IRP behoord tot het veld van combinatorische
optimalisatie.
De VMI strategie ontheft de klanten van hun verantwoordelijkheid om de bestelhoeveelheid te
bepalen, in plaats daarvan beslist de leverancier wanneer en hoeveel geleverd wordt aan de klant,
met als enige beperking het respecteren van het minimaal gewenste voorraadsniveau bij de klant. [4]
Deze strategie biedt een substantieel besparingspotentieel voor de supply chain, zowel op korte als
op lange termijn. Het gebruik van de VMI strategie vermindert immers het bullwhip effect1. [5-7] De
inherente complexiteit zorgt er echter voor dat deze strategie zijn potentieel nog niet helemaal heeft
kunnen waarmaken. [8]
Het IRP is een variant op het Vehicle Routing Probleem (VRP), gezien ook hier de leverancier de
routes en het tijdstip van een levering moet bepalen. Door de bestelde hoeveelheid op te nemen als
beslissingsvariabele wordt een VRP uitgebreid naar een IRP. [9] In vergelijking met VRP staat het
onderzoek over het IRP nog in zijn kinderschoenen. [10]
Het specifiek IRP dat in deze scriptie onderzocht zal worden, is een IRP waarin klanten beleverd
moeten worden tussen bepaalde tijdsvensters, zo kan het bijvoorbeeld zijn dat een klant enkel
tussen 10-11u een levering mag ontvangen, en routeplanners verplicht rekening moeten houden met
een pauze van 15 minuten in de voor- en namiddag en een middagpauze van 45 minuten.
1 Het bullwhip effect verwijst naar het vergrotend effect van een fluctuerende vraag naarmate men opklimt in
de supply chain.
2 Inleiding - 1.1 Inventory Routing Probleem
1.1 Inventory Routing Probleem Het finaal doel van het specifiek IRP model in deze scriptie is om een zo optimaal mogelijk
leveringsschema op te stellen dat voldoet aan het tijdsvenster en “geen voorraadbreuk” beperkingen.
Daarnaast wordt ook de verplichting om pauzes op te nemen in rekening gebracht. Dit schema is
optimaal wanneer het de distributie- en voorraadkosten minimaliseert. Drie beslissingen moeten
genomen worden:
Wanneer een klant te bedelen.
Hoeveelheid die een klant geleverd krijgt.
Leveringsroutes die gebruikt worden.
Prijs, locatie en andere beslissingen worden hier dus achterwege gelaten hoewel ze zeker hun plaats
hebben binnen de VMI strategie. [11]
Naargelang de aard van de supply chain die men wil optimaliseren, kan men het model aanpassen.
Deze scriptie behandelt een basis supply chain model met de volgende assumpties:
Deterministische vraag.
Distributie vanuit één verdeelcentrum.
Eén homogene productgroep (zelfde gewicht en zelfde afmetingen).
Homogene voertuigen met dezelfde capaciteit en kosten.
Klanten kunnen bereikt worden met heen- en terugroutes van minder dan een dag.
Binnen de literatuur worden tal van IRP varianten beschreven die deze assumpties achter zich laten.
Hieronder worden enkele interessante varianten aangehaald.
Zo komen bijvoorbeeld stochastische en/of dynamische IRP aan bod in het werk van onder andere
Kleywegt en Trudeau et al. [1, 12-19]. Ondanks het vele onderzoek blijft de stochastische IRP echter
een vrij onhandelbaar probleem.
Ook de assumptie van homogene goederen werd door diverse auteurs naast zich gelaten. Zo gebruikt
Douglas Popken een combinatie van lineair programmeren en een “adjacent concave flows”
heuristiek om het potentieel van een multi-attribuut en multigoederenmodel aan te tonen.[20] Ook
andere auteurs laten diverse goederen toe. [21-25]
Vervolgens kan ook de assumptie van één verdeelcentrum en heterogene voertuigen uit het model
gehouden worden. Hoewel het voorraadaspect er niet aanwezig is, kan hier toch verwezen worden
naar de literatuur aangaande maritieme Vehicle Routing Problemen. Deze VRP varianten focussen
zich weliswaar op maritiem transport, maar blijken uiterst wendbaar en omvattend. Zo komen in het
3 Inleiding - 1.1 Inventory Routing Probleem
model van Al-Khayyal en Hwang aspecten aan bod als laad- en lostijden, specifieke transportnoden
van productgroepen en voorraad afhankelijke tijdsvensters. [21] Daarnaast zijn er VRP varianten die
meerdere depots opnemen, laden en lossen toelaten, gesplitste leveringen toelaten, … .
Een laatste assumptie die met betrekking tot de supply chain gemaakt wordt, is dat klanten bereikt
kunnen worden binnen een termijn van één dag, wat niet altijd het geval is. Savelbergh en Song
gebruiken een innovatieve Greedy algoritme om een model op te lossen dat niet enkel rekening
houdt met routes over meerdere dagen, maar ook meerdere productpick-ups in verschillende
verdeelcentra toelaat. [26]
Ten slotte zijn er ook variaties met betrekking tot de tijdsperiode die in beschouwing wordt genomen.
Binnen deze scriptie wordt een beperkte planningshorizon gebruikt in tegenstelling tot de cyclische
modellen die een oneindige planningshorizon in beschouwing nemen.
Bramel en Simchi-Levi classificeren de volgende drie algemene IRP modellen op basis van de
planningshorizon die in beschouwing wordt genomen: [27]
Modellen met stochastische vraag en een enkele periode. [28]
Modellen met deterministische vraag en meerdere perioden. [29, 30]
Modellen met deterministische vraag over een oneindige planningshorizon. [31, 32]
4 Inleiding - 1.2 Voorbeeld
1.2 Voorbeeld
Deze scriptie is geen casestudie en maakt dus ook geen gebruik van een gegeven dataset. Daarom zal
hier een klein voorbeeld beschreven worden dat doorheen deze scriptie de werking van de
technieken moet illustreren.
Om niet zomaar een willekeurig voorbeeld te gebruiken, kan men zich beroepen op een van de
standaardtestinstanties die beschikbaar zijn voor het VRP met tijdsvensters (VRPTW). Zo kan men
zich beroepen op de Solomoninstanties. Deze instanties kunnen vrij gedownload worden op diverse
sites en worden opgedeeld in 6 datasets (C1,C2,R1,R2,RC1 & RC2) om enerzijds een onderscheid te
maken tussen sets met veel of weinig klanten per route en anderzijds door bepaalde geografische
eigenheden (bv. clusters) voor de klantengroep in beschouwing te nemen. [33] Niet alle sets zijn
echter relevant binnen deze probleemsetting. De sets R1 en RC1 beschouwen klanten van wie de
tijdsvensters geconcentreerd zijn in de voormiddag. Gezien hier geen pauzes opgenomen zullen
worden, kan men deze datasets dus achterwege laten. Set C2 beschouwt dan weer routes die zich
kunnen spreiden over meerdere dagen. Hoewel het mogelijk is om extra pauzes op te nemen,
waardoor deze setting eventueel benadert kan worden, wordt deze dataset buiten beschouwing
gelaten.
Uit de dataset C1(01) werd voor de eerste 15 klanten de volgende data overgenomen:
Tabel 1: Voorbeeld - Klantengegevens
(zie bijlage cd: “SOLOMON.mat” voor alle instanties; coördinaten van depot (0,0))
Naar analogie met Lau, Liu en Ono is gekozen om deze Solomon instantie als basis te nemen en te
bewerken om de nodige gegevens voor een IRP op te stellen. [34] De functie datageneratie.m,
geïmplementeerd in de MATLAB 2010b omgeving en opgenomen in bijlage A, creëert de nodige
X-coord.
Y-coord.
Vraag
Begin tijdsvenster
Einde tijdsvenster
Behandel Tijd
5 18 10 912 967 90
5 20 30 825 870 90
2 16 10 65 146 90
2 18 10 727 782 90
2 15 10 15 67 90
0 19 20 621 702 90
0 16 20 170 225 90
-2 18 20 255 324 90
-2 20 10 534 605 90
-5 16 10 357 410 90
-5 19 10 448 505 90
-15 35 20 652 721 90
-18 25 30 30 92 90
-18 35 10 567 620 90
-20 30 40 384 429 90
5 Inleiding - 1.2 Voorbeeld
datainput op basis van deze beperkte Solomoninstantie. Door deze instanties op een systematische
manier uit te breiden tot de nodige input voor een IRP met tijdsvensters kan men zich nog steeds
beroepen op de eigenheden van de Solomoninstanties. Op die manier kan een diverse dataset
uitgewerkt worden.
De voorbeeldinstantie wordt vervolgens uitgebreid om ook het voorraadaspect te incorporeren.
Zowel de beginvoorraad, het maximum voorraadniveau als de vraag per periode moet worden
bepaald.
De vraag per periode wordt bekomen door de vraag in de Solomoninstanties te vermenigvuldigen
met een willekeurige factor die uniform verdeeld is tussen 0,5 en 1,5. Dit betekent dat uitgegaan
wordt van een vrij stabiele vraag bij de klanten. Het is echter mogelijk om een cyclisch verloop te
simuleren indien gewenst.
Ook de beginvoorraad is gebaseerd op de vraag afkomstig van de beperkte Solomoninstantie.
Ditmaal vermenigvuldigd met een willekeurige factor uniform verdeeld tussen 1,8 en 3,3. Deze
waarden zijn dusdanig gekozen om de eerste periode te ontlasten, maar toch de meeste klanten te
plannen binnen de eerste vier perioden.
De doelstelling van het model is de kosten te beperken, waarbij de vaste transport kosten cruciaal
geacht worden. De transportvloot beperken is dus een belangrijk doel binnen deze scriptie. Vandaar
dat het essentieel is dat de beginvoorraad groot genoeg is om de eerste periode te overbruggen. De
bovenste waarde (van 3,3) moet min of meer overeenkomen met de periode die men tracht te
overbruggen met één levering.
Het maximum voorraadniveau bij de klanten wordt bepaald op ofwel vijfmaal de vraag, ofwel de
voertuigcapaciteit. De factor 5 is vrij gekozen maar de maximumvoorraad mag de voertuigcapaciteit
niet overtreffen. De voertuigcapaciteit wordt trouwens vastgelegd op 300, een waarde die anderhalf
keer de standaard Solomoncapaciteit is.
6 Inleiding - 1.2 Voorbeeld
Tabel 2: Voorbeeld - Vraag per periode, beginvoorraad en de maximumvoorraad
perioden Klant 1 2 3 4 5 6 7 8 9 10 BV Max stock
1 5 8 13 8 6 10 9 12 10 13 34 65
2 40 21 19 40 34 15 42 30 31 33 71 210
3 13 14 9 6 12 8 13 9 13 7 29 70
4 6 14 5 12 12 9 9 15 9 9 25 75
5 7 8 8 14 7 8 9 12 6 14 36 70
6 12 19 11 25 24 14 24 21 27 21 54 135
7 28 18 17 20 15 29 19 15 19 24 70 145
8 18 14 27 22 17 14 14 20 19 25 52 135
9 6 13 12 6 14 7 11 10 7 5 35 70
10 13 13 9 6 11 7 12 10 8 14 25 70
11 13 14 6 7 12 12 13 10 9 11 33 70
12 27 23 20 16 24 18 21 28 27 28 45 140
13 43 39 15 15 18 23 16 28 25 31 95 215
14 14 8 8 14 8 6 10 14 9 12 31 70
15 45 38 39 58 23 31 38 44 55 39 111 290
Via de coördinaten in de Solomoninstantie kan men een waarde geven voor de transport- en
tijdskosten. De formule kan gevonden worden in bijlage. (disttab.m ) Deze formule is echter wel van
weinig nut. Het werken met coördinaten is immers weinig realistisch. Het zou beter zijn om bv. via
Google maps, Mappy of soortgelijke applicaties realistischere waarden te krijgen voor de
transporttijd. Na verloop van tijd kan men eventueel ook op basis van ervaring of tijdsvensters
rekening houden met congestie, openbare werken, ongevallen en dergelijke.
Een interessante applicatie die in deze context kan vermeld worden is een TSP solver via Google
maps die kan teruggevonden worden op http://www.gebweb.net/optimap/.
Vanuit de literatuur heeft men al vele pogingen gedaan om dergelijke aspecten te incorporeren in
routingproblemen. Verscheidene dynamische routingproblemen werden daarom uitgewerkt. [35-40]
Gegeven de toegevoegde complexiteit wordt het dynamisch facet in deze scriptie buiten
beschouwing gelaten. De gebruikte disttab.m functie is in alle waarschijnlijkheid dus weinig realistisch,
maar biedt hier op een efficiënt en simpele manier soelaas.
7 Inleiding - 1.2 Voorbeeld
Toegepast op het voorbeeld komen we tot matrix B. (Coördinaten voor leveringsdepot zijn (0,0)) De
corresponderende B matrix is de volgende 16 x 16 matrix:
Tabel 3: Voorbeeld - Transportkosten/tijd van klant i naar klant j
Klanten Depot 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Depot 0 19 21 16 18 15 19 16 18 20 17 20 38 31 39 36
1 19 0 2 4 3 4 5 5 7 7 10 10 26 24 29 28
2 21 2 0 5 4 6 5 6 7 7 11 10 25 24 27 27
3 16 4 5 0 2 1 4 2 4 6 7 8 25 22 28 26
4 18 3 4 2 0 3 2 3 4 4 7 7 24 21 26 25
5 15 4 6 1 3 0 4 2 5 6 7 8 26 22 28 27
6 19 5 5 4 2 4 0 3 2 2 6 5 22 19 24 23
7 16 5 6 2 3 2 3 0 3 4 5 6 24 20 26 24
8 18 7 7 4 4 5 2 3 0 2 4 3 21 17 23 22
9 20 7 7 6 4 6 2 4 2 0 5 3 20 17 22 21
10 17 10 11 7 7 7 6 5 4 5 0 3 21 16 23 21
11 20 10 10 8 7 8 5 6 3 3 3 0 19 14 21 19
12 38 26 25 25 24 26 22 24 21 20 21 19 0 10 3 7
13 31 24 24 22 21 22 19 20 17 17 16 14 10 0 10 5
14 39 29 27 28 26 28 24 26 23 22 23 21 3 10 0 5
15 36 28 27 26 25 27 23 24 22 21 21 19 7 5 5 0
Ten slotte worden ook nog de voorraadkosten bepaald. Deze werden vrij bepaald, maar staan best in
verhouding tot de transportkosten. (de gebruikte formule is
Tabel 4: Voorbeeld - voorraadkosten
perioden
Klanten 1 2 3 4 5 6 7 8 9 10 1 3 3 3 3 3 3 3 3 3 3
2 1,5 1,5 1,5 1,5 1,5 1,5 1,5 1,5 1,5 1,5
3 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5
4 2 2 2 2 2 2 2 2 2 2
5 6,5 6,5 6,5 6,5 6,5 6,5 6,5 6,5 6,5 6,5
6 4,5 4,5 4,5 4,5 4,5 4,5 4,5 4,5 4,5 4,5
7 1,5 1,5 1,5 1,5 1,5 1,5 1,5 1,5 1,5 1,5
8 8 8 8 8 8 8 8 8 8 8
9 2 2 2 2 2 2 2 2 2 2
10 2,5 2,5 2,5 2,5 2,5 2,5 2,5 2,5 2,5 2,5
11 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0,5
12 4 4 4 4 4 4 4 4 4 4
13 5 5 5 5 5 5 5 5 5 5
14 5,5 5,5 5,5 5,5 5,5 5,5 5,5 5,5 5,5 5,5
15 8,5 8,5 8,5 8,5 8,5 8,5 8,5 8,5 8,5 8,5
De vaste transportkosten zijn 1 000 per gebruikt voertuig. Hiermee zijn alle nodige data besproken.
8 Inleiding - 1.3 Aanpak
1.3 Aanpak Deze scriptie behandelt een IRP met tijdsvenster- en personeelsroosterbeperkingen. Een uitbreiding
die de complexiteit verhoogt en de referenties danig beperkt. Vandaar dat er voor het opnemen van
tijdsvensters een beroep gedaan wordt op de kennis uit het VRP onderzoeksgebied. Hoofdstuk 2 gaat
hier dieper op in. Exacte optimalisatietechnieken worden besproken voor het VRP met
tijdsvensterbeperkingen, maar niet geïmplementeerd. Diverse heuristieken voor VRP met
tijdsvensters (VRPTW) worden echter wel geïmplementeerd. De vier voorgestelde metaheuristieken
werden allen geïmplementeerd in MATLAB 2010b. De personeelsroosterbeperkingen worden
vereenvoudigd door het verplicht opnemen van pauzes door de chauffeurs op bepaalde tijdstippen.
Ook dit komt aan bod tijdens de bespreking van de heuristieken.
Hoofdstuk 3 behandelt het Inventory Routing Probleem. Ter inleiding wordt een standaard IRP model
opgesteld waarna verschillende oplossingstechnieken bekeken worden. Een vereenvoudigde IRP
wordt exact opgelost met behulp van een Branch en Cut (B&C) methode om een Lower Bound (LB) te
bepalen. Vervolgens wordt een Decompositie en Lagrangian relaxatietechniek toegepast om een IRP,
die flagrante tijdsvensterschendingen vermijdt, benaderd te optimaliseren. Hiervoor wordt een
Surrogate Subgradient (SSG) methode gebruikt. De bekomen bestelhoeveelheid worden vervolgens
als input gebruikt voor een VRPTW heuristiek die de routes genereert. Deze exacte en
benaderingsoptimalisatietechnieken werden beide geïmplementeerd in IBM ILOG OPL IDE 6.3, die
gebruik maakt van de CPLEX 12.2 solver. Dit hoofdstuk wordt afgesloten met een IRPTW heuristiek
gebaseerd op het Genetic Algoritme (GA) en een eigen IRPTW heuristiek. Voor de GA werd een
beroep gedaan op de standaard GA Toolbox beschikbaar in MATLAB 2010b en ook de eigen
heuristiek werd in MATLAB opgebouwd. Daarnaast maken beide heuristieken en de
benaderingsmethode gebruik van een voorraadmodel opgesteld in IBM ILOG dat ingelezen wordt in
MATLAB.
Doorheen de scriptie wordt het voorbeeld uit de vorige paragraaf uitgewerkt. De scriptie wordt
afgesloten met een bespreking van de resultaten en enkele conclusies.
9 Het Vehicle Routing Probleem - 2.1 Inleiding
2 Het Vehicle Routing Probleem
2.1 Inleiding Dantzig and Ramser [41] stellen dat een VRP kan beschreven worden als een m-TSP probleem, of een
Travelling Salesmen probleem met meerdere verkopers (het zogenaamde ‘clover leaf’ probleem),
met de aanvullende beperking dat een vooraf bepaalde hoeveelheid moet geleverd worden aan de
bezochte klanten. In het specifiek geval dat de capaciteit van een voertuig groter is dan de totale
vraag kan men het VRP terugbrengen naar een TSP. Immers, in dat geval moet de optimale
(goedkoopste) route (hamiltonian cycle) gevonden worden van één voertuig (verkoper) die aan een
vooraf bepaalde set van klanten moet leveren (verkopen/bezoeken).
Het TSP is een goed gekend probleem dat behoort tot de NP-compleet complexiteitklasse. Dit
betekent dat het probleem zowel tot de NP (in non- deterministische polynomiale tijd verifieerbaar)
als NP-Hard problemen behoort. Een oplossing wordt moeizaam bekomen, maar kan snel
geverifieerd worden. De tijd die nodig is voor het vinden van een oplossing zal dus snel stijgen als de
grootte van het probleem groeit, ongeacht het gebruikte algoritme.
Figuur 1:
Een baanbrekende oplossingsmethode voor het TSP is er gekomen in 1954 door Dantzig, Fulkerson
en Johnson. [42] Hun aanpak is gebaseerd op het identificeren van lineaire ongelijkheden of “cutting
planes”. Het toevoegen van deze ongelijkheden zorgt voor een verstrakking van de lineaire relaxatie
voor het TSP.
Telkens een optimale waarde gevonden wordt voor het gerelaxeerd probleem (met behulp van de
simplex methode) dat buiten het convexe omhulsel ligt van het mogelijkheidsgebied gedefinieerd in
het oorspronkelijk TSP, kan men die waarde uit het mogelijkheidsgebied van het gerelaxeerd
probleem bannen aan de hand van een “Hyperplane”. De toegevoegde lineaire ongelijkheid (of cut)
10 Het Vehicle Routing Probleem - 2.1 Inleiding
moet zodanig opgesteld worden dat deze gebande extreme punten de ongelijkheid schenden zonder
het TSP mogelijkheidsgebied uit te sluiten. Dit verstrakt de relaxatie waardoor uiteindelijk (na de
nodige iteraties) een optimale oplossing gevonden kan worden die behoord tot het TSP
mogelijkheidsgebied.[43] Omdat er echter geen volledige beschrijving van de TSP polythoop gekend
is en het TSP tot de NP-compleet combinatorische optimalisatieproblemen behoort, is er geen hoop
op een cutting plane methode die binnen een polynomiale tijd kan worden opgelost. Tenminste
zolang niet bewezen wordt dat P=NP. Dantzig et al. bewezen echter wel dat het mogelijk is om de
cutting plane methode toe te passen door de TSP polythoop te omvatten in de grotere polythoop
van het gerelaxeerd probleem waarover we een lineaire doelfunctie minimaliseren. Op deze manier
kan een lineaire relaxatie van een TSP geformuleerd worden die een Lower Bound geeft en bruikbaar
is binnen een Branch en Bound methode. Padbergh en Rinaldi verfijnden de enumeratie bij Branch
en Bound aan de hand van de polyhedrale aanpak wat leidde tot de Branch en Cut
oplossingsmethode. [44] Aan de hand van deze methode kon in 1987 een TSP van 5322 steden
opgelost worden. Het is ook deze basismethode die gebruikt zal worden om een exacte oplossing te
vinden voor een eenvoudig IRP probleem. [10]
Via de cutting plane methode slaagden Dantzig et al. erin om een TSP met 42 steden op te lossen.
Het aantal steden is sindsdien sterkt gestegen. Zo is in 2006 een probleem van 85 900 steden
optimaal opgelost. Daarnaast is er ook een benaderingsalgoritme dat in 2009 een TSP met 1 904 711
steden opgelost heeft tot binnen 0,056% van het optimaal3.
Laporte, Nobert en Desrochers waren de eersten om de polyhedrale aanpak te gebruiken voor een
VRP. Zij vertrokken van de probleembeschrijving in Dantzig, Fulkerson and Johnson maar
verstrengden de subtour eliminatierestrictie om hun model te formuleren. Deze subtour
eliminatierestricties worden toegevoegd zodat de gerelaxeerde polythoop verstrakt. [45, 46]
2 http://www.tsp.gatech.edu/history/milestone.html (30/3/2011)
3 http://www.seas.gwu.edu/~simhaweb/champalg/tsp/tsp.html (30/3/2011)
11 Het Vehicle Routing Probleem - 2.2 Exacte algoritmen voor een VRPTW
2.2 Exacte algoritmen voor een VRPTW Een vrij populaire uitbreiding op het VRP model is het opnemen van tijdsvensters. Het opnemen van
tijdsvensters houdt in dat klanten slechts geleverd kunnen worden voor en na een bepaald tijdstip.
Deze paragraaf zal beknopt de literatuur en basismethoden voor een VRP met tijdsvensters (VRPTW)
bespreken. Hiervoor wordt sterk gesteund op het werk van onder andere Brian Kallehauge. [43] [47]
[48].
Er zijn twee basisontwikkelingen op het gebied van exacte oplossingsmethoden. De ene is een
algemene decompositiemethode en de oplossing van een zeker duaal probleem geassocieerd met
een primaal VRPTW. De andere focust zich op de analyse van de polyhedrale structuur van een
VRPTW. In beide aanpakken staat het idee van convexiteit centraal. De complexiteit en de polythoop
voor het probleem worden hieronder besproken.
2.2.1 Complexiteit van het VRPTW
Indien men de tijdsvensters ongebonden laat kan men stellen dat het VRPTW probleem identiek is
aan de gelimiteerde of C(acitated) VRP, heft men vervolgens de capaciteitrestrictie op dan kan het
probleem beschouwd worden als een m-TSP (supra p9, paragraaf 2.1) en uiteindelijk dus ook tot een
TSP (m=1).
De vraag of er daadwerkelijk een mogelijke oplossing bestaat voor een bepaalde instantie voor het
CVRP kan men beschouwen als een bin packing probleem (BPP). Ten slotte kan een VRPTW beperkt
worden (geen transportkosten, ruime transportcapaciteit en één klant) tot een non-preemptive
single machine scheduling probleem met deadline en releasedatum (SS1). Gezien de NP-
compleetheid van TSP, BBP en SS1 [49] kan de NP-compleetheid van het VRPTW aangenomen
worden.
2.2.2 Polythoop van een VRPTW
Het oplossen van een VRPTW is equivalent met het minimaliseren van een functie over zijn
polythoop. Voor een volledige beschrijving van de polythoop wordt verwezen naar het werk van
Brain Kallehauge. [43]
Beknopt kan men zeggen dat de VRPTW polythoop van een tijd en capaciteit beperkte Digraph4 het
convexe omhulsel is van de vector van de k-routes in
= conv{ ∈ | ∈ }.
4 Digraph is een afkorting voor een directed of gerichte graph, en het is een diagram bestaat uit punten, zogenaamde
hoekpunten (knooppunten) en pijlen (zogenoemde arcs) gaande van een hoekpunt naar een hoekpunt. http://www.cs.odu.edu/~toida/nerzic/level-a/digraph/definition.html (21/02/2011)
12 Het Vehicle Routing Probleem - 2.2 Exacte algoritmen voor een VRPTW
Waar de Digraph het mogelijkheidsveld van de routes voorstelt, beperkt door de tijdsvensters en de
capaciteitsrestricties. Zo worden routes die een hogere capaciteit hebben dan toegelaten door het
gebruikte transportmiddel uitgesloten, net als diegene die de tijdsvensters overschrijden.
Met elke k-route in de Digraph associeert men dan de vector die 1 is indien in de k-route de arc
(i,j) gebruikt wordt. Tijdens de k-route gaan we dus van i naar j. (i,j ∈ Depot + klanten) In het ander
geval is de vector nul.
De NP-compleetheid van de VRPTW betekent ook dat geen volledige beschrijving voor de
ongelijkheden voor de VRPTW polythoop verwacht kan worden. Het is echter wel mogelijk om een
ondergrens te berekenen in polynomiale tijd door de VRPTW polythoop op te nemen in een grotere
polythoop waarover wel in polynomiale tijd kan worden geminimaliseerd. Het verruimen van de
polythoop betekent dat een oplossing één of meerdere beperkingen kan negeren. Het kan dus zijn
dat een oplossing buiten het mogelijkheidsgebied van het probleem ligt en dus onmogelijk is. Een
optie om onmogelijke oplossingen te vermijden is het toevoegen van ongelijkheden. Dit zorgt voor
een systematische beperking van de polythoop. Een werkwijze die ook toegepast zal worden op een
vereenvoudigd IRP. (infra p41, paragraaf 3.2) De subtour ongelijkheden die in de Branch en Cut
methode zijn toegepast, vinden hun oorsprong in het TSP verhaal en kunnen ook hier gebruikt
worden. Naast de subtour eliminatieongelijkheden [46] zijn er de pad ongelijkheden voorgesteld
door Kallehauge et al. [50, 51] en voor het eerst toegepast op een model met tijdsvensters door
Ascheuer et al. [52], de capaciteitsrestricties toegevoegd door Naddef en Rinaldi. [53], de tijd en pick-
up ongelijkheden voorgesteld door Bard et al. [54] , … .
2.2.3 Exacte decompositie
Voor de decompositieaanpak wordt gebruik gemaakt van de Lagrangian Relaxatietechniek. De
oplossingsprocedure kan als volgt worden samengevat: Eerst wordt het duaal probleem opgelost
met de geheeltaligheid opgegeven. Wanneer het optimaal resultaat toch integer is, dan is het
optimum voor het duaal probleem gevonden. Zo niet, worden sterke ongelijkheden toegevoegd door
gebruik te maken van een separatiealgoritme voorgesteld door Kohl die subtour
eliminatiebeperkingen en 2-pad cuts toevoegt. [55]
Deze ongelijkheden worden echter toegevoegd als kolommen in het lineaire programma en de duale
variabelen die corresponderen met de ongelijkheden worden gestabiliseerd. De 2-pad cuts worden
toegevoegd in de basis node terwijl de subtour eliminatierestricties in alle nodes van de Branch en
Bound tree worden gebruikt. Wordt hiermee nog steeds geen geheeltallige oplossing gevonden, dan
worden de duale multipliers van de “kind” nodes naar de optimale waarde van hun “ouder” nodes
gebracht. [43]
13 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
2.3 Heuristiek voor een VRPTW Het aantal beschikbare VRPTW heuristieken is enorm, zowel in aantal als in diversiteit. Bräysy en
Grandreau [56] geven een overzicht van enkele bekende VRPTW heuristieken (infra Tabel 5: De
eerste lijn toont het aantal routes, de tweede lijn de totale afstand) maar een volledige lijst lijkt haast
oneindig.
Tabel 5: Enkele metaheuristieken voor het VRPTW [56, 57]
Solomoninstanties (supra p4, paragraaf 1.2) Auteurs R1 R2 C1 C2 RC1 RC2
[58] Thangiah et al. (1994) 12,33 3 10 3 12 3,38
1.227,42 1.005,00 830,89 640,86 1.391,13 1.173,38
[59] Kontoravdis and Bard (1995) 12,58 3,09 10 3 12,63 3,5
1.325,44 1.164,27 827,3 589,65 1.500,94 1.414,21
[60] Potvin and Robillard (1995) 13,58 3,09 10,56 3,38 13,63 3,63
1.539,40 1.325,10 1.237,20 875,6 1.828,90 1.578,90
[61] Bachem et al. (1996) 12,58 3 - - 12,13 3,38
1.392,00 1.199,60 1.501,60 1.500,10
[62] Chiang and Russell (1996) 12,5 2,91 10 3 12,38 3,38
1.308,82 1.166,42 909,8 666,3 1.473,90 1.393,70
[63] Liu and Shen (1999) 12,17 2,82 10 3 11,88 3,25
1.249,57 1.016,58 830,06 591,03 1.412,87 1.204,87
[64] Kilby et al. (1999) 12,67 3 10 3 12,13 3,38
1.200,33 966,56 830,75 592,24 1.388,15 1.133,42
[65] Caseau et al. (1999b) 12,17 - - - 12 -
1.207,27 1.356,62
[66] Gambardella et al. (1999) 12 2,73 10 3 11,63 3,25
1.217,73 967,75 828,38 589,86 1.382,42 1.129,19
[67] Tan et al. (1999) 14,5 3,64 10,11 3,25 14,75 4,25
1.420,12 1.278,97 958,57 766,46 1.648,77 1.641,89
[68] Anderson et al. (2000) - - - - 11,63 -
1.397
[69] Tan et al. (2001c) 13,1 4,6 10 3,3 12,7 5,6
1.213,16 952,3 841,92 612,75 1.415,62 1.120,37
[70] Bräysy (2003) 11,92 2,73 10 3 11,5 3,25
1.222,12 975,12 828,38 589,86 1.389,58 1.128,38
[71] Bent and Van Hentenryck (2004) 11,92 2,73 10 3 11,5 3,25
1.211,10 954,27 828,38 589,86 1.384,17 1.124,46
[72] Rousseau et al. (2002) 12,08 3 10 3 11,63 3,38
1.210,21 941,08 828,38 589,86 1.382,78 1.105,22
[73] Czech and Czarnas (2002) - - - - 11,5 3,25
1.384,17 1.119,49
[74] Bräysy et al. (2004b) 12 2,73 10 3 11,5 3,25
1.214,69 960,44 828,38 589,86 1.389,20 1.124,14
Het grote aantal heuristieken maakt het uiterst moeilijk om op een verantwoorde manier één
bepaalde heuristiek uit te kiezen. Daarnaast is ook niet altijd de nodige data voor handen om de
metaheuristiek zelf te implementeren. De keuze is gemaakt om vier metaheuristieken voor VRPTW te
implementeren, met name een Tabu Search gecombineerd met Simulated Annealing (TSSA), een
Greedy Randomized Adaptive Search (Greedy), een Variable Neighbourhood Search (VNS) en een
Ants Colony System (ACS) heuristiek. Eerst wordt echter de Push Forward Insertion Heuristiek (PFIH),
gebruikt voor het bepalen van een initiële oplossing, besproken.
14 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
2.3.1 Push Forward Insertion Heuristiek
Als eerste stap in alle gebruikte metaheuristieken moet een initiële mogelijke oplossing bepaald
worden. Hiervoor werd een veelgebruikte heuristiek, namelijk de “Push Forward Insertion Heuristiek”
(PFIH) uitgewerkt in MATLAB 2010b. Deze is gebaseerd op de Solomon Insertion heuristiek. [33] Een
variant op de Solomon Insertion heuristiek kan gevonden worden in Chiang en Russell waar een
parallelle versie van de Russell Insertion heuristiek gebruikt wordt. [75] De Backer, Furnon et al. en
Schulze en Fahle gebruiken dan weer de besparingsheuristiek van Clarke en Wright. [76] [77] [78]
Figuur 2 (infra p14) legt de werking van de PFIH (PHIF.m) uit in pseudocode. Voordien moeten wel
eerst de klanten gesorteerd worden op basis van de minimumCost.m functie.
-α× + β×
+ γ×
⁄ =
Met
Waar op basis van de afstand tot het (-) distributiecenter (x α), de bovenste waarde van het
tijdsvenster (x β) en de terugkeerafstand (x γ) de kost berekend wordt van een klant om als eerste in
een route opgenomen te worden. Welke waarde men hecht aan deze elementen kan zelf bepaald
worden door de keuzes van alfa, bèta en gamma aan te passen. Deze waarden staat op
respectievelijk 70%, 10% en 20% [58] wat allerminst betekent dat het tijdsvenster het minst
belangrijk element is in de rekensom. Immers, omdat de waarden voor de tijdsvensters uitgedrukt
staan in minuten, kan dit soms vrij grote waarden geven. Op het voorbeeld toegepast, zijn dit de
kosten per klant:
Klanten 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Kosten 96,83 73,83 0,04 67,15 -5,76 59,86 9,36 21,05 47,75 26,87 38,47 57,98 -17,49 40,19 15,50
Waardoor in dit voorbeeld de klanten als volgt gesorteerd zijn: 13, 5, 3, 7, 15, 8, 10, 11, 14, 9, 12, 6, 4, 2,1.
Figuur 2: Pseudocode voor de Push Forward Insertion Heuristiek [58]
Step PFIH-1: Begin with an empty route starting from the depot.
Set r=1.
Step PFIH-2: If {all customers have been routed} then go to step PFIH-8.
For all unrouted customers j: Compute the cost according to (1), and sort them in ascending order of their costs.
Step PFIH-3: Select the first customer, j*, from the ordered list with the least cost and feasible in terms of time
and capacity constraints.
Step PFIH-4: Append j* to the current route r and update the capacity of the route.
Step PFIH-5: For all unrouted customers j: For all edges {k, l} in the current route, compute the cost of
inserting each of the unrouted customers between k and l.
Step PFIH-6: Select an unrouted customer j* at edge {k*, l*} that has the least cost.
If {insertion of customer j* between k* and l* is feasible in terms of time and capacity constraints}
then insert customer j* between k* and l*, update the capacity of the current route r, and go to Step PFIH-5,
else go to Step PFIH-7.
Step PFIH-7: Begin a new route from the depot.
Set r = r + 1.
Go to Step PFIH-2.
Step PFIH-8: All Customers have been routed.
Stop with a PFIH solution.
15 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
Op basis van deze rangschikking wordt een initiële klant gekozen. Gezien klant 13 ver van het
distributiecenter ligt en een laag tijdsvenster heeft, zal klant 13 als initiële klant in een route
opgenomen worden. Vervolgens loopt de PFIH heuristiek de niet opgenomen klanten één voor één
af van klanten op basis van de rangschikking.
De volgende klant die de heuristiek tracht in te voegen is klant 5. De heuristiek bekijkt of het mogelijk
is om klant vijf voor of na klant 13 in een route op te nemen. Omdat dit niet mogelijk is vanwege de
tijdsvensters (isTimeFactible.m) wordt klant 5 in een nieuwe route opgenomen. Merk op, dat indien
klant 5 wel opgenomen zou worden, dat dan de kans groot is dat ook in de optimale oplossing klant 5
opgenomen zou worden in een route met klant 13. Ofwel liggen de tijdventers beide heel vroeg
ofwel zijn ze beide ver gelegen van het depot maar dicht bij elkaar (tijdsvenster andere klant mag
niet geschonden worden). In elk geval zou het dan waarschijnlijk geacht worden dat deze klanten
samen geleverd worden. Naast de tijd moet ook de capaciteit van een route gecontroleerd worden.
In het voorbeeld worden enkel klant 8 en 15 samen in een route gepland, anderen worden
afzonderlijk geleverd. De initiële (en merkbaar zwakke) oplossing voor het vooropgestelde voorbeeld
is hieronder gegeven:
Figuur 3: Oplossing PFIH
Wat neerkomt op 14 routes voor 15 klanten en een totale afstand van 654
Om de pauzes van de chauffeurs te incorporeren wordt, in de functie die nagaat of het tijdsvenster
geschonden wordt (isTimeFactible.m), 15 of 45 minuten toegevoegd als een route een bepaalde
grens oversteekt. Als een route de grens oversteekt van de 200 minuten (dus een klant voor die
periode gevolgd door een klant na die periode) wordt 15 minuten toegevoegd aan de servicetijd om
zo de pauze voor de chauffeur in te calculeren. Hetzelfde geldt voor de grens 450min (middagpauze –
45 min) en 800min (avondpauze – 15 min). Deze functies zijn overigens ook overgenomen in alle
voorgestelde heuristieken. Dit zal verder ook gebruikt worden door de functie totalTardiness.m die
2
14 12
15
13
10
11
9
8
6
7
4
3
5
1
Totale afstand
= 654
16 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
aangeeft hoeveel de tijdsvensters geschonden worden en dus deels de aspiratiewaarde bepaalt. (De
aspiratiefunctie wordt verder besproken in paragraaf 2.3.2.4 infra p20.)
2.3.2 Hybride Tabu Search en Simulating Annealing
Een eerste gebruikte metaheuristiek is gebaseerd op een hybride Tabu Search en Simulating
Annealing (TSSA) zoals die beschreven is door Thangiah, Osman en Sun [58] en is uitgewerkt in
MATLAB 2010b.
2.3.2.1 Over de metaheuristiek
De Tabu Search is een methode die tracht een globaal minimum te vinden binnen een
oplossingsruimte zonder vast te geraken in een lokaal minimum [79]. Vertrekkend vanuit de initiële
routes, verkregen via de PFIH wordt de meest belovende beweging (beste buur) gekozen. De
bewegingen worden geëvalueerd volgens bepaalde aspiratiecriteria. De aspiratiefunctie wordt
verder besproken in paragraaf 2.3.2.4. (infra p20)
De gekozen bewegingen worden bijgehouden in een Tabulijst die deze gegevens bijhoudt voor de
laatste 10 iteraties. Een factor die overigens aanpasbaar is. Wanneer een bewegings attribuut op de
Tabulijst staat dan zal de nieuwe oplossing enkel aanvaard worden wanneer deze aan bepaalde
aspiratiescriteria voldoet. Indien de beweging niet aanvaard wordt dan wordt een volgende
beweging gekozen.
Figuur 4: Tabu beslissingsboom [80]
De aspiratiecriteria is een idee dat terugkomt in andere metaheuristieken waaronder Simulated
Annealing. In de combinatoriek kan de werking van Simulated Annealing als volgt samengevat
worden [81]: Een oplossing wordt gewaardeerd door deze een temperatuur te geven die
correspondeert met een evaluatie voor de doelfunctie. Het doel is de oplossing te vinden met het
Move
Bevat deze beweging
tabu-actieve attributen
Beweging is
toegelaten
Is de beweging
Tabu?
Beantwoord deze
beweging aan de aspiratie
criteria?
Beweging is
NIET toegelaten
Ja
Nee
Nee
Nee
Ja
Ja
17 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
laagste energieniveau. Veranderingen die tot een lagere energiewaarde leiden worden altijd
aanvaard terwijl energie stijgende veranderingen op basis van kans aanvaardt worden. De initiële
oplossing krijgt een hoge temperatuur mee (standaard 50) waarna op een systematische manier
veranderingen in de oplossing de temperatuur verlagen.
Figuur 5: Eigenschappen Simulated Annealing [80]
Afhankelijk van hun evaluatie van de doelfunctie en parameter T, die systematisch verkleinen tijdens
het proces, kan een niet-taboeoplossing, die geen verbetering in kosten biedt, toch nog aanvaard
worden. De kans waarmee verhittende veranderingen aanvaard worden, wordt berekend via de
formule:
⁄ . Waar C1 en C2 symbolen zijn voor respectievelijk de kost van de, in beschouwing
genomen oplossing en de kost van de huidige oplossing. Figuur 5 illustreert de werking: bij de
iteraties voor de eerste klim wordt een “buur” oplossing aanvaard, vergelijkbaar met een lokale
optimalisatie. In tegenstelling tot lokale optimalisatie zal SA de “klimmende” iteraties toch
aanvaarden met een zekere kans. Indien men hierbij niet over de klim raakt, zal, via een
systematische verkoeling, de lokale oplossing toch aanvaard worden door de SA heuristiek. Indien
ervan uitgegaan wordt dat de SA wel over de klim raakt, dan zal de oplossing uiteindelijk convergeren
tot het globaal minimum.
Door beide metaheuristieken te combineren verkrijgt men een hybride Tabu Search en Simulated
Annealing (TSSA) metaheuristiek waar de Tabu search uitgebreid wordt door oplossingen die de
huidige oplossing niet verbeteren met de hierboven vermelde kans toch te aanvaarden.
18 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
2.3.2.2 Werking TSSA VRPTW heuristiek
Figuur 6 vat de werking van de heuristiek samen.
Figuur 6: Flow diagram TSSA heuristiek
Inlezen Data
(A:Klantendata;
B:Afstandmatrix;
Capaciteit)
2-interchange (Klanten
worden gewisseld om
nauwe buren te vinden)
Initiële oplossing
genereren a.h.v Push
Forward Insertion
Heuristiek (PFIH)
Beweging taboe?
Nieuwe kosten<
huidige kosten?
Aanvaard route als beste
route en update gegevens,
temperatuur en voeg
bewegingen in tabu lijst
Huidige kosten <
beste kosten?
Beste routes worden uit
het programma gehaald
Tabu en SA gegevens:
tabuListSize=10;
TabuList= [];
Beste routes en kosten= huidige;
Max. temp=50;
Huidige temperatuur=max temp
Reset temp=max temp.
Finale temp=:0;
Temp. Beste oplossing=50;
KoelingFactor=0,5;
Evalueer mogelijke bewegingen
Update BestCost en Bclist martix
Selecteer meest
belovende
beweging
Bewegingen aan de hand
van de 2-interchange mutatie
functie(2 klanten worden van
route verwisselt)
Aspiratie functie evalueert
bewegingen. Schendingen
op restricties worden beboet.
Huidige route
word beste
route
Afgewezen: naar
volgende beweging
accepteer
nee
Accepteer of wijs af
volgens SA criteria
E^C1-C2 /T?
Nieuwe route wordt
bijgehouden als huidige
route, de kost als huidige
kost;
Update temperatuur en
Tabulijst
While aantal
iteraties<Maxiteraties
nee
ja
ja
Nieuwe route wordt huidige
route
Max #iteraties
bereikt
Initialisatie Tabu en SA
parameters
19 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
2.3.2.3 Toegepast op het voorbeeld
De heuristiek vertrekt van een initiële oplossing verkregen via de PFIH. (supra p14, paragraaf 2.3.1)
Een eerste stap verbeteringspoging gebeurt met behulp van de 2-interchange methode die klanten
wisselt tussen twee routes en zodra een route gevonden wordt die korter is, wordt deze opgenomen
als huidige oplossing. In het voorbeeld tracht de 2interchange.m functie eerst klant 5 voor en na klant
13 te voegen maar de tijdsvensters worden telkens geschonden. Het is wel mogelijk om klant 3 (de
volgende op de lijst) te leveren na klant 13. Met deze routes gaat de TSSA iteratie dus van start:
Figuur 7: Routes TSSA na 2-interchange voor verbeteringsiteratie
De 2interchange.m functie bepaalt de mogelijke buren van de huidige oplossing. De hier bijhorende
bewegingen worden geëvalueerd door de createBC.m functie die een kostenmatrix genereert die de
mogelijk bewegingen evalueert. De eerste beweging met de laagste kosten (-573) haalt klant 14 uit
de 7de route en hevelt die over naar de 9de route die nu vanuit het depot vertrekt naar klant 14 om
nadien klant 12 te leveren.
Move1=[9,14] en Move2=[7]
Figuur 8: Routes TSSA na eerste iteratie
Tabu list:
Temp=1,92°
2
14 12
15
13
10
11
9
8
6
7
4
3
5
1
Totale afstand
= 629
2
14 12
15
13
10
11
9
8
6
7
4
3
5
1
Totale afstand
= 555
20 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
De totale afstand vermindert hierdoor van 629 naar 555 waardoor de route aanvaardt wordt.
(acceptNewRoute=1) Dit betekent dat:
De huidige routes worden opgeslagen als de huidige beste oplossing
De temperatuur wordt bijgewerkt (currentTemp=currentTemp/(1+coolingFactor
currentTemp)
De Tabulijst wordt bijgewerkt5 (updateTabuList.m)
De kostmatrix wordt geüpdatet (updateBCs.m)
De lege routes worden eruit gehaald (removeEmptyRoutes.m).
Gezien de kost ook een verbetering is ten opzichte van de voorlopig beste kosten worden de huidige
temperatuur, route en de kost ook als beste opgeslagen.
Ook de volgende iteraties brengen op dezelfde manier verbeteringen toe. De iteratie wordt
afgebroken als ofwel de gewenste temperatuur gevonden is, of het maximum aantal iteraties bereikt
is. Het maximum iteraties is een veranderlijke bepaald door een vermenigvuldiging van een te
bepalen factor, het aantal klanten en de grootte van de tabuList ([.,k]).
Op het voorbeeld toegepast verkrijgt men via de TSSA heuristiek de volgende routes:
Figuur 9: Beste routes volgens TSSA heuristiek
2.3.2.4 Parameterwaarden
Het bepalen van aanvaardbare parameterwaarden is uiterst belangrijk bij de TSSA heuristiek. Het is
immers zo dat onmogelijke oplossingen frequent aangewend worden tijdens de zoektocht naar
5 De onderste rij van de Tabu lijst bevat de iteratie vanaf wanneer de beweging terug uit de Tabu lijst moet
gehaald worden.
2
14 12
15
13
10
11
9
8
6
7
4
3
5
1
Totale afstand
= 203
21 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
optimale punten. Een slechte parameterkeuze kan ertoe leiden dat de bekomen oplossing buiten het
mogelijkheidsgebied valt.
Vergelijkbaar met een “fitness” functie uit de Genetische Algoritmen maakt de TSSA heuristiek een
beoordeling van de mogelijke route aan de hand van een aspiratiefunctie. Onderdeel van de
aspiratiecriteria zijn de naleving van de capaciteit en tijdsvensterbeperkingen. De mate waarin een
oplossing deze beperkingen schendt, is dus een bepalende waarde in de aspiratiewaarde.
Een te hoge bestraffing is nefast voor het zoekpotentieel van de heuristiek, maar een te lage
bestraffing kan leiden tot onmogelijke oplossingen. Er moet een evenwicht gevonden worden tussen
de aspiratiedoelstellingen.
De aspiratiecriteria waarvan sprake zijn viervoudig:
Verminderen totale afstand
Verminderen totale rijtijd ( )
Verminderen overcapaciteit ( )
Verminderen tijdsovertreding ( )
Het toelaten van onmogelijke oplossingen die toch een ruime afstand of rijtijdvermindering
meebrengen verbetert merkbaar de efficiëntie van de heuristiek. Het bepalen hoeveel elke factor
moet doorwegen is echter geen evidentie. Het werk van Thangiah, Osman en Sun geeft
standaardwaarden mee. [58]
In tegenstelling tot de SA en TABU parameters (TabuListsize=10, maxtemp=50 ( ),
Resets=3, k=1 en een cooling factor van 0,5) wordt voor de gewichtswaarden voor de
aspiratiecriteria afgeweken van de waarden aangegeven door Thangiah, Osman en Sun. [58]
De invoegkost voor klant in route :
Waarbij:
Er is gekozen om het vermijden van een schending op een restrictie tienmaal zwaarder te laten
doorwegen op de aspiratiewaarde. De oplossing ligt hierdoor verder van het optimum, maar het
toepassingsgebied van de heuristiek wordt hierdoor wel verhoogd. Voor het vervolg van deze scriptie
is deze extra flexibiliteit wenselijk.
22 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
De tijdsovertreding houdt, zoals vermeld bij de bespreking van de PFIH, rekening met het verplicht
opnemen van pauzes bij het planen van de routes.
2.3.3 Improved Greedy Randomized Adaptive Search Procedure (GRASP )
De volgende gebruikte metaheuristiek voor het oplossen van de VRPTW is gebaseerd op de
verbeterde GRASP heuristiek zoals die uitgewerkt is door Li en Orchard [82] en werd
geïmplementeerd in MATLAB 2010b.
2.3.3.1 Over de metaheuristiek
Een basis GRASP VRPTW gebruikt een multistartmethode die in de eerste fase op zoek gaat naar een
mogelijke oplossing, daarna gevolgd door een lokale zoekfase [59, 83, 84]. De mogelijke oplossing
wordt willekeurig bepaald, waarna in de omgeving van de willekeurige oplossing gezocht wordt naar
een lokaal optimum.
De veranderingen, die aangebracht zijn door Li en Orchard, zijn samen te vatten in de volgende drie
basisgedachten:
1. Werken met meerdere initiële oplossingen. (in deze scriptie beperkt tot 3)
2. Het lokaal optimum wordt hergebruikt in de volgende iteratie.
3. Tijdens de iteratieve procedure in GRASP wordt de huidige oplossing op willekeurige basis
gemuteerd om zo niet in de lokale val te trappen. De zoekruimte wordt met vooraf bepaalde
probabiliteit op willekeurige tijdstippen verruimd. De zogenoemde “Mutation Improvement”
techniek. (mutationP=0,5 [82])
2.3.3.2 Werking van de improved GRASP VRPTW heuristiek
2.3.3.2.1 Initiële (mogelijke) oplossingen
Als eerste mogelijke oplossing wordt opnieuw gekozen voor de PFIH heuristiek ( ). Vervolgens
wordt op zoek gegaan naar een dichte buur ( ) en een randomoplossing waar een klant op een
willekeurige manier wordt ingevoerd ( ). Li en Orchard stellen nog drie andere mogelijkheden voor,
maar deze worden buiten beschouwing gelaten.
De dichte buur wordt verkregen via de nearest_customer.m functie. Deze functie loopt de klanten
anders af, namelijk op basis van nabijheid. De route wordt één voor één opgesteld. Bij elke route
wordt de onbediende klant op het einde van de route met de kleinste resterende overgebleven tijd
toegevoegd. De checkFeasibility.m functie gaat daarbij na of de route mogelijk is binnen de
restricties en indien positief bevonden, wordt een route opgesteld.
23 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
De random customer insertion function gebruikt dan weer willekeur om een route te selecteren en
een klant in te voegen op de plaats die de kleinste overblijvende tijd oplevert. Gegeven de willekeur
kan dit telkens andere resultaten geven.
2.3.3.2.2 Oplossing hergebruik
Een klassieke GRASP hergebruikt zijn oplossingen niet. Hier is dit toch de bedoeling. Daarom worden
de waarden voor gelijkgesteld met de huidige oplossing.
2.3.3.2.3 Verbeteringsalgoritme
Het globale iteratieve zoekalgoritme loopt door tot een bepaald aantal maximumiteraties
(MaxIteration= 20) overschreden wordt. Binnen een iteratie wordt eerst een beperkte Tabu Search
(TS) toegepast om het lokaal optimum te vinden beginnende bij een initiële oplossing.
Stap 1: Oproepen beperkte Tabu Search (in updateRoutes)
Het TS algoritme die gebruikt wordt, is vergelijkbaar met deze die voordien besproken werd. Met dat
verschil dat de SA concepten niet toegepast worden en de temperatuur niet bijgehouden wordt. (Een
beweging wordt dus enkel aanvaard als het niet op de Tabulijst staat of beantwoordt aan bepaalde
aspiratiecriteria.) Daarnaast worden de listgrootte en de huidige oplossing meegegeven in het GRASP
hoofdprogramma.
Vertrekkende vanuit de PFIH oplossing die hieronder opnieuw geïllustreerd wordt, wordt dus een
beperkte lokale optimalisatie uitgevoerd aan de hand van een TS. De verbetering op is echter vrij
beperkt, slechts 1 route wordt eruit gehaald. De lokale oplossing levert dezelfde routes op als
bepaald wordt na de eerste 2interchange.m functie in de TSSA heuristiek. (supra Figuur 7)
Stap 2: Mutatie
De exchangeTwoCustomers.m functie wisselt twee klanten in een route om de oplossingsruimte te
vergroten.
Stap 3: Update
De gemuteerde route wordt lokaal geoptimaliseerd aan de hand van de beperkte TS. De kosten van
deze nieuwe oplossing worden vergeleken met de huidig optimale kosten. Indien beter, wordt de
huidige oplossing veranderd.
24 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
Stap 4: Hergebruik
Indien de oplossing verbetert, wordt deze als voorlopig optimum behouden. Hierbij wordt ook de
reikwijdte (tabuTenure) van de TS opnieuw vergroot. (j=0;
)
Dezelfde procedure wordt gebruikt op de overige initiële oplossingen een oplossing wordt
slechts bewaard als deze beter is dan het voorlopig optimum.
Het model van Li en Orchard is zoals gezegd uitgewerkt voor een VRPTW probleem. Het algoritme
moet beperkt aangepast worden om ook personeelsbeperkingen in beschouwing te nemen. Tijdens
de PFIH wordt reeds rekening gehouden met de 3 pauzes in de functie isTimeFactable.m en op
gelijkaardige manier kan de GRASP heuristiek aangepakt worden. Deze functie kan dus overgenomen
worden.
Gezien een beroep gedaan wordt op een TS voor de lokale optimalisatie moeten dezelfde
aanpassingen gedaan worden. (supra p20, paragraaf 2.3.2.4 )
25 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
Figuur 10: Flow diagram GRASP heuristiek
2.3.3.3 Toegepast op het voorbeeld
De oplossing verkregen via de PFIH wordt lokaal geoptimaliseerd via een beperkte TS. De
verbeteringsiteratie heeft weinig effect gehad. Het resultaat is immers vergelijkbaar met de routes
voor de verbeteringsiteratie in de TSSA heuristiek. (supra p19, Figuur 7)
Inlezen Data
(A:Klantendata;
B:Afstandmatrix;
Capaciteit)
Initiële oplossing genereren
a.h.v
X1:PFIH
X2:nearest customer
X3:willekeurige opname
klanten
Beste kosten=Kosten X1
maxIteraties=20
maxTabuTenure=10
Mutatie kans=0,5
Verkleinen
tabuTenure
Vergroten
tabuTenture
For h=1:3
Locale optimalisatie:
Beperkte Tabu Search
op X1
Locale optimalisatie:
Beperkte Tabu Search
op X2
Locale optimalisatie:
Beperkte Tabu Search
op X3
Huidige kosten <
beste kosten?
Kosten van route
berekenen
Update route
Selecteer een
willekeurige route
Verwissel twee
klanten uit de
geselecteerde en de
beste route dusver
Verwissel twee
klanten uit de
geselecteerde en de
beste route dusver
Verwissel twee
klanten uit de
geselecteerde en de
beste route dusver
h = 1 h = 3h = 2
h = 1 h = 3
h = 2
ja
nee
X2
X3X1
While aantal
iteraties<Maxiteraties
I=I+1
Beste routes worden uit
het programma gehaald
Max #iteraties
bereikt
TabuTenure
beinvloed
lokale
optimalisatie
J<IJa:J=J+1
Nee:J=J-1
26 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
Het wisselen van 2 klanten heeft hier geen effect.
De nearest customer levert wel een bruikbare eerste oplossing op waarop vervolgens een beperkte
TS wordt uitgevoerd. De exchange 2 customersfunctie heeft echter ook hier geen effect.
Figuur 11: Initiële oplossing X2 voor GRASP
Figuur 12: GRASP: X2 na lokale optimalisatie
Hetzelfde geldt voor X3, ook hier heeft de exchange 2 customers geen invloed.
Figuur 13: Initiële oplossing X3 voor GRASP
2
14 12
15
13
10
11
9
8
6
7
4
3
5
1
Totale afstand
= 363
2
14 12
15
13
10
11
9
8
6
7
4
3
5
1
Totale afstand
= 271
2
14 12
15
13
10
11
9
8
6
7
4
3
5
1
Totale afstand
= 303
27 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
Figuur 14: GRASP: X3 na lokale optimalisatie
Deze laatste routes blijken ook na 20 iteraties de beste en zijn dus ook de uitkomst van deze GRASP
heuristiek.
2.3.3.4 Parameterwaarden
De parameterwaarden werden rechtstreeks overgenomen uit de literatuur. [82] Wel moet men de
opmerkingen besproken bij de parameterwaarden van de TSSA heuristiek, ook hier in acht nemen.
(supra p20, paragraaf 2.3.2.4) Dit betekent dat ook hier de werking van de TS sterk beknot wordt
door de tijd en capaciteitsschendingen strenger te bestraffen in de aspiratiefunctie. Gezien de TS in
vergelijking met de TSSA metaheuristiek meer neiging heeft om een lokaal optimum te aanvaarden,
zal dit hier zelf zwaarder doorwegen.
2
14 12
15
13
10
11
9
8
6
7
4
3
5
1
Totale afstand
= 173
28 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
2.3.4 Variable Neighbourhood Search
Een volgende VRPTW heuristiek is gebaseerd op de Reactive Variable Neighbourhood Search
heuristiek ontwikkeld door Bräysy, Kytöjoki et al. [70, 85]. Ook deze heuristiek is uitgewerkt in
MALAB 2010b.
2.3.4.1 Over de metaheuristiek
De Variable Neighbourhood Search (VNS) metaheuristiek tracht de lokale optimalisatie val te
vermijden door de structuur van de omgeving rondom het lokaal optimum te veranderen. De
oplossing wordt op systematische manier veranderd om zo buren te vinden die ofwel de oplossing
verbeteren, ofwel de val van een lokaal minimum helpen te vermijden [86]. Kytöjoki et al. stellen dat
de VNS metaheuristiek erin slaagt een gigantisch aantal klanten meester te kunnen, tot zelfs enkele
10 000 klanten. Hun heuristiek wordt echter beperkt geïmplementeerd. Er worden immers slechts 2
van de 6 mutatiefuncties ingevoerd.
2.3.4.2 Werking van de VNS VRPTW heuristiek
Deze heuristiek begint net als de andere met een initiële oplossing verkregen door het PFIH
algoritme. Het vertrekpunt om deze metaheuristiek uit te leggen is dus dezelfde als bij de vorige
heuristieken, met 14 routes voor 15 klanten. Het algoritme zoekt vervolgens een dichte buur via een
willekeurige 2-interchange mutatiefunctie. (randTwoInterchange.m) In deze functie worden twee
willekeurige routes gekozen waaruit twee willekeurige klanten van route veranderen.
Figuur 15: De 2-interchange methode
Indien deze routes geen restricties schenden (opnieuw gecontroleerd door o.a. de checkFeasibility.m
functie) zal deze “buur” lokaal geoptimaliseerd (innervns.m) worden via respectievelijk een 2-
interchange en een cross exchange. (twoInterchange.m en crossExchange.m)
Figuur 16: Werking cross-exchange [87]
De cross-exchange mutatiefunctie wisselt een opeenvolgend deel met twee of meer klanten van
twee routes met elkaar. [88] Figuur 16 illustreert.
29 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
Zodra de 2-interchangemutatie geen verbetering meer geeft, wordt overgaan naar de cross exchange
mutatiefunctie. Levert ook die niets meer op, dan komt men terug in de VNS hoofditeratie. Zolang
een verbetering gevonden, blijft deze loop zich echter herhalen (willekeurige 2-interchange gevolgd
door een lokale optimalisatie). Wordt geen verbetering meer gevonden, dan wordt een willekeurige
cross-exchange uitgevoerd die vervolgens ook lokaal geoptimaliseerd wordt. Vindt men op die
manier terug een verbetering dan herbegint men terug bij de willekeurige 2-interchange met de
huidige oplossing. Indien de oplossing niet verder evolueert, zal ook herbegonnen worden, maar
dergelijke niet verbeteringsiteraties mogen slechts een beperkt aantal keer (5) voorvallen.
Het is mogelijk ook andere mutatiefuncties op te nemen in de heuristiek bv. de 2-opt functie. De 2-
opt exchange6 heuristiek is een speciale vorm van cross-exchange, waarbij een nieuwe oplossing
gevonden wordt door twee routes, waarvan de randen geëlimineerd zijn, dusdanig te verbinden
zodat een nieuwe oplossingsmogelijkheid bekomen wordt [60]. Er is uiteraard maar één uitkomst die
een andere oplossingsmogelijk geeft. Van al de randparen die een kortere route geven, kiezen we
deze die het kortste pad geeft. Deze procedure wordt herhaald tot geen dergelijke paren meer
gevonden kunnen worden. In het gebruikte voorbeeld levert het gebruik van 2-opt exchange niets op,
vandaar dat het resultaat onveranderd blijft.
Bovendien blijkt zowel het aantal routes als de totale afstand bekomen via de VNS met 3
mutatiefuncties tegen te vallen in vergelijking met de VNS met 2 mutatiefuncties. Vandaar dat enkel
de VNS met 2 mutatiefuncties beschreven werd. (infra p30, Figuur 17 )
6 http://www-e.uni-magdeburg.de/mertens/TSP/node3.html illustreert de werking van de 2-opt exchange
heuristiek via een applet.
30 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
Figuur 17: Flow diagram VNS heuristiek met 2 mutatie functies
2.3.4.3 Toegepast op het voorbeeld
Ook hier wordt herbegonnen met de initiële oplossing verkregen via de PFIH. De
randTwoInterchange.m functie leidt niet tot een verandering waardoor het deze routes zijn die in de
lokale optimalisatie terechtkomen. Deze lokale optimalisatie blijkt wel zeer efficiënt. Na de lokale
optimalisatie via de 2- interchangefunctie is er reeds een grote verbetering merkbaar. Hierna wordt
er via een cross exchange ook een verbetering gevonden waardoor de lokale optimalisatie herbegint.
Inlezen Data
(A:Klantendata;
B:Afstandmatrix;
Capaciteit)
Initiële oplossing
genereren a.h.v
PFIH
While #cyclussen
zonder
verbeterringen(NI) <=5
Route
verbettert?
NI=NI+1
Rand 2
interchange
Rand Cross
exchange
Inner VNS
Lokale optimalisatie via:
- Two interchange
- Cross exchange
Inner VNS
Route
verbettert?
Lokale optimalisatie via:
- Two interchange
- Cross exchange
Geen
verbetering
Het aantal niet
verbeteringsiteraties
verhoogd
Ja
Nee
ja
Beste routes worden uit
het programma gehaald
NI>5
31 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
Figuur 18: VNS - initiële oplossing na lokale optimalisatie via 2-interchange mutaties
Figuur 19: VNS - cross-exchange
Dit levert echter niets meer op waardoor de oplossing na de cross exchange het lokaal optimum is.
De verruimingen in het zoekgebied leveren ook niets op waardoor het lokaal optimum dat bereikt
werd na de cross exchange ook het resultaat is van de VNS heuristiek.
2.3.4.4 Parameterwaarden
De enige parameter die hier ingevuld moet worden, is het maximaal aantal keer dat een niet-
verbeteringsiteratie zich voordoet. De keuze is gemaakt om deze op 5 te houden.
2
14 12
15
13
10
11
9
8
6
7
4
3
5
1
Totale afstand
= 207
2
14 12
15
13
10
11
9
8
6
7
4
3
5
1
Totale afstand
= 178
32 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
2.3.5 Ants Colony System
Het Ants Colony algoritme is gebaseerd op de manier waarop echte mieren de kortste route zoeken
tussen hun nest (N) en een voedingsbron (F) in een oplossingsruimte met verschillende paden (infra
Figuur 20). (Implementatie gebaseerd op o.a Tong et al.[89-91] en opgebouwd in MATLAB 2010b)
2.3.5.1 Over de metaheuristiek Figuur 20: Illustratie werking ACS
7
Mieren gebruiken het milieu om te communiceren met elkaar en laten lokale feromoonpaden achter
wanneer ze ronddwalen. Een mechanisme dat in de biologie “Stigmergie” genoemd wordt. Merk op
dat hier de nadruk gelegd wordt op de lokale feromonen, omdat het niets zegt over waar de
voedingsbron is of waar de kolonie zich bevindt.
Wanneer een “boer” mier voedsel vindt, is het genetisch ingesteld om een lokaal feromoonspoor na
te laten bij de terugkeer naar de kolonie. Het volgt daarbij het feromoonspoor nagelaten door de
kolonie. Hoe sterker de feromonen, hoe dichter de mier bij de kolonie is. Het feromoonspoor dat de
mier nalaat, wordt opgepikt door andere mieren die op hun beurt op zoek gaan naar de voedselbron.
Men bevindt zich nu in situatie 2 van de figuur. De mieren zijn op de hoogte dat er voedsel te vinden
is en verspreiden zich over de oplossingsruimte naar het voedsel. Bij elke keuze van een nieuw pad,
wordt er gekeken naar de hoeveelheid feromoon die achter gelaten is door andere mieren. Wanneer
een mogelijk pad gevonden is, laat de mier een bepaalde hoeveelheid feromoon achter voor de
andere mieren. Een bepaald pad krijgt daardoor een grotere kans om gekozen te worden door de
volgende mieren. Daarnaast verdampt het feromoon ook op een bepaalde snelheid, zodat oude
paden weer verdwijnen. Hierdoor ontstaat na verloop van tijd een dominant (hopelijk optimaal) pad
zoals situatie 3 in de figuur.
Het vervliegen van de feromonen is cruciaal in het vinden van een globaal optimum. Immers, blijft
het spoor te lang hangen, dan zal dit spoor te attractief zijn voor de andere mieren, waardoor een
lokaal optimum gevonden wordt in een te beperkte zoekruimte.
7 http://lifeinwireframe.blogspot.com/2010/08/ant-algoithms.html
33 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
Figuur 21: Flow diagram ACS heuristiek
2.3.5.2 Werking ACS VRPTW heuristiek
Een nieuwe route wordt gecreëerd op basis van een Ants Colony System voor het TSP probleem met
dat verschil dat de probabiliteit dat een route gebruikt wordt die de capaciteit of tijdsvensters
overtreedt nul is en er gewerkt wordt met meerdere voertuigen (indien geen klant is geselecteerd,
wordt er een route toegevoegd.) De werkwijze voor een ACS voor een TSP probleem wordt hieronder
samengevat.
In het TSP verhaal kiest een artificiële mier k in stad r de stad s ( het werkend geheugen Mk) om
naartoe te gaan op basis van de volgende stochastische formule:
Inlezen Data
(A:Klantendata;
B:Afstandmatrix;
Capaciteit)
Initiële oplossing genereren
a.h.v PFIH.
Initiëren: beste rij, kosten,
mogelijke kost, feromonen
spoor (volledige tabel
gevuld)
Aantal mieren=K
Lambda=0,1
Phero=[]
a =0
Huidige route beter dan
beste oplossing dusver?
For k = 1: #iteraties
For i =1 : #mieren
Beta=1
Ro=0,1
Maak nieuwe
route en
actualiseer
feromoon spoor
Huidige oplossing
vervangt beste
oplossing.
a = 0
Update globaal
feromoon spoor
a++
a > 50
Best gevonden oplossing is
eindwaarde heuristiek
NeeJa
Ja
Nee
34 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
{
{[ ][ ]
}
[ ][ ]
∑ [ ][ ]
waar de hoeveelheid feromonen zijn, een parameter is voor de relatieve belangrijkheid van het
feromoonspoor en een constante is. Elke keer dat de mier deze regel gebruikt, kiest hij een
willekeurig getal q in het interval [0, 1]. Als de mier kiest voor de kortste weg met meer feromonen
dan de andere (omdat het feromoon wordt vermenigvuldigd met de inverse van de afstand tussen
steden). Anders, zal de kans dat een mier een stad kiest willekeurig bepaald worden.
Gezien initieel de mieren willekeurig lopen, kunnen verschillende feromonenpaden worden
gecreëerd. Deze feromoonsporen verdampen echter na verloop van tijd, zodat de minder gebruikte
paden (of niet versterkte) de neiging hebben om te verdwijnen. Paden met een hogere probabiliteit
trekken meer mieren aan waardoor het feromoonspoor sterker en sterker wordt.
Als een stad (lees: klant) wordt gekozen volgens de formule dan wordt deze verwijderd uit de niet
bezochte lijst en wordt het opgenomen in de route. De gegevens worden gewijzigd. (voor een
VRPTW betekent dit een update van de huidige tijd, gewicht en feromoon spoor)
Actualiseren van de hoeveelheid feromonen gebeurt aan de hand van de volgende formule:
Waar α de parameter is voor de verdamping van feromonen en de beste weglengte. Telkens een
mier door via een rand gaat wordt het feromoon spoor bijgehouden via de formule:
Waar het initieel feromoon gehalte is en een parameter tussen nul en één.
Het algoritme wordt beëindigd wanneer een bepaald aantal iteraties is bereikt, wanneer de beste
oplossing stabiel blijft voor een aantal iteraties of wanneer de meeste van de mieren dezelfde
oplossing gevonden hebben.
35 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
2.3.5.3 Toegepast op het voorbeeld
Nadat honderd mieren de cyclus zijn doorlopen, wordt het volgende resultaat bekomen:
Figuur 22: Routes na de ACS VRPTW heuristiek
2.3.5.4 Parameterwaarden
Om goede parameterwaarden te verkrijgen dient de ACS metaheuristiek getest te worden met
verschillende waarden. Om het aantal testcombinaties te beperken wordt een ad-hoc strategie
toegepast waar de standaardwaarden 100 mieren, β=1, λ=0,1, q=0,9 en ρ=0,1 als basiswaarden
gebruikt worden.
Aantal mieren β λ
Waarde Afstand AantalRoutes Waarde Afstand AantalRoutes Waarde Afstand AantalRoutes
100 2816 23 1 2759 21 0,05 2823 20
1000 2872 20 1,25 2814 22 0,1 2789 21
10000 2718 19 1,5 2897 20 0,2 2818 20
Tabel 6: Parametertest voor ACS-VRPTW op Solomon instantie C101
Op basis van deze testen op de C101 Solomoninstantie kan men “goede” parameterwaarden bepalen
voor de ACS metaheuristiek. Het aantal mieren wordt op 10 000 gezet, hoewel dit de rekentijd danig
verhoogt, β op 1, λ op 0,1, q op 0,75 en ρ op 0,25.
2
14
12
15
13
10
11
9
8
6
7
4
3
5
1
Totale afstand
= 376
q
Waarde Afstand AantalRoutes Waarde Afstand AantalRoutes
0,5 3011 25 0,05 2824 21
0,75 2799 20 0,1 2806 20
0,9 2654 18 0,25 2698 19
36 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
2.3.6 Conclusies
Om het aantal testen te beperken worden de heuristieken slechts op zes Solomoninstanties getest,
namelijk C101, C201, R101, R201, RC101 en RC201 met een capaciteit van 200. Voor de
parameterwaarden wordt verwezen naar de bespreking in de bijhorende heuristiek.
Tabel 7: Resultaten VRPTW heurstieken
Afstand Aantal routes
Solomon instantie
C101 R101 RC101 C201 R201 RC201 C101 R101 RC101 C201 R201 RC201
Optimale oplossing*
827 1637 1620 589 1262 1143 10 20 15 3 9 8
PFIH 4845 3765 4013 6133 3387 3477 63 51 39 40 17 23
TSSA** 1522 1853 1837 1203 1602 1722 21 25 19 15 15 14
GRASP** 1591 1818 1848 1187 1489 1788 20 25 21 13 10 10
VNS 2H 892 1695 1812 1026 1280 1479 11 24 18 11 10 11
VNS 3H 1047 1793 1941 1147 1335 1518 13 25 21 10 12 11
ANTS 2654 3269 3445 2734 3142 3798 19 34 26 24 17 18 *[50, 92, 93] let wel dat de optimale oplossing geen rekening houdt met het verplicht opnemen van pauzes. ** De efficiëntie van de TSSA en bijgevolg ook deze van de GRASP heuristiek is sterk beknopt door de strengere bestraffing van tijd- en capaciteitsschendingen.
37 Het Vehicle Routing Probleem - 2.3 Heuristiek voor een VRPTW
Hieronder worden enkele interessante kenmerken samengevat die zijn opgevallen tijdens de
implementatie van de heuristieken: (Dit zijn ondervindingen, geen significante conclusies)
– Hybrid Tabu Search en Simulating Annealing (TSSA)
• Een bijzonder snelle en efficiënte metaheuristiek
• Het grootste nadeel is dat de kans bestaat dat de oplossing toch onmogelijk
blijkt. Het kan bijvoorbeeld zijn dat de tijdsvensters of capaciteit niet
gerespecteerd worden. (supra p20, paragraaf 2.3.2.4) De instelling van de
aspiratiefunctie is van groot belang.
– Greedy Randomized Adaptive Search Procedure (GRASP) metaheuristiek
• Voordeel: efficiënt en consistent
• Nadeel:
– Maakt gebruik van de Tabu metaheuristiek waardoor men ook hier
aandacht moet schenken aan de aspiratiefunctie
– Minder efficiënt voor kleinere databestanden
– Relatief traag
– Variable Neighbourhood Search (VNS)
• Voordeel:
– kan grote klantenbestanden aan
– geen opname van onmogelijke oplossingen
– goede resultaten
– Ants Colony System (ACS)
• Voordeel: geen opname van onmogelijke oplossingen
• Nadeel: merkbaar slechte resultaten
38 Het Inventory Routing Probleem - 3.1 Een basis IRP Model
3 Het Inventory Routing Probleem
3.1 Een basis IRP Model Het basis IRP model omvat de verdeling van één productlijn, vanuit één verdelingscentrum, naar een
set van n klanten over een planningsperiode van lengte T. Klant i verbruikt per periode t een
deterministische hoeveelheid . Om dit verbruik van klant i te kunnen opvangen moet voldoende
voorraad tijdens periode t ( ) beschikbaar zijn. Deze voorraad mag de maximumvoorraad van klant i
( ) niet overschrijden. De geleverde hoeveelheid ( ) mag er dus niet voor zorgen dat dit
maximumniveau wordt overschreden. Om de leveringen te voldoen zijn maximum M homogene
voertuigen beschikbaar. Aan het gebruik maken van een voertuig hangt een vaste kost vast. De
voertuigen hebben een transportcapaciteit C. Een basis IRP model wordt hieronder uitgewerkt.[94]
3.1.1 Model P
Indexen:
t in 1..T Periode index
i,j in 0,1,…,N Klantenindex tot N klanten; 0 staat voor depot
Parameters:
C Capaciteit voertuig
Transportkosten van i naar j
Vaste kosten van klant i
Holding kosten van klant i op periode t
Beginvoorraad van klant i
M Aantal beschikbare voertuigen
Vraag bij klant i in periode t
Maximale voorraad bij klant i
Beslissingsvariabelen:
Geleverde hoeveelheid aan klant i in periode t
Voorraadniveau van klant i in periode t
Vervoerde hoeveelheid over arc i,j
Aantal keer de gerichte arc i,j gebruikt wordt in periode t
39 Het Inventory Routing Probleem - 3.1 Een basis IRP Model
De doelfunctie bestaat uit zowel de voorraadkosten van de klanten als de vaste en variabele
transportkosten.
∑∑
∑ ∑ ∑
∑∑
(1.1)
Een eerste restrictie heeft betrekking op het voorraadniveau. Deze wordt bepaald door het
voorraadsniveau van de voorgaande periode vermeerderd met de geleverde hoeveelheid
verminderd met de vraag van de klanten.
(1.2)
Een volgende restrictie moet ervoor zorgen dat het voorraadniveau van een klant het maximumlevel
niet overschrijdt.
(1.3)
Het aantal keer dat arc (i,j) bezocht wordt moet vervolgens gelijk zijn aan het aantal keer dat arc (j,i)
bezocht moet worden.
∑ ∑
(1.4)
De geleverde hoeveelheid moet van de vervoerde hoeveelheid worden afgehouden.
∑
∑
(1.5)
De geleverde hoeveelheid moet vanuit het verdeelcentrum komen.
∑
∑
(1.6)
Het aantal voertuigen vertrekkende vanuit het depot mag het maximum aantal voertuigen niet
overtreden.
∑
(1.7)
De transporthoeveelheid over arc (i,j) mag niet meer zijn dan de capaciteit van een voertuig
vermenigvuldigd met het aantal keer dat die arc (i,j) gebruikt is in periode t. Dit wil ook zeggen dat als
de arc niet bezocht wordt, er geen product over de arc mag worden vervoerd.
(1.8)
Ook de subtour eliminatierestricties [95] kunnen worden toegepast.
40 Het Inventory Routing Probleem - 3.1 Een basis IRP Model
∑ ∑
∑
(1.9)
Ten slotte moeten de beslissingsvariablelen positief zijn (of gelijk aan nul).
(1.10)
(1.11)
(1.12)
(1.13)
41 Het Inventory Routing Probleem - 3.2 Een Branch en Cut algoritme voor een IRP
3.2 Een Branch en Cut algoritme voor een IRP
Het IRP behoort tot de NP-hard problemen. Het reduceert immers tot een TSP als de
planningsperiode tot één dag wordt teruggedrongen, de voorraadkosten nul zijn, de
transportcapaciteit oneindig is en het gehele klantenbestand moet beleverd worden. Er wordt een
Branch en Cut algoritme geformuleerd, gebaseerd op het werk van Archetti et al. [10], om tot een
exacte optimalisatie te komen. Het IRP model wordt vereenvoudigd, door te stellen dat slechts één
voertuig zal gebruikt worden en de beperkte productiecapaciteit bij de verdeler een hoge waarde
aanneemt. (een beperking op de productiecapaciteit is geen beperking die verder aangenomen
wordt in deze scriptie) Andere assumpties zijn ongewijzigd. Het model wordt hieronder samengevat:
3.2.1 Model BC
Indexen t in 1..T Periode index
i,j in 0,1,…,N Klantenindex tot N klanten; 0 staat voor depot
Parameters C Capaciteit voertuig
Transportkosten van i naar j
Holdingkosten van klant i
Holdingkosten bij de verdeler
Beginvoorraad van klant i
Vraag bij klant i in periode t
Productiecapaciteit
Maximale voorraad bij klant i
Beslissingsvariabelen
Voorraadniveau van klant i in periode t
Voorraadniveau verdeler in periode t
Producthoeveelheid geleverd naar klant i
Volgt klant j direct na klant i in periode t? (binair)
Wordt klant i geleverd in periode t? (binair)
42 Het Inventory Routing Probleem - 3.2 Een Branch en Cut algoritme voor een IRP
De doelfunctie is een som van de voorraadkosten, van respectievelijk de verdeler en de klanten
aangevuld door de transportkosten.
∑
∑ ∑
∑ ∑ ∑
(2.1)
De voorraad definities bij de verdeler vormen een eerste restrictie.
∑ , t in 1,…T+1 ( (2.2)
Een tweede restrictie is dat de leverancier op geen enkel moment een voorraadbreuk mag ervaren.
De verdeler moet dus steeds in staat zijn om aan de totale gevraagde hoeveelheid te voldoen. Gezien
deze parameter niet gebruikt wordt bij het vervolg van de modellen nemen we een dummy waarde
( die zorgt dat deze restrictie niet geschonden wordt.
∑
(2.3)
De voorraadbeperking is gelijkaardig met deze uit het algemeen IRP model op een factor en extra
tijdsperiode na.
(2.4)
Naast de beperking dat er geen voorraadbreuk mag zijn bij de verdeler geldt deze beperking ook bij
de klanten. Het is uiteraard ook mogelijk dat er een overeenkomst is tussen de klant(en) en de
verdeler waar deze beperking een zekere veiligheid qua stock in beschouwing neemt. Dit is
eenvoudig aan te passen door de nul te vervangen door de overeengekomen hoeveelheid, zodat er
niet onder dit niveau mag worden gegaan.
(2.5)
Het gebruikte voorraadbeleid levert de volgende drie mogelijke beperkingen op.
(2.6)
(2.7)
(2.8)
Vanwege de vereenvoudiging mag de capaciteit van het voertuig niet beperkt worden. Toch wordt
ervoor gekozen om de capaciteitsrestrictie in het model op te nemen, weliswaar met een dusdanig
hoge capaciteit zodat een tweede route vermeden wordt.
43 Het Inventory Routing Probleem - 3.2 Een Branch en Cut algoritme voor een IRP
∑
(2.9)
De routing of transportbeperkingen garanderen dat binnen elke periode een mogelijke route bepaald
wordt. Deze beperkingen zijn initieel tweeledig maar indien onmogelijke oplossingen gevonden
worden, kan men de nodige subtour eliminatierestricties opnemen en het model opnieuw
initialiseren. De initiële beperkingen garanderen enerzijds dat de verdeler bezocht moet worden
zodra minstens één klant bezocht wordt en anderzijds moet een beleverde klant daadwerkelijk in de
route opgenomen worden.
∑
(2.10 a)
∑
∑
(2.10 b)
∑ ∑
∈
∑
∈ ∈
∈ (2.10 c)
Ten slotte zijn er nog de niet-negativiteits- en geheeltalligheidsbeperkingen.
(2.11)
∈ (2.12)
∈ (2.13)
∈ (2.14)
Om het oplossingsgebied te beperken kunnen we gebruik maken van geldende ongelijkheden. Deze
ongelijkheden kunnen niet overgenomen worden uit de VRP of TSP literatuur, maar op basis van de
speciale structuur van het specifiek vereenvoudigd IRP model. (Archetti et al. specifiëren namelijk
drie IRP varianten naar gelang het gebruikt voorraadbeleid.) Voor het bewijs van deze ongelijkheden,
zie Archetti, Bertazzi et al. [10]
(2.15)
∑ ∑
(2.16)
44 Het Inventory Routing Probleem - 3.2 Een Branch en Cut algoritme voor een IRP
∑
(2.17)
∑
⌈∑
⌉ (2.18)
∑ ∑
(2.19)
(2.20)
(2.21)
(2.22)
De experimenten van de auteurs geven aan dat sommige van deze ongelijkheden best direct in het
model opgenomen worden. Men moet dus niet wachten op een schending om deze ongelijkheden
toe te voegen. Dit maakt een snelle modellering mogelijk.
Om het model te modelleren wordt bij het depot uitgegaan van een maximaal voorraadsniveau van
1 200, een beginvoorraad van 500 en een voorraadkost van 3,7 (gemiddelde van voorraadkosten
klanten.) De andere inputdata werden overgenomen uit de voorbeeldinstantie.(supra p4)
Het model dat geïmplementeerd werd, maakt in tegenstelling tot het model van Archetti et al., op
een vrij agressieve manier gebruik van de cuts aangebracht door de CPLEX omgeving. Hierdoor wordt
het mogelijk het model benaderd op te lossen zonder de noodzaak aan dynamisch programmeren.
Een implementatie in ILOG CPLEX 12.2 van het voorgestelde model (infra p99, Bijlage B) zonder de
ongelijkheden, zonder de subtour eliminatiebeperkingen en met een tijdslimiet van 30 minuten geeft
een resultaat van 27 758 met een gap van 8,21% en de volgende CPLEX cuts:
GUB cover cuts applied: 0
Clique cuts applied: 11
Cover cuts applied: 176
Implied bound cuts applied: 22
Flow cuts applied: 0
Mixed integer rounding cuts applied: 44
Flow path cuts applied: 0
Zero-half cuts applied: 33
Gomory fractional cuts applied: 6
Disjunctive cuts applied: 82
45 Het Inventory Routing Probleem - 3.2 Een Branch en Cut algoritme voor een IRP
Dit kan gebruikt worden als benaderde ondergrens voor de waarde van een IRPTW model, maar deze
is echter te klein om echt waardevol te zijn. Het resultaat van het model is opgenomen in bijlage,
(infra p100, Bijlage B) hieronder worden enkele kernresultaten samengevat:
Figuur 23: Bestelhoeveelheid B&C
Klanten 1 2 3 4 5 6 7 8 9 10 11
1 0 0 0 29 0 0 0 31 0 0 0
2 0 0 100 0 0 0 104 30 0 0 0
3 0 0 34 0 0 0 35 6 0 0 0
4 0 0 0 38 4 0 0 38 0 0 0
5 34 16 0 0 0 0 35 6 0 0 0
6 102 13 0 0 68 15 0 0 68 0 0
7 75 13 0 0 73 5 0 0 73 0 0
8 0 0 58 2 0 0 68 10 0 0 0
9 35 2 0 0 35 19 0 0 0 0 0
10 0 29 5 0 0 0 35 9 0 0 0
11 0 0 0 35 0 0 33 6 0 0 0
12 95 25 0 70 9 0 0 70 13 0 0
13 120 35 0 0 0 108 15 0 0 0 0
14 39 0 0 35 2 0 0 35 0 0 0
15 0 0 131 30 0 0 0 145 0 0 0
In de eerste periode is dit de leveringsroute:
5
6
7
9
12
13
14
46 Het Inventory Routing Probleem - 3.2 Een Branch en Cut algoritme voor een IRP
Figuur 24: Voorraadsniveau klanten (B&C)
Een ander exact algoritme voor een vergelijkbaar IRP model met één voertuig werd aangebracht
door Aghezzaf et al. [96] Hun basisalgoritme bestaat uit twee stappen. Een eerste stap is het
oplossen van een lineaire MIP met een vastgezette cyclustijd. Een tweede stap vernieuwt deze
parameter om zo alle mogelijke oplossingen te beschouwen. Een interessante conclusie uit hun
analyse was, dat zelfs een goed doordachte heuristiek tot zelfs 25% van het optimaal resultaat kan
afwijken wat de nood aan snellere exacte algoritmes enkel maar benadrukt.
0
20
40
60
80
100
120
140
160
Klant1
Klant2
Klant3
Klant4
Klant5
Klant6
Klant7
Klant8
Klant9
Klant10
Klant11
Klant12
Klant13
Klant14
Klant15
1
2
3
4
5
6
7
8
9
10
11
Periode
47 Het Inventory Routing Probleem - 3.3 Benaderingsmethode voor een IRPTW model
3.3 Benaderingsmethode voor een IRPTW model Een basismethode in combinatorische optimalisatie focust zich op de beschrijving van de doelfunctie
van het combinatorische probleem in plaats van zijn polythoop. (supra p11, paragraaf 2.2) Gebruik
makend van technieken als (Lagangian) relaxatie en dualiteit kunnen we de optimale waarde van een
functie vinden of een hoge ondergrens vinden in het geval van minimalisatie, zonder het integer
probleem expliciet op te lossen. Technieken als Lagrangian relaxatie en Dantzig-Wolfe decompositie
komen hier tot hun recht. In Lagrangian relaxatie dualiseert men een set van complicerende
restrictie(s) naar de doelfunctie vermenigvuldigd met zogenoemde Lagrange multiplier(s). Hierdoor
wordt het mogelijk een uitgebreide (maar beperkte) set van relaxaties te gebruiken om moeilijke
problemen te benaderen. Gerelaxeerde problemen met gegeven multipliers noemt men een
Lagrangian subprobleem, terwijl het probleem om de grootste ondergrens te vinden voor de
multipliers een Lagrangian duaal probleem genoemd wordt. Een fundamenteel resultaat in wiskundig
programmeren is dat het Dantzig-Wolfe linear programmeringsprobleem voor het vinden van een
convexe oplossing voor het subprobleem, dat ook voldoet aan de complicerende restricties, een
duaal is van het (Langrangian) duaal probleem. Er bestaan twee klassieke algoritmes voor het
oplossen van het Lagrangian duaal probleem. Het eenvoudigste algoritme is de Sub Gradient
algoritme, een ander klassiek algoritme is de cutting-plane algoritme (een rij generatiealgoritme), die
in zijn primale versie een column-generation algoritme is. Deze algoritmen zijn convexe
minimalisatiealgoritmen die toehoren tot het veld van non-smooth of niet-differentieerbare
optimalisatie. [97] [43]
3.3.1 Beperking oplossingsruimte
Diverse auteurs die het IRP onderzoeken beroepen zich op de speciale kenmerken van een IRP om
het probleem benaderd te optimaliseren. Zo stellen Federgruen en Zipkin een niet-lineaire integere
oplossingsmethode voor waarbij het probleem opgesplitst wordt in een voorraadlocatie
deelprobleem, dat de voorraad en voorraadbreuk kosten afweegt, en een TSP deelprobleem. [28]
Campbell en Savelsbergh stellen een tweefasemethode voor waar eerst een delivery schedule wordt
gecreëerd en vervolgens de leverroutes. De eerste fase maakt gebruik van integer programming en
de tweede fase omvat planningsheuristieken.[9] Het maakt hiermee gebruik van het cluster concept
aangebracht door Webb en Larson [98] waarbij klanten gegroepeerd worden in clusters. [8]
Savelsbergh tracht op diverse manieren het aantal nodes te beperken. Zo zijn er voor elke klant
bepaalde periodes waar het economisch onverstandig zou zijn om een levering te krijgen, waardoor
deze uit het netwerk gehaald kunnen worden.[99] Deze aanpak is ontwikkeld voor vloeibare
producten, maar lijkt zeker ook bruikbaar voor een algemene IRP.
48 Het Inventory Routing Probleem - 3.3 Benaderingsmethode voor een IRPTW model
Figuur 25: Voorraadniveau bij de klant laat toe bepaalde periodes uit het model te weren [99]
Deze techniek is vooral aangewezen wanneer een lange planningsperiode in beschouwing wordt
genomen. Een andere voorgestelde reductiemogelijkheid is onwaarschijnlijke arcs uit het netwerk
halen. Savelbergh stelt twee regels voor om het aantal arcs te beperken. Bij de eerste -regel
worden de arcs met een afstand groter dan uit het netwerk gehaald tot het punt waar verdere
reductie zou leiden tot minder dan klanten die verbonden zijn met klant i. De tweede regel
beperkt het aantal verbindingen van de klanten tot de dichtste verdelers.
Naast deze node reductietechnieken voegt Savelbergh ook de zogenoemde “delivery cover”
ongelijkheden toe aan het model. Deze ongelijkheden zijn vergelijkbaar met de capaciteitsrestricties
bij een Capacitated VRP en kunnen met behulp van een separation heuristiek toegevoegd worden
aan het model als ze geschonden worden.
Het IRP model dat in deze scriptie onderzocht wordt, houdt ook rekening met tijdsvensters. Hierdoor
is een arc beperking veel eenduidiger toe te passen. De regels voorgesteld door Savelbergh worden
dus niet geïmplementeerd, het idee van arc beperking echter wel. Zodra één klant opgenomen wordt
in een route wordt het immers mogelijk om het aantal mogelijk verbindingsarcs te beperken met
behulp van de tijdsvensters. Zo heeft het geen nut dat een klant die ‘s ochtends moet beleverd
worden als keuzemogelijkheid aanzien wordt om een klant op te volgen die pas ‘s middags beleverd
moet worden. Het voordeel van deze werkwijze is dat via beperkte gegevens op een eenvoudige
manier een cutting plane kan worden toegevoegd aan het model.
Op basis van de gegevens betreffende de tijdsvensters, de servicetijd en de transportkosten kan een
nieuwe dataparameter opgesteld worden die aan de hand van binaire waarden aangeeft of een
route mogelijk is tussen twee klanten. Voegt men deze beperking toe tot het IRP model, dan verkrijgt
men voor alle duidelijkheid geen IRPTW, het model zal echter wel een stuk dichter hierbij aansluiten.
Een nieuwe binaire parameter geeft aan of een route mogelijk is of niet op de net besproken
manier. Deze werd bekomen via een als functie in Excel die 1 wordt als een begintijdsvenster klant i
49 Het Inventory Routing Probleem - 3.3 Benaderingsmethode voor een IRPTW model
vermeerderd met zijn servicetijd kleiner is dan het eind tijdsvenster van klant j.(tabblad “tijd” in de
voorbeeld Excelbestanden) Dit is het resultaat toegepast op het voorbeeld:
Tabel 8: Mogelijke routes toegepast op voorbeeld
Klanten 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3 1 1 0 1 0 1 1 1 1 1 1 1 0 1 1
4 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
5 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1
6 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0
7 1 1 0 1 0 1 0 1 1 1 1 1 0 1 1
8 1 1 0 1 0 1 0 0 1 1 1 1 0 1 1
9 1 1 0 1 0 1 0 0 0 0 0 1 0 0 0
10 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0
11 1 1 0 1 0 1 0 0 1 0 0 1 0 1 0
12 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0
13 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1
14 1 1 0 1 0 1 0 0 0 0 0 1 0 0 0
15 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0
*Tabel 8 van klant i naar klant j (“1” indien geen flagrante tijdschendingen)
3.3.2 Een hybride aanpak voor het IRPTW model
Het hier beschreven model en oplossingsmethode is gebaseerd op het werk van Yu, Chen en Chu.
[94] Hun oplossingsmethode wordt grondig besproken omdat deze ook zal gebruikt worden om het
binnen deze scriptie voorgestelde IRPTW model op te lossen. De implementatie gebeurt aan de hand
van IBM ILOG OPL IDE 6.3 en maakt gebruik van de CPLEX 12.2 solver.
De voorgestelde oplossingsmethode maakt gebruik van de Lagrangian relaxatie techniek om een
benaderingsmodel op te splitsen in een voorraad subprobleem en een routing subprobleem. Vanuit
deze oplossing moet een mogelijke oplossing gehaald worden voor respectievelijk het
benaderingsmodel en het oorspronkelijk model. De figuur hieronder vat de oplossingsmethodologie
samen. De voorgestelde methode zal echter niet volledig gevolgd worden. Stap 4 tot en met 6
worden vervangen door het opnemen van het voorlopig resultaat in een VRPTW heuristiek die
voordien is uitgewerkt. (supra p13-36, paragraaf 2.3) Dit zorgt ervoor dat dit model via de VRPTW
heuristiek ook rekening houdt met tijdsvensters en pauzes opneemt op bepaalde tijdstippen.
50 Het Inventory Routing Probleem - 3.3 Benaderingsmethode voor een IRPTW model
Figuur 26: Schema benaderingsmethode IRP van Yu, Chen en Chu.
Figuur 27: Gebruikte benaderingsmethode
Het benaderingsmodel van Yu et al. stelt enkele restricties van het basis IRP model (supra p38,
paragraaf 3.1) strakker om het oplossingsgebied te beperken en dus een efficiënter model op te
stellen.
De subtour restricties (1.9) uit het basis IRP model kunnen strakker gesteld worden:
∑ ∑
(3.1)
(3.2)
Er moet hier opgemerkt worden dat deze beide restricties geen voldoende voorwaarde zijn om een
mogelijke oplossing te definiëren noch voor subtour eliminatie. [94]
(1) Een benaderingsmodel (een voorraad en een routing subprobleem)
(2) Oplossen via een Lagrangian relaxation aanpak
(3) Bepaal een mogelijke oplossing voor het model (UB voor model)
(4) Bepaal een mogelijke oplosing voor het IRP (UB voor IRP)
(5) Locale optimalisatie
(6) Evalueer de finale oplossing met een LB verkregen via een LR en exacte decomposition
51 Het Inventory Routing Probleem - 3.3 Benaderingsmethode voor een IRPTW model
Ook de niet-negativiteitsbeperking wordt vervangen door de binaire restrictie
omdat een klant in de optimale oplossing maar één
keer zal beleverd worden.
Daarnaast worden nog twee restricties toegevoegd: respectievelijk om de capaciteit van een voertuig
niet te overschrijden en om geen lege voertuigen van één klant naar een andere te laten rijden.
(3.3)
(3.4)
Om het model oplosbaar te maken via Lagrangian relaxatie moet de geheeltallige variabele
binair bepaald worden wat tot de volgende herformulering van het model leidt.
3.3.2.1 Model P’
Indexen:
t in 1..T Periode index
i,j in 0,1,…,N Klantenindex tot N klanten; 0 staat voor depot
Parameters:
C Capaciteit voertuig
Transportkosten van i naar j
Vaste kosten van klant i
Holdingkosten van klant i op periode t
Beginvoorraad van klant i
M Aantal beschikbare voertuigen
Vraag bij klant i in periode t
Maximale voorraad bij klant i
Beslissingsvariabelen:
Geleverde hoeveelheid aan klant i in periode t
Voorraadniveau van klant i in periode t
Vervoerde hoeveelheid over arc i,j
52 Het Inventory Routing Probleem - 3.3 Benaderingsmethode voor een IRPTW model
Aantal keer dat de gerichte arc i,j gebruikt wordt in periode t
Hoeveelheid vervoert door voertuig m op de gerichte arc (0,i) in periode t,
met ∑
Binaire variabele, wordt 1 indien voertuig m vanuit het depot naar klant i rijdt in periode t
De doelfunctie bestaat uit zowel de voorraadkosten van de klanten als de vaste en variabele
transportkosten.
∑∑
∑ ∑ ∑
∑∑
∑
∑∑ ∑
∑ ∑
(4.1)
Enkele restricties kunnen worden overgenomen uit het vorig model. (1.2)(1.3)(1.7)(1.10)(3.4)
De volgende restricties zijn een herformulering van het vorige model.
∑ ∑ ∑
(4.2)
∑ ∑ ∑
(4.3)
∑ ∑ ∑
(4.4)
∑ ∑
∑
(4.5)
(4.6)
∑ ∑
(4.7)
(∑
) ∑
(4.8)
∈ | (4.9)
53 Het Inventory Routing Probleem - 3.3 Benaderingsmethode voor een IRPTW model
(4.10)
Dit model verschilt licht met dat voorgesteld door Yu en al., hun model sommeert immers nooit over
alle voertuigen, maar uit de voortuigen naar klant i. Zo wordt bijvoorbeeld ∑ in hun model
∑ Het model heeft hierdoor meer variabelen, maar kan gemakkelijker geïmplementeerd
worden.
Om een benaderde optimale oplossing te vinden wordt de Lagrangian relaxatietechniek aangewend.
De restricties die uit het model gehaald worden zijn deze, die de beslissingsvariabelen
binden aan de integere variabelen Daarnaast worden de restricties (4.6) en (4.7) aangepast
om ervoor te zorgen dat de oplossing die verkregen wordt voor het gerelaxeerd model toch tot
bruikbare oplossingen leidt.
( ) (4.11)
(4.12)
(4.13)
(4.14)
Restrictie (3.4) kan zonder verlies van optimaliteit vervangen worden door
(4.15)
De volgende vijf Lagrange multipliers worden geïntroduceerd:
Om respectievelijk restricties (3.4), (4.8), (4.15), (4.11) en (4.13) te ontspannen.
54 Het Inventory Routing Probleem - 3.3 Benaderingsmethode voor een IRPTW model
Het gerelaxeerd probleem is voorgesteld door Model RP.
Model RP:
(5.1)
Beperkt door: (1.2), (1.3), (1.7), (1.10), (4.2), (4.3), (4.4), (4.5), (4.9), (4.10), (4.12) en (4.14)
Met: {
} ∑
∑
{
} { }
De decompositietechniek wordt vervolgens gebruikt om model RP “snel” op te lossen. Exacte
decompositie is niet mogelijk, maar wordt benaderd opgelost door afwisselend zijn twee
subproblemen op te lossen: één met gegeven { } en het andere met een gegeven
{ }
Subprobleem 1 behandelt het voorraadbeleid en wordt als volgt beschreven:
∑ ∑ ∑
∑ ∑ ∑ (
( )) ∑ ∑ ∑
(5.2.1)
Met beperkingen (4.4), (4.5), (4.12), (4.14) en de herformuleringen van (1.3) en (1.10):
∑ ∑
(5.2.2)
∑
(5.2.3)
Subprobleem 2 behandelt het routing probleem en wordt hieronder opgesteld:
∑∑( ) ∑ ∑ ∑
∑∑ ∑
(5.3.1)
Beperkt door (1.7), (4.2), (4.3) en (4.9)
Submodel 2 behandelt het routing probleem. Het is dus hier dat we ook rekening kunnen houden
met de tijdsvensters. Het is echter niet mogelijk om op een efficiënte manier deze beperking in het
55 Het Inventory Routing Probleem - 3.3 Benaderingsmethode voor een IRPTW model
model op te nemen. Dit zorgt er immers voor dat we te maken hebben met een kwadratische
beperking, wat de rekentijd van het model sterk verhoogt. Het is echter toch mogelijk om de
tijdsvenster beperking gedeeltelijk op te nemen in het model, via de binaire variabele . (supra
p49, paragraaf 3.3.1: “Deze werd bekomen via een als functie in Excel die 1 wordt als een
begintijdsvenster klant i vermeerderd met zijn servicetijd kleiner is dan het eind tijdsvenster van
klant j.”) Deze binaire variabele zorgt er zoals reeds gezegd niet voor dat de tijdsvensters gevolgd
worden maar eerder dat flagrante schendingen vermeden worden. Daarnaast is het ook mogelijk om
deze variabele te verstrakken door ook de pauzes bij de service tijd te voegen. Het opnemen van
deze pauzes bij elke klant zorgt ervoor dat klanten met tijdsvensters dicht bij elkaar een extra marge
krijgen. Het is dus mogelijk om met deze variabele te spelen zodoende interessantere oplossingen te
verkrijgen. Bij het routing submodel wordt de volgende beperking bijgevoegd:
(6.1)
Op het eerste gezicht is deze restrictie voldoende om flagrante schendingen in de tijdsvensters te
vermijden. Dit is echter niet het geval. Het is immers zo dat bij de voorgestelde oplossingsmethode er
uiteindelijk teruggekoppeld zal moeten worden naar het IRP model om mogelijke resultaten te
bekomen. Dit betekent dat ook restrictie (4.11) terug ingevoerd word. Daarom moet ook een
restrictie ingebouwd worden in submodel 1 om zo ook hier bepaalde arcs uit te sluiten.
Vandaar dat de volgende restrictie toegevoegd wordt aan het eerste submodel:
(6.2)
De oplossingsmethode is gebaseerd op de subgradiënt methode, die vanwege de niet exacte
decompositie niet kan worden gebruikt. Daarom wordt de surrogaat subgradiënt methode naar
voren geschoven.[100]
De Surrogaat Subgradiënt methode (SSG) kan als volgt worden beschreven:
Stap 0. Initialisatie: , en , waar de iteratie-index is, de parameter voor
de stap sizing.
Stap 1. Los de voorraad en routing submodellen op met de Lagrange multipliers met als
input de oplossing van de submodellen uit de vorige iteraties. Bij zijn de
modellen onafhankelijk en kunnen ze dusdanig opgelost worden.
Stap 2. Bepaal de stapgrootte
‖ ‖
56 Het Inventory Routing Probleem - 3.3 Benaderingsmethode voor een IRPTW model
, ( ) is de surrogaat duaal
bij de huidige iteratie k, is de
surrogaat subgradiënt bij de huidige iteratie k, is de optimale waarde voor het
duaal probleem geschat door
, waar de beste surrogaat duaal die
voor iteratie k voor handen is, in het
ander geval. Parameters
Stap 3. Update de Lagrange multipliers in iteratie
Stap 4. Controleer of de stopcriteria niet geschonden worden. Zo moet de iteratie gestopt
worden als voor een voldoende aantal iteraties niet meer verbeterd of indien een
vooraf bepaald aantal iteraties bereikt zijn. Indien een criterium geschonden wordt,
moet de iteratie stoppen en kan de output gegeven worden, zo niet stel
en ga naar stap 1.
Gezien het surrogaat duaal geen Lagrangian duaal in de strikte zin is, kan de waarde de minimum
doelwaarde van het origineel probleem tornen. Dit betekent dat de surrogaat duaal bekomen via
de SSG in de Lagrangian relaxatieaanpak niet gezien kan worden als de lower bound of .
Het bekomen resultaat voor en dient vervolgens ingebracht te worden in model P’
waardoor de bijhorende waarden voor , en bepaald kunnen worden.
Vervolgens wordt afgeweken van de werkmethode van Yu, Chen en Chu doordat de waarde voor
ingebracht wordt in een VRPTW heuristiek (supra p13-36, paragraaf 2.3) om de optimale routes te
bepalen. Dit heeft het voordeel dat er ook rekening gehouden wordt met de tijdsvensters en de
pauzes van chauffeurs. Daarnaast is het hierdoor eenvoudiger om de hier besproken methode te
vergelijken met de voorgestelde heuristiek. Het nadeel is echter wel dat er geen lokale optimalisatie
meer gebeurt, hoewel dit gecompenseerd kan worden door de heuristiek.
3.3.2.2 Parameterwaarden
Om goede waarden te vinden voor parameters , en werden verschillende trial en error
experimenten uitgevoerd. Het resultaat staat in Tabel 9.(infra p57) De geteste combinatie van
parameters staat links in de tabel, rechts staan de bijhorende kosten gevonden voor het IRP model.
Deze kosten moeten nog aangepast worden om tot mogelijke oplossingen te komen, vandaar de
hoge waarde.
De parameterwaarden worden vastgelegd op ; en .
Tabel 9: Parameterwaarden SSG
B 0,1 0,3 0,5 W 0,5 0,7 0,9 P 1,2 1,4
Max. aantal iteraties=15
Test B W P 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
1 0,1 0,5 1,2 572125 520375 564075 511614 533955 508539 527416 513124 523990 514472 517614 515600 520405 513184 519676
2 0,1 0,5 1,4 572125 520375 564075 511614 533955 508539 527416 513124 523990 514472 517614 515600 520405 513184 519676
3 0,1 0,7 1,2 572125 520375 564075 507177 528750 508933 534498 510980 530092 513354 527356 522078 529292 529182 532679
4 0,1 0,7 1,4 572125 520375 564075 507177 528750 508933 534498 510980 530092 513354 527356 522078 529292 529182 532679
5 0,1 0,9 1,2 572125 520375 564075 508100 529686 507712 531357 521538 532003 521421 526622 525428 529663 524426 528614
6 0,1 0,9 1,4 572125 520375 564075 508100 529686 507712 531357 521538 532003 521421 526622 525428 529663 524426 528614
7 0,3 0,5 1,2 572125 520375 564075 511465 525982 512555 524704 515980 516737 514294 515283 527485 520028 528222 520471
8 0,3 0,5 1,4 572125 520375 564075 511465 525982 512555 524704 515980 516737 514294 515283 527485 520028 528222 520471
9 0,3 0,7 1,2 572125 520375 564075 511055 526024 506075 526054 548220 547769 548054 547049 548253 556095 549209 563985
10 0,3 0,7 1,4 572125 520375 564075 511055 526024 506075 526054 548220 547769 548054 547049 548253 556095 549209 563985
11 0,3 0,9 1,2 572125 520375 564075 506549 527476 511711 531112 512127 522195 528770 525135 527246 532820 529917 531536
12 0,3 0,9 1,4 572125 520375 564075 506549 527476 511711 531112 512127 522195 528770 525135 527246 532820 529917 531536
13 0,5 0,5 1,2 572125 520375 564075 507938 525212 623115 625257 627845 606529 611861 607003 610105 613574 611654 557075
14 0,5 0,5 1,4 572125 520375 564075 507938 525212 623115 625257 627845 606529 611861 607003 610105 613574 611654 557075
15 0,5 0,7 1,2 572125 520375 564075 511012 526524 567317 583803 555531 571008 587889 558538 561100 557537 571831 558931
16 0,5 0,7 1,4 572125 520375 564075 511012 526524 567317 583803 555531 571008 587889 558538 561100 557537 571831 558931
17 0,5 0,9 1,2 572125 520375 564075 507038 525212 623115 625257 627845 606529 611861 607003 610105 613574 611654 557075
18 0,5 0,9 1,4 572125 520375 564075 507038 525212 623115 625257 627845 606529 611861 607003 610105 613574 611654 557075
58 Het Inventory Routing Probleem - 3.3 Benaderingsmethode voor een IRPTW model
3.3.2.3 Uitvoering Surrogaat Subgradiënt methode
Met het vastleggen van de parameters kan overgegaan worden op een bespreking van de SSG
implementatie. Deze werd geprogrammeerd in de IBM ILOG OPL IDE 6.3 omgeving en maakt gebruik
van de CPLEX Solver en een Exceldatabase. Vereenvoudigde modelleringen werden opgenomen in
bijlage. (infra p102, bijlage C) Voor de volledige modellen wordt verwezen naar de “run”
configuraties voor het voorbeeld submodel1, submodel2, deelinvullen, invullen, invullen2, P’ en
surrogate_subgradient, opgenomen in de bijlage cd ( open “Masterproef.opl” project in IBM ILOG
OPL.) Daarnaast vervult ook het Excelbestand (example.xlsx) tal van functies. Zo wordt de
stapgrootte in Excel berekend en nadien opgeroepen in ILOG voor verder gebruik.
De minimumwaarde bij de gegeven parameters wordt bereikt na vijf iteraties. Alle resultaten en
scripting log voor deze iteraties kan gevonden worden op de bijlage cd. (map: min_vb_Hybrid) De
waarden voor de variabelen kunnen teruggevonden worden op de vele tabbladen van het
Excelbestand die bij de iteratie hoort.
3.3.2.4 Een beknopte samenvatting van de implementatie:
Stap 0: Initiëren waarden. (basis.xlsx) Het tabblad stepsize bevat de parameterwaarden. Alle
Lagrangian multipliers worden op nul gezet.
Stap 1: Het model voert respectievelijk submodel 1 en 2 uit. De input wordt via een
“sheetconnection” uit Excel gehaald, de CPLEX Solver wordt vervolgens aangewend om het
model op te lossen waarna de oplossing terug naar Excel getransfereerd wordt.
Stap 2: Het model bepaalt de stapgrootte. De oplossingen van submodel 1 en 2 worden ingevuld in
de “run” configuratie deelinvullen. en de gradiënts worden berekend en
ingevuld in het Excelbestand. De feitelijke stapgrootte en geschatte duale waarde wordt
vervolgens berekend in Excel zelf, in tabblad StepSize. Het maakt hierbij gebruik van diverse
functies om het maximum van de absolute waarde van de gradiënts te bepalen en van de
functies aangebracht in de theoretische beschrijving. Binnen dit tabblad worden ook de
iteratievariabelen bijgehouden.
De waarden voor en worden ingebracht in model P’ om een mogelijke oplossing te
bekomen voor de variabelen , en . In tegenstelling tot de werkwijze van Yu, Chen en Chu.
[94] werd ervoor gekozen om dit elke iteratie te doen. De bijhorende doelfunctie is die, die moet
worden geminimaliseerd.
59 Het Inventory Routing Probleem - 3.3 Benaderingsmethode voor een IRPTW model
Stap 3: De voordien berekende stapgrootte laat het updaten van de multipliers toe.
Excel wordt gebruikt om de negatieve waarden naar nul terug te
brengen.
Stap 4: Enkel één stopcriterium is opgenomen in het model, het andere moet manueel
gecontroleerd worden. Indien de doelfunctie niet meer verbetert voor een bepaald aantal
iteraties kan men de loop stoppen.
Opmerking: Het werken met een Exceldatabase heeft een sterke invloed op de werktijd van de
hybride benaderingsmethode. Het geheugen loopt snel vol vanwege openstaande
data. De werking van het model is vandaar een stuk sneller wanneer iteratie per
iteratie gewerkt wordt. Op die manier worden overbodige data frequent gedumpt.
Op het voorbeeld is de werktijd van één iteratie minder dan een minuut. Een 20-tal
iteraties duurt op deze methode een kleine 20 minuten.
Wanneer men het model echter direct instelt op 20 iteraties is die rekentijd
opmerkelijk hoger en bestaat er een kans dat het systeem zonder geheugen komt.
Een betere programmering zal dus tot snellere modellen leiden. Indien de
Exceldatabaseconnectie vervangen kan worden door efficiënter databeheer zal de
werktijd herleidt worden tot een fractie van de huidige werktijd.
Tabel 10: Waarden SSG
Iteratie Z[k] Q D* Stapgrootte
0 466325,5 0 1 0 -1,55442
1 378305,3 466325,5 1 792753,4 1,381493
2 479492,9 378305,3 1 643119 0,54542
3 1925221 378305,3 1 643119 -4,27367
4 484351,6 378305,3 1 643119 0,529225
5 974071,8 378305,3 1 643119 -1,10318
3.3.2.5 Resultaten
Uit de waarden van de minimale iteratie (hier iteratie 5) wordt de bestelhoeveelheid gebruikt om het
bijhorende VRPTW op te lossen. Hiervoor wordt beroep gedaan op de Variable Neighbourhood
Search metaheuristiek met 2 mutatie functies (VNS2H) voor een VRPTW aangebracht in paragraaf
2.3.1.
60 Het Inventory Routing Probleem - 3.3 Benaderingsmethode voor een IRPTW model
De bestelhoeveelheid die ingebracht wordt, staat hieronder getabelleerd:
periode
klanten 1 2 3 4 5 6 7 8 9 10
1 0 0 0 16 0 0 21 0 23 0
2 0 0 9 89 0 0 103 0 0 33
3 0 0 7 18 0 8 42 0 0 0
4 0 0 0 33 0 0 42 0 0 0
5 0 0 0 16 0 0 41 0 0 0
6 0 0 0 37 0 14 24 69 0 0
7 0 0 0 91 0 0 0 0 19 24
8 0 0 46 0 0 14 14 64 0 0
9 0 0 54 0 0 0 1 0 0 1
10 0 1 33 0 0 0 12 32 0 0
11 0 0 44 0 0 0 0 30 0 0
12 0 5 20 16 24 18 21 83 0 0
13 0 0 2 15 18 23 16 28 25 31
14 0 0 0 13 8 6 10 14 9 12
15 0 0 11 81 0 31 38 44 55 39
Tabel 11: Bestelhoeveelheid via hybride methode
De transportkosten worden verkregen via de VRPTW heuristiek waar de voorraadkosten buiten staan.
Daarom werd een afzonderlijk voorraadsmodel opgesteld (infra p108, Bijlage D). Door dit model in te
brengen in MATLAB (infra p64, paragraaf 3.4.1.2) kan ook de voorraadkost in rekening gebracht
worden bij het bepalen van de kosten.
De functie IRPTW.m (Bijlage H) berekent de totale kosten van de IRPTW oplossing verkregen via de
hybride methode en de VNS heuristiek. Een totale kost van 81 996 wordt bekomen met de
bijhorende routes: (infra p61, Tabel 12)
0
10
20
30
40
50
60
70
80
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Periode 1
Periode 2
Periode 3
Periode 4
Periode 5
Periode 6
Periode 7
Periode 8
Periode 9
61 Het Inventory Routing Probleem - 3.3 Benaderingsmethode voor een IRPTW model
Tabel 12: Routes bij oplossing hybride methode
10 12
13 15 12
3 8 10 11 9 2
13 15 14 12
5 3 7 6 4 2 1
13 14 12
3 8 6
13 15 14 12
13 15 14 12
5 3 8 10 9 6 4 2 1
13 15 14 12
8 10 11 6
13 15 14
7 1
13 15 14
7 9 2
Routes 10de Periode
Routes 3de Periode
Routes 4de Periode
Routes 1ste Periode
Routes 2de Periode
Routes 5de Periode
Routes 6de Periode
Routes 7de Periode
Routes 8ste Periode
Routes 9de Periode
62 Het Inventory Routing Probleem - 3.3 Benaderingsmethode voor een IRPTW model
Tabel 13: Kosten na benaderde optimalisatie
Transportkosten berekend volgens hybride methode
TSSA-VRPTW 81 996
ANTS-VRPTW 127 935
VNS-VRPTW 81 996
GRASP-VRPTW 81 996
63 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
3.4 Heuristieken voor een IRPTW model Om een heuristiek op te stellen die zowel voorraad als transport optimaliseert, kan men zich best
focussen op een beslissingsvariabele die een belangrijke invloed heeft op beide. Deze vindt men in de
bestelhoeveelheid (OQ) die per periode en per klant bepaald wordt. Aan de hand van deze OQ kan
men de routes per periode verkrijgen via een VRPTW heuristiek. (vergelijkbaar met de
kostenberekening voor de benaderingsmethode, cf. paragraaf 3.3.2.5, p59) Om de voorraadkosten te
bepalen kan hetzelfde voorraadsmodel gebruikt worden.
3.4.1 IRPTW via een GA en een VNS VRPTW heuristiek
Om naast de transportkosten ook de voorraadkosten in beschouwing te nemen kan men een Genetic
Algoritme (GA) combineren met een VRPTW heuristiek. Om de GA te implementeren wordt gebruik
gemaakt van de optimalisatietoolbox ingebed in MATLAB 2010b. Het voorraadsmodel werd
gemodelleerd in IBM ILOG 6.3 en ingelezen in MATLAB.
Deze paragraaf begint met een uiteenzetting van de algemene werkwijze van de GA metaheuristiek
waarna de instelling voor de verschillende opties wordt besproken.
3.4.1.1 Genetisch Algoritme
De techniek van de genetische algoritmen komt voort uit de biologie. In de genetica wordt namelijk
de relatie bestudeerd tussen ouders en kinderen. De oorsprong van genetica kan gevonden worden
in de wetten van Mendel. Gregor Johann Mendel stelde in zijn werkstuk “Versuche über Pflanzen-
Hybriden” of experimenten op hybrideplanten vast dat planten kenmerken doorgeven aan hun
nakomelingen. Deze bevindingen werden later veralgemeend. Zo vindt men onderlinge relaties
tussen generaties en bestudeert men de invloed van bepaalde uiterlijke of fysieke kenmerken.
Darwins evolutieleer staat centraal in de toepassing van genetische algoritmen bij
optimalisatieproblemen. Bij een zichzelf voortplantende populatie zou het “fitste” individu de
grootste kans moeten hebben om te overleven en zijn genetische kenmerken over te dragen naar de
volgende generatie.
Voor elk individu van de populatie wordt daarom de fitheid berekend met behulp van een
fitheidsfunctie. Het symboliseert hoe goed of slecht een individu zich verhoudt tot andere individuen
in de populatie. Natuurlijke selectie moet er dan voor zorgen dat de “fitste” individuen met een hoge
waarschijnlijkheid als ouders geselecteerd worden.
De volgende generatie ontstaat door middel van reproductie, een proces waarin kinderen gecreëerd
worden door mutatie en recombinatie toe te passen op de populatie.
64 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
Figuur 28: 2 punten cross-over van binaire strings8
Bij recombinatie wordt het genetisch materiaal van de ouders gecombineerd tot nieuwe individuen,
bijvoorbeeld via een cross-over functie. (supra Figuur 28) Mutatie daarentegen zorgt voor diversiteit
in de bevolking waardoor de zoekruimte verruimt en lokale optimalisatie vermeden kan worden.
Diverse mutatieoperatoren kunnen aangewend worden om de diversiteit van de populatie te
verhogen.
Recombinatie tracht de fitheid van de individuen te verbeteren door bepaalde eigenschappen te
wijzigen en te optimaliseren. Daarnaast is er ook een immigratiestroom nodig die geheel nieuwe
oplossingen aanbrengt en de populatiediversiteit verhoogt.
Alvorens de nieuwe oplossingen (recombinatiekinderen en immigratiekinderen) in de populatie
worden geïntroduceerd, wordt nog getracht elk individu op zich te verbeteren via een lokale
zoektechniek. Een dergelijk algoritme zoekt op iteratieve manier doorheen de oplossingsruimte,
startend vanuit de individuele oplossing die het individu aangeeft. Het lokaal zoekalgoritme zal
telkens de huidige oplossing door een betere oplossing in de naburige ruimte vervangen totdat geen
gunstigere oplossing meer kan worden gevonden of tot wanneer aan een bepaald stopcriterium is
voldaan. Een dergelijk stopcriterium kan bijvoorbeeld gebaseerd zijn op het beperken van het aantal
zoekiteraties of op het limiteren van de zoektijd. [101] De optimalisatiecyclus van selectie,
recombinatie en immigratie blijft zich dus herhalen tot één stopcriteria is behaald.
3.4.1.2 Hybride toepassing van GA
Het optimaliseren van de bestelhoeveelheid gebeurt niet onafhankelijk van de transportkosten.
Daarom wordt een VRPTW heuristiek gebruikt om de transportkosten in rekening te brengen.
Voor de implementatie van de GA metaheuristiek wordt gebruik gemaakt van het GA uit de MATLAB
2010b optimalisatietoolbox. Om deze toolbox te gebruiken moeten de restricties aan bepaalde
8 http://www.stumptown.com/diss/chapter2.html (15/05/2011)
65 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
vormvereisten voldoen. De variabele die geoptimaliseerd moet worden via de GA is de
bestelhoeveelheid per periode en per klant. Dit betekent dat er variabelen zijn. De restricties
beperken zich tot geen voorraadbreuk, een niet-negatieve vraag en de maximale voorraad. Dit aantal
restricties lijkt weinig, maar om aan de vormvereisten van de toolbox te voldoen betekent dit reeds
300 restricties. De restricties die lineaire ongelijkheden zijn, moeten in de standaardvorm
geschreven worden om gebruikt te worden in de toolbox. Dit betekent dat A een [300,150] matrix
is. Het manueel invullen van de ongelijkheden is dus niet aan te raden. Vandaar dat er naar een
andere methode gezocht is.
Gezien het aantal variabelen snel oploopt naarmate het klantenbestand uitbreidt of meer periodes in
beschouwing genomen worden, zal het GA enkel toegepast worden op het basisvoorbeeld
aangebracht in paragraaf 1.2.
Een lineair voorraadsmodel kan snel en eenvoudig opgesteld worden via het ILOG OPL
softwarepakket. Binnen dit model kan men eenvoudig aan de vormvereisten voldoen. Gebruik
makend van de exportmogelijkheden van ILOG OPL kan men dan dit model vervolgens exporteren
naar een MPS bestand. Dit MPS bestand kan ingelezen worden via het “readmps” pakket beschikbaar
gesteld door Dr. Brian Borchers ( http://infohost.nmt.edu/~borchers/readmps.html .) De doelvector,
A, b en de Upper en Lower Bounds kunnen via dit pakket ingelezen worden in MATLAB. Dit maakt het
mogelijk om verschillende datainstanties snel en eenvoudig te modelleren en in MATLAB te
gebruiken.
De fitnessfunctie voorgesteld door IRPTW.m drukt de ‘fitheid’ uit in functie van de
bestelhoeveelheid. De data die binnen deze script moeten ingelezen worden, bevatten de capaciteit,
doelvector, aantal periodes, vaste kosten en de klantendata met de tijdsvensters, locaties en
servicetijd.
De doelvector X voor de voorraadkosten is afkomstig van het MPS bestand (=’obj’) de andere data
zijn dezelfde als deze gebruikt in de initiële IRPTW. (omvormen.m)
De fitnessfunctie is
De combinatie van de heuristieken zorgt ervoor dat het testen van de parameters een zeer
tijdrovende bezigheid is. Vandaar dat ervoor gekozen is om de testwaarden tot een absoluut
minimum te beperken door zorgvuldig de beschikbare functies te beoordelen naar hun effectiviteit
66 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
binnen deze heuristiek. Hieronder volgt een beknopt overzicht van de gebruikte functies en de reden
waarom voor die opties is gekozen. Voor een volledig overzicht van de functies van de
optimalisatietoolbox dient verwezen te worden naar de gebruikershandleiding van de MATLAB
toolbox. (samengevat in Bijlage E)
3.4.1.3 Opties GA
3.4.1.3.1 Opbouw initiële populatie
De keuze van een interessante initiële populatie is essentieel voor de goede werking van het
algoritme. De interessante populatie vergt een bepaalde diversiteit in de bevolking. Als de
gemiddelde afstand tussen de individuen groot is, is de diversiteit hoog, zo niet is de diversiteit laag.
Het bepalen van de juiste hoeveelheid van diversiteit is een kwestie van trial en error. Te hoge of te
lage diversiteit is echter nefast voor de werking van het algoritme. Om de populatie te verbeteren is
ervoor gekozen om de populatie deels willekeurig te bepalen en deels de populatie afkomstig van de
iteraties uit de eigen IRPTW heuristiek (infra p72, paragraaf 3.4.2) over te nemen. Een andere
mogelijkheid is om de best bekomen oplossing te gebruiken als range voor de initiële bevolking. Dit
verbetert de oplossing van het GA, maar men zit vast in een lokale oplossing. De tweede invloed
factor op de range van de bevolking is de mutatiefunctie. Voor een probleem met restricties wordt
binnen de MATLAB toolbox de “Adapted Feasible” functie aangeraden. Hiervan zal dus niet worden
afgeweken.
De grootte van de populatie moet minstens het aantal variabelen overtreffen zodat de individuen in
elke populatie de zoekruimte overspannen. Via de eigen IRPTW heuristiek (infra p72, paragraaf
3.4.2) werden 103 populaties ingebracht. Om boven het aantal variabelen (150) uit te groeien, werd
ervoor gekozen deze populatie te verdubbelen en af te ronden tot 250, zodat de rekentijd nog
binnen de perken blijft.
3.4.1.3.2 Fitness scaling
Deze optie bepaalt hoe de fitnesswaarde zal beoordeeld worden tijdens de selectieprocedure. De
selectieprocedure maakt gebruik van de geschaalde fitnesswaarde om de ouders te selecteren.
Indien de geschaalde waarden voor een bepaalde ouder te hoog zijn, zal dit leiden tot een lokaal
optimum, terwijl een te lage waarde ervoor zal zorgen dat het te traag gaat. De standaardfunctie die
hier aangeboden wordt, is de “Rank” functie. Hier wordt geen rekening gehouden met de spread
tussen de fitnesswaarden, waardoor men mogelijk trager naar een oplossing convergeert. Een
andere veelgebruikte functie is de “top scaling” waar de beste ouders een gelijke kans hebben om
geselecteerd te worden. Daarnaast wordt in de MATLAB toolbox ook nog een proportionele en
lineaire shiftfunctie ter beschikking gesteld.
67 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
3.4.1.3.3 Selectie
De selectiefunctie bepaalt hoe ouders geselecteerd worden. Diverse selectiefuncties zijn
beschikbaar:
De “Remainder” functie. Deze functie heeft het voordeel dat de geschaalde waarde afgerond
wordt waardoor de kleine verschillen in spread van de populatie niet doorwegen op de keuze
van de ouders. Voor het gefractioneerd gedeelte wordt dan gebruik gemaakt van een
“roulette” methode. Waardoor de spread toch weer zijn effect heeft.
De “Stochastisch uniforme” functie waar elke ouder een stuk, proportioneel met zijn
geschaalde waarde, doorgeeft aan de volgende generatie.
Daarnaast zijn er nog de “Roulette”- en de “Tournament” selectiefunctie.
3.4.1.3.4 Reproductie
Deze opties bepalen hoe de volgende generatie zal gecreëerd worden. De opties zijn:
“Elite count”: Het aantal personen met de beste fitnesswaarden in de huidige generatie die
gegarandeerd overleven en in de volgende generatie opgenomen worden. De
standaardwaarde is 2, maar de optimale waarde is 1. Een te hoge waarde zorgt voor een
dominantie van de sterkste individuen waardoor men opnieuw in lokale optimalisatie
vastloopt. De gekozen testwaarden zijn 1,2 en 4.
“Cross-over fractie”: Dit bepaalt de fractie van de populatie, anders dan de elitekinderen, die
gemaakt wordt aan de hand van een Cross-over mutatie. Standaard staat deze waarde op 0,8.
Voor de geëxperimenteerde waarden wordt hier slechts minimaal van afgewijkt tot 0,7; 0,8
en 0,9.
3.4.1.3.5 Cross-over functie
Voor de Cross-over functie zijn er diverse mogelijkheden binnen de MATLAB toolbox beschikbaar,
namelijk de “Heuristiek”, “One point”, “Two points”, “Scattered”, “Intermediate” en “Arithmetic”
Cross-over functie. De heuristiek functie zorgt ervoor dat de bestelhoeveelheid net iets verder zal
liggen dan de bestelhoeveelheid van de beste ouder in de richting weg van de slechtste ouder. De
one point en de two points functies kunnen het voordeel hebben dat een klant verandert van route
of periode. Het nadeel is dan echter wel dat de bestelhoeveelheid niet aangepast wordt, maar eerder
overgenomen van een van de ouders. De intermediate functie berekent een willekeurig gewogen
gemiddelde van de ouders om nieuwe kinderen te creëren. Deze functie lijkt bijzonder nefast voor de
werking van de heuristiek.
68 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
Voor de migratie parameteropties en de stopcriteria werd gekozen om de standaardwaarden te
gebruiken.
3.4.1.4 Analyse van de GA
Nadat een depth first search (infra p71, Tabel 15) is uitgevoerd op de parameter en de functies van
de MATLAB 2010b GA kan men een analyse uitvoeren op enkele van deze resultaten. De MATLAB
toolbox stelt hiervoor diverse output plots ter beschikking die gevolgd kunnen worden tijdens de
applicatie. Een overzicht van de beschikbare plots is opgenomen in bijlage. (infra p113, Bijlage E)
Zoals in de inleiding vermeld, is de diversiteit in de populatie van groot belang voor de efficiëntie van
de GA. Het is dan ook maar de vraag of het gebruik van een voordien bepaalde populatie niet nefast
is voor de populatie. Om dit na te gaan wordt de GA zonder vooraf bepaalde populatie geanalyseerd
met de standaardparameters. De afstandsplot toont de gemiddelde afstand tussen de individuen,
links zonder opgenomen populatie en rechts met. Gezien de populatie willekeurig bepaald wordt kan
men uitgaan van een diverse populatie. Indien de gemiddelde afstand vergelijkbare waarden
aanneemt bij het opnemen van een vooraf bepaalde populatie kan men ervan uitgaan dat de
populatie divers is. De gemiddelde afstand ligt lager wanneer men de vooraf bepaalde populatie
gebruikt, maar toch is deze voldoende om te spreken van een diverse populatie. De populatie
convergeert echter wel een stuk sneller.
Door het invoegen van de populatie verkregen via de IRPTW heuristiek bekomt men een opmerkelijk
beter resultaat (van 12 740- links naar 89 603-rechts). In alle waarschijnlijkheid is dit te wijten aan de
manier waarop de GA omgaat met de vele nullen in de populatie en de complexe impact van de
restricties.
69 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
Ook voor de parameterwaarden kan men met behulp van deze plots (van links naar rechts: de fitness,
de genealogy9 en de selectieplot van de laatste iteratie ) diverse inzichten verkrijgen. Ter illustratie
wordt het effect van de cross-over fractie bekeken bij een Single point cross-over functie:
Cross-over fractie 0,7:
Cross- over fractie 0,8
Cross-over fractie 0,9
Uit deze plots blijkt dat de one point cross-over functie zich vooral moet focussen op bepaalde
individuen in de populatie. Uit de selectieplots van de laatste iteratie blijkt dat er een duidelijke
selectie is gebeurd bij een cross-over van 0,8 terwijl bij een cross-over van zowel 0,7 en 0,9 de
selectie te egaal is om effectief te zijn.
Uit de vergelijking van de plots zou men kunnen afleiden dat de beperkte diversiteit door de grote
cross-over fractie van 0,9 tot mindere oplossingen leidt. Bij een cross-over fractie van 0,7 geldt dan
weer het omgekeerde. Dit wordt duidelijk geïllustreerd in de fitnessplot. De plotselinge verhoging is
er immers te wijten aan een te grote inmenging van de mutatie functie, die tracht de diversiteit te
verhogen. De diversiteit is dusdanig verhoogd dat enkele positieve kernmerken van de populatie
verloren zijn gegaan.
9 De rode lijnen wijzen op mutatie kinderen, blauw op cross-over kinderen en zwart wijst op elite kinderen
70 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
3.4.1.5 Resultaat
Het verkregen resultaat voor de bestelhoeveelheid die via de GA werd bekomen, wordt hieronder
weergegeven:
Klanten 1 2 3 4 5 6 7 8 9 10
1 0 0 0 0 21 0 25 0 0 13
2 0 0 64 0 115 0 0 0 109 0
3 0 0 33 0 0 0 41 0 0 0
4 0 0 0 43 0 0 0 44 0 0
5 0 0 0 35 2 2 2 2 2 14
6 0 0 0 74 0 0 0 71 0 0
7 0 0 0 73 0 0 60 0 0 73
8 0 0 71 1 1 1 1 65 0 0
9 0 0 0 20 0 24 0 0 26 0
10 0 35 0 0 0 0 40 1 1 1
11 0 0 0 27 0 37 0 0 0 40
12 0 71 0 0 0 60 0 0 55 0
13 0 0 47 0 0 80 0 0 0 31
14 0 0 0 41 2 2 2 2 31 0
15 0 0 125 0 0 0 146 0 0 140
Tabel 14: Resultaat GA - bestelhoeveelheid
Dit resultaat illustreert een inherente zwakheid van dit GA. Bestelhoeveelheden van de ordegrootte
van 1 of 2 dienen vermeden te worden. Toch kan men ze er echter niet zomaar uitnemen. De initiële
populatie bevat betere oplossingen dan bekomen door dit GA wat enerzijds de waarde van de IRPTW
heuristiek aantoont die de populatie bepaalt, maar anderzijds ook de gebreken van dit GA aantoont.
Naarmate de voorraadkosten groter worden, zal de daadkracht van de eigen IRPTW heuristiek
afnemen. (infra p72, paragraaf 3.4.2)
Tabel 15: Depth first search op parameters en functies GA
Waarde Fitness scaling Selection Reproduction Mutation Cross-over
fractie Cross-over
functie Migration direction
Migration Fraction
Migration interval
Opmerking
89825 Rank Stochastic uniform Elite count 2 Adaptive feasible 0,8 Scattered Forward 0,2 20 Default waarden
90155 Proportional Stochastic uniform Elite count 3 Adaptive feasible 0,8 Scattered Forward 0,2 20 90198 Top scales Stochastic uniform Elite count 4 Adaptive feasible 0,8 Scattered Forward 0,2 20 90154 Shift linear Stochastic uniform Elite count 5 Adaptive feasible 0,8 Scattered Forward 0,2 20 90011 Rank Remainder Elite count 6 Adaptive feasible 0,8 Scattered Forward 0,2 20 89922
Roulette Elite count 7 Adaptive feasible 0,8 Scattered Forward 0,2 20
90181
Tournement 4 Elite count 8 Adaptive feasible 0,8 Scattered Forward 0,2 20 90046
Stochastic uniform Elite count 1 Adaptive feasible 0,8 Scattered Forward 0,2 20
89748
Elite count 4 Adaptive feasible 0,8 Scattered Forward 0,2 20 90087
Elite count 2 Adaptive feasible 0,7 Scattered Forward 0,2 20
90162
Elite count 2 Adaptive feasible 0,9 Scattered Forward 0,2 20 90080
Elite count 5 Adaptive feasible 0,8 Scattered Forward 0,2 20
89603
Elite count 3 Adaptive feasible 0,8 Scattered Forward 0,2 20 89738
Adaptive feasible 0,7 Scattered Forward 0,2 20
89947
Adaptive feasible 0,9 Scattered Forward 0,2 20 90150
Adaptive feasible 0,7 Single point Forward 0,2 20
89946
Adaptive feasible 0,8 Single point Forward 0,2 20 91339
Adaptive feasible 0,9 Single point Forward 0,2 20
90023
Adaptive feasible 0,6 Two point Forward 0,2 20 89849
Adaptive feasible 0,7 Two point Forward 0,2 20
90087
Adaptive feasible 0,8 Two point Forward 0,2 20 90107
Adaptive feasible 0,9 Two point Forward 0,2 20
89949
Adaptive feasible 0,7 Intermediate Forward 0,2 20 91004
Adaptive feasible 0,8 Intermediate Forward 0,2 20 opmerking wel minimum van 89720 bereikt
91153
Adaptive feasible 0,9 Intermediate Forward 0,2 20 90134
Adaptive feasible 0,7 Heuristic 1,2 Forward 0,2 20
89768
Adaptive feasible 0,8 Heuristic 1,2 Forward 0,2 20 90138
Adaptive feasible 0,9 Heuristic 1,2 Forward 0,2 20
91423
Adaptive feasible 0,8 Heuristic 1,1 Forward 0,2 20 90129
Adaptive feasible 0,8 Heuristic 1,3 Forward 0,2 20
90152
Adaptive feasible 0,7 Arithmetic Forward 0,2 20 90187
Adaptive feasible 0,8 Arithmetic Forward 0,2 20
90187
Adaptive feasible 0,9 Arithmetic Forward 0,2 20 90025
Adaptive feasible 0,8 Scattered Both 0,2 20
89603
Adaptive feasible
Forward 0,1 20 89823
Adaptive feasible
0,3 20
90087
Adaptive feasible
0,2 15 89603
Adaptive feasible
25
89603 Rank Stochastic uniform Elite count 3 Adaptive feasible 0,8 Scattered Forward 0,2 20
72 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
3.4.2 Een optimalisatie heuristiek
Het uitgewerkte IRPTW heuristiek maakt enkele vereenvoudigingen om van de speciale structuur van
de IRP gebruik te maken. Deze vereenvoudigingen zijn vooral van toepassing op het
voorraadprobleem. De VRPTW heuristieken uit het voorgaande hoofdstuk komen hier terug op het
toneel om het transportprobleem, dat bij de oplossing voor het voorraadsmodel horen, op te lossen.
Vervolgens tracht de heuristiek de transportkosten te verminderen. De structuur van de
geïmplementeerde heuristieken is dusdanig gestructureerd dat er wezenlijk weinig aanpassingen
nodig zijn om de verschillende metaheuristieken (- de verschillende VRPTW heuristieken) te
implementeren. De bekomen oplossingen moeten nadien aangevuld worden met de voorraadkosten.
Hiervoor wordt op dezelfde manier te werk gegaan als bij de hybride en GA oplossingsmethode. Op
deze manier zijn de kosten vergelijkbaar.
3.4.2.1 Kerngedachte heuristiek
Alvorens dieper in te gaan op de werking van de heuristiek zal hier kort de kerngedachte geschetst
worden. De beslissingsvariabele, die deze heuristiek tracht te optimaliseren, is de bestelhoeveelheid
per klant en per periode. Een initiële oplossing wordt verkregen door na te gaan wanneer in welke
periode aan welke klant geleverd moet worden, zodat er geen voorraadbreuk voorkomt. De
bestelhoeveelheid wordt bepaald op driemaal de vraag van de klant bij die periode. Dit mag echter
het maximum voorraadniveau van de klant overtreffen. Zodra de bestelhoeveelheid bepaald is,
wordt via een VRPTW heuristiek het aantal routes per periode bepaald. De doelstelling van de
heuristiek is om de routes te egaliseren overheen de periodes. Daarom wordt er uit de drukste
periode een route genomen die vooruit geschoven wordt. De effecten hiervan worden in
beschouwing genomen waarna opnieuw het aantal routes bepaald wordt. Opnieuw wordt er uit de
drukste route een route vooruitgeschoven en zo gaat de iteratie verder.
Figuur 29: Kerngedachte IRPTW heuristiek
Bepaal initiële
bestelhoeveelheid
(geen stock-out)
Voer VRPTW uit
voor de nodige
perioden
Drukste
periode?
Uit te nemen
route?
Verschuif route
naar vorige
periode
Aanpassingen
(+ controle stock-
outs)
# routes Voor drukste
periode
Welke periode?
73 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
3.4.2.2 Initiële oplossing
Om een initiële oplossing te bekomen voor het voorraadprobleem wordt ervan uitgegaan dat het
leveren zo lang mogelijk wordt uitgesteld. Met andere woorden een klant wordt geleverd wanneer
een voorraadbreuk zou voorkomen en niet eerder.
De bestelde hoeveelheid ( Order Quantity) is dan X maal de huidige vraag van de klant. Het staat dus
min of meer vast hoeveel een klant zal beleverd krijgen. Standaard is dit driemaal de huidige vraag
van die klant. Dit brengt dus een enorme beperking van de heuristiek mee. Vandaar dat de
mogelijkheid aangeboden wordt om de gewenste leveringsperiode per klant zelf te bepalen.
Vanwege het groot aantal combinaties is dit echter wel niet opgenomen in de experimenten.
Tabel 16: Initiële bestelhoeveelheid per periode per klant
Klant/Periode 1 2 3 4 5 6 7 8 9 10
1 0 0 0 0 24 0 28 0 0 47
2 0 0 66 0 119 0 0 0 109 0
3 0 0 34 0 0 0 51 0 0 0
4 0 0 0 48 0 0 0 54 0 0
5 0 0 0 43 0 0 0 0 0 56
6 0 0 0 88 0 0 0 71 0 0
7 0 0 0 73 0 0 60 0 0 73
8 0 0 88 0 0 0 0 66 0 0
9 0 0 0 20 0 24 0 0 28 0
10 0 40 0 0 0 0 42 0 0 0
11 0 0 0 28 0 39 0 0 0 40
12 0 74 0 0 0 63 0 0 103 0
13 0 0 47 0 0 80 0 0 0 124
14 0 0 0 55 0 0 0 0 32 0
15 0 0 128 0 0 0 147 0 0 141
De capaciteit van een voertuig wordt op 300 gezet. De initiële oplossing gaat verder door per periode
de bijhorende VRPTW op te lossen. Deze wordt opgelost via één van de vier metaheuristieken die
besproken werden in paragraaf 2.3 (supra p13-36). Dit voorbeeld werd verder uitgewerkt aan de
hand van de TSSA heuristiek. De routes per periodes zijn weergegeven in Figuur 30.
74 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
Figuur 30: Heuristiek - initiële routes per periode
3.4.2.3 Verbeteringsiteratie
Het aantal voertuigen per periode ([0,1,2,2,1,1,2,1,2,2]) is hierna van belang om te bepalen welke de
drukste periode is (hier wordt periode 3 gekozen.) Deze periode heeft dus de meeste voertuigen
nodig, waardoor gekozen wordt om uit deze periode een route te nemen om die door te schuiven
naar een eerdere periode. In het geval van een gelijkstand wordt de eerste gekozen. Indien de 1ste
periode de drukste is, dan wordt uit de tweede drukste periode een route gekozen. De functie
routeuit.m bepaalt welke route uit de drukste periode gehaald wordt ([13,15,0,0,0]) op basis van de
resterende capaciteit ( ) en het aantal klanten ( ). Hoe kleiner het aantal klanten en hoe hoger
de resterende capaciteit, hoe meer kans dat die route uit de periode gehaald wordt om toe te
voegen tot de vorige periode. De keuze parameters zijn en en enkel de rangschikking
verkregen via de “Uithaalopportuniteit” is van belang.
De standaardwaarden voor en zijn respectievelijk 50 en 1 000. Andere verhoudingen zullen
nadien getest worden. (infra p83, paragraaf 3.4.2.6)
Hierna wordt via de gebruikte metaheuristiek de route in de vorige periode ingebracht. Mogelijks
worden klanten bijgevoegd bij andere routes uit de vorige periode. De bestelhoeveelheid wordt
overgenomen tenzij de maximumcapaciteit van de klant overschreden wordt. In dat geval wordt de
maximumcapaciteit min de huidige voorraad genomen.
Bij het voorbeeld wordt uit de drukste periode, namelijk periode 3, de route [13,15,0,0,0] gekozen
om vooruit te schuiven. Deze route heeft immers nog een grote restcapaciteit en heeft maar twee
klanten en kan dus op die manier sneller opgenomen worden in een andere route. Nadien wordt via
bijvoorbeeld de TSSA heuristiek bekeken of deze klant niet bij een andere route uit periode 2 kan
2 1
10 12 13 11 9 12
13 15 3 7 15
3 8 2 10 1
11 14 8 6 4
5 7 9 6 4
Routes 3de Periode Routes 7de Periode
Routes 4de Periode Routes 8ste Periode
Routes 1ste Periode Routes 5de Periode
Routes 2de Periode Routes 6de Periode
75 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
worden bijgevoegd. Dit laatste gebeurt door de functie routeinbrengen.m. Er is één andere route in
periode 2. De routes in periode 2 wijzigen naar [
].
Het kan uiteraard zijn dat een klant bijvoorbeeld 5 eenheden te veel heeft om mee te kunnen met
een route. Het zou zeer inefficiënt zijn om een voertuig speciaal te laten rijden naar één klant voor 5
eenheden. Daarom werd de functie restcapaciteit.m in het leven geroepen. Deze functie gaat na of
het mogelijk is om, door een klant een kleinere levering te geven, een route te elimineren. De route
wordt met een gewijzigde capaciteit ingebracht en indien een route geëlimineerd kan worden,
blijven de wijzigingen staan. In het voorbeeld zijn echter geen capaciteitsproblemen voorhanden
waardoor deze functie geen meerwaarde biedt.
In het voorbeeld wordt klant 10 apart vervoerd omdat er anders problemen dreigen met de
tijdsvensters. Echter wanneer we dit voorlopig buiten beschouwing laten, dan zou er in periode 2
maar 1 route zijn. Als men dit nogmaals aanpast dan kan men de werking van de functie
restcapaciteit.m illustreren. Stel dat de capaciteit in plaats van 300 naar 280 gezet wordt, dan dreigt
er een overcapaciteit (40+74+47+128>280). De functie restcapaciteit.m wijzigt de bestelhoeveelheid
van een klant, die alleen in een route zit, naar de minimumrestcapaciteit van andere routes. In dit
geval verandert de functie de bestelhoeveelheid van klant 10 van 40 naar 31. Als er dan geen
rekening gehouden wordt met de tijdsvensters, dan zou deze klant opgenomen worden in de route.
Deze functie kan op verschillende manieren uitgewerkt worden. Zo kan men eigenlijk van alle klanten
de capaciteit verminderen en opnieuw de routes berekenen. Er is echter gekozen om de functie
beperkt te houden om zo de uitvoersnelheid niet te veel te beïnvloeden. Daarnaast kunnen
dergelijke wijzigingen best een diverse inslag kennen op het voorraadsniveau van de klanten in latere
periodes.
Het vooruit schuiven van een route en de bestelhoeveelheid zal zijn effect hebben op navolgende
periodes. Daarom doen we een beroep op de functie aanpassingen.m. De klanten die doorgeschoven
worden, in dit geval klant 13 en 15 zullen door de wijziging in bestelperiode een ander
voorraadtraject belopen. Daarom moet voor die klanten in de navolgende periodes opnieuw een
bestelhoeveelheid bepaald worden.
De functie aanpassingen.m voert een diverse reeks van wijzigingen aan. Zo wordt uiteraard eerst de
uittredende route vervangen door een nulrij. Vervolgens haalt men de uittredende klanten uit de
volgende periodes. Het programma houdt de gewijzigde periode(s) bij. Hierna wordt opnieuw de
bestelhoeveelheid bepaald. Hier gaan we op dezelfde manier te werk als bij de initiëring. Dreigt een
voorraadbreuk dan moet er geleverd worden. Ook hier worden de gewijzigde periodes bijgehouden.
76 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
Voor die gewijzigde periodes en ook de vorige moet een nieuwe VRPTW opgelost worden met
andere hoeveelheden.
Oorspronkelijk wordt klant 13 ook in periode 6 en 10 beleverd. Voor klant 15 zijn dit periodes 7 en 10.
De kans bestaat dat het voorraadverloop nu anders verloopt. Daarom worden voor de uitredende
klanten een nieuw voorraadverloop en bestelhoeveelheid berekend. De bestelhoeveelheden blijven
in dit geval hetzelfde. Hier zou het dus niet nodig zijn om opnieuw het VRPTW probleem op te lossen
in periodes 6, 7 en 10. Maar dit is niet altijd het geval. Zo kan het best zijn dat klant 15 een
voorraadbreuk dreigt te hebben in periodes 6 en 9. In dat geval moet voor die periodes met de
gewijzigde hoeveelheid opnieuw een VRP uitgerekend worden, met nieuwe routes tot gevolg.
Nadat de aanpassingen gedaan zijn worden de resultaten opgeslagen en begint de iteratie opnieuw.
Deze iteratie blijft zich herhalen tot diverse “stop” criteria een bepaald aantal keer bereikt zijn. Dit
kan op diverse wijzen. Telkens wanneer de eerste periode als drukste periode aanzien wordt, komt
men dichter bij het stopcriterium. Dit wordt beperkt omdat deze heuristiek vooral eerst tracht om
het maximum aantal voertuigen overheen de ganse periode te beperken. Het is de bedoeling een
spreiding te verkrijgen van het aantal nodige voertuigen overheen de periodes, wat niet mogelijk is
als de eerste periode direct het hoogst aantal voertuigen nodig heeft. Een volgende stop criterium is
telkens wanneer de kosten stijgen door een iteratie. Zodra deze criteria voldoende keer
voorgekomen zijn, dan stopt de iteratie. Een andere mogelijkheid is simpelweg dat het maximale
aantal iteraties bereikt is. Dit maximale aantal is berekend door het aantal periodes te
vermenigvuldigen met het maximale aantal routes in de eerste iteratie, nogmaals vermenigvuldigd
met 2. In het voorbeeld is dit 2 x 10 x 2=40. Een grondige motivering voor deze specifieke waarde is
hier niet gegeven, wel blijkt uit niet-significante (en niet opgenomen) trial- en error testen dat deze
waarde ruim hoog genoeg is.
Nadat een bepaald aantal iteraties voltooid is, wordt die iteratie gekozen die de laagste kosten met
zich meebrengt. Hoe de kosten berekend worden is dus een bepalende factor. Er zijn drie
kostenfactoren waarmee rekening gehouden wordt. Deze moeten in lijn staan met de beoogde
doelen van de heuristiek.
1. Het beperken van het maximum aantal voertuigen overheen de periodes.
2. Het beperken van het totaal aantal voertuigen overheen de periodes.
3. Het beperken van de transportkosten.
77 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
Deze kosten zijn in de heuristiek apart gehouden om het mogelijk te maken om bepaalde factoren
zwaarder of lichter te laten doorwegen op de kosten. Naast de kosten zijn er nog enkele interessante
parameters die aangeven hoe de iteraties vlotten. Zo geeft het aantal voertuigen per iteratie heel
mooi aan hoe de oplossing vordert. Daarbij samengaand is het ook handig om de behandelde
periodes bij te houden.
Tabel 17: Routes per Iteratie per periode
Iteratie\Periode 1 2 3 4 5 6 7 8 9 10
1 0 1 2 2 1 1 2 1 2 2
2 0 2 1 2 1 1 2 1 2 2
3 1 1 1 2 1 1 2 1 2 2
4 1 1 2 1 1 1 2 1 2 2
5 1 2 1 1 1 1 2 1 2 2
6 1 1 1 1 1 1 2 1 2 2
7 1 1 1 1 1 3 1 1 2 2
8 1 1 1 1 1 2 1 1 2 2
9 1 1 1 1 1 2 1 2 1 2
10 1 1 1 1 2 1 1 2 1 2
11 1 1 1 2 1 1 1 2 1 2
12 1 1 1 1 1 1 1 2 1 2
13 1 1 1 1 1 1 2 1 1 2
14 1 1 1 1 1 2 1 1 1 2
15 1 1 1 1 1 1 1 1 1 2
16 1 1 1 1 1 1 1 1 2 1
17 1 1 1 1 1 1 1 2 1 1
18 1 1 1 1 1 1 2 1 1 2
19 1 1 1 1 1 2 1 1 1 2
20 1 1 1 1 1 1 1 1 1 2
21
22 3 0 1 1 1 1 1 1 1 2
23 3 0 1 1 1 1 1 1 2 1
24 3 0 1 1 1 1 1 2 1 1
25 3 0 1 1 1 1 2 1 1 2
26 3 0 1 1 1 1 1 1 1 2
27 3 0 1 1 1 1 1 1 2 1
Behandelde periodes: [3,2,4,3,2,7,6,9,6,5,4,8,7,6,10,9,8,7,6,10,2,10,9,8,7,10,9]; De iteraties stoppen
omdat voldoende maal de stopcriteria overtreden zijn.
78 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
3.4.2.4 Eindresultaten
Het kostenverloop:
Figuur 31: Kostenverloop heuristiek (excl. voorraadkosten)
De minimumkosten van 24 814 (zonder voorraadkosten) worden bereikt in de 21ste iteratie. Hier is
maar 1 voertuig nodig om al de leveringen te voltooien. De bijhorende routes, bestelhoeveelheid en
voorraadverloop zijn hieronder weergegeven.
Figuur 32: Routes na IRPTW heuristiek
20000
22000
24000
26000
28000
30000
32000
34000
36000
38000
40000
1 3 5 7 9 11 13 15 17 19 21 23 25 27
Kosten/iteratie
Reeks1
3 10 2 3 7 10 2 1
13 15 12 13 11 9 12
5 7 8 11 14 15 14 12
13 9 6 4 8 6 4 1
Routes 4de Periode Routes 8ste Periode
Routes 2de Periode Routes 6de Periode
Routes 3de Periode Routes 7de Periode
Routes 1ste Periode Routes 5de Periode
79 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
Tabel 18: Bestelhoeveelheid per periode
Klant/periode 1 2 3 4 5 6 7 8 9 10
1 0 0 0 0 28 0 0 45 0 0
2 66 0 0 0 119 0 0 0 109 0
3 34 0 0 0 51 0 0 0 0 0
4 0 0 0 48 0 0 0 54 0 0
5 0 0 43 0 0 0 0 0 0 56
6 0 0 0 88 0 0 0 71 0 0
7 0 0 73 0 60 0 0 0 0 73
8 0 0 88 0 0 0 0 66 0 0
9 0 0 0 20 0 24 0 0 28 0
10 40 0 0 0 42 0 0 0 0 0
11 0 0 28 0 0 39 0 0 0 40
12 0 74 0 0 0 63 103 0 0 0
13 0 47 0 80 0 124 0 0 0 0
14 0 0 55 0 0 0 32 0 0 0
15 0 128 0 0 0 0 141 0 147 0
Totaal: 140 249 287 236 300 250 276 236 284 169
Het totaal toont aan dat de capaciteitsrestrictie nooit overschreden wordt.
Figuur 33: Voorraadverloop klant 1 na IRPTW heuristiek
0
10
20
30
40
50
60
70
80
90
1 2 3 4 5 6 7 8 9 10
Klant 1
Vraag
Bestelde hoeveelheid
Voorraad
80 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
Tabel 19: Voorraadniveau klanten
Klant 1 BV= 34 Vraag 5 8 13 8 6 10 9 12 10 13
Bestelde hoeveelheid 0 0 0 0 28 0 0 45 0 0 Voorraad 29 21 8 0 22 12 3 36 26 13
Klant 2 BV= 71
Vraag 40 21 19 40 34 15 42 30 31 33 Bestelde hoeveelheid 66 0 0 0 119 0 0 0 109 0 Voorraad 97 76 57 17 102 87 45 15 93 60
Klant 3 BV= 29
Vraag 13 14 9 6 12 8 13 9 13 7 Bestelde hoeveelheid 34 0 0 0 51 0 0 0 0 0 Voorraad 50 36 27 21 60 52 39 30 17 10
Klant 4 BV= 25
Vraag 6 14 5 12 12 9 9 15 9 9 Bestelde hoeveelheid 0 0 0 48 0 0 0 54 0 0 Voorraad 19 5 0 36 24 15 6 45 36 27
Klant 5 BV= 36
Vraag 7 8 8 14 7 8 9 12 6 14 Bestelde hoeveelheid 0 0 43 0 0 0 0 0 0 56 Voorraad 29 21 56 42 35 27 18 6 0 42
Klant 6 BV= 54
Vraag 12 19 11 25 24 14 24 21 27 21 Bestelde hoeveelheid 0 0 0 88 0 0 0 71 0 0 Voorraad 42 23 12 75 51 37 13 63 36 15
Klant 7 BV= 70
Vraag 28 18 17 20 15 29 19 15 19 24 Bestelde hoeveelheid 0 0 73 0 60 0 0 0 0 73 Voorraad 42 24 80 60 105 76 57 42 23 72
Klant 8 BV= 52
Vraag 18 14 27 22 17 14 14 20 19 25 Bestelde hoeveelheid 0 0 88 0 0 0 0 66 0 0 Voorraad 34 20 81 59 42 28 14 60 41 16
Klant 9 BV= 35
Vraag 6 13 12 6 14 7 11 10 7 5 Bestelde hoeveelheid 0 0 0 20 0 24 0 0 28 0 Voorraad 29 16 4 18 4 21 10 0 21 16
Klant 10 BV= 25
Vraag 13 13 9 6 11 7 12 10 8 14 Bestelde hoeveelheid 40 0 0 0 42 0 0 0 0 0 Voorraad 52 39 30 24 55 48 36 26 18 4
Klant 11 BV= 33
Vraag 13 14 6 7 12 12 13 10 9 11 Bestelde hoeveelheid 0 0 28 0 0 39 0 0 0 40 Voorraad 20 6 28 21 9 36 23 13 4 33
Klant 12 BV= 45
Vraag 27 23 20 16 24 18 21 28 27 28 Bestelde hoeveelheid 0 74 0 0 0 63 103 0 0 0 Voorraad 18 69 49 33 9 54 136 108 81 53
Klant 13 BV= 95
Vraag 43 39 15 15 18 23 16 28 25 31 Bestelde hoeveelheid 0 47 0 80 0 124 0 0 0 0 Voorraad 52 60 45 110 92 193 177 149 124 93
Klant 14 BV= 31
Vraag 14 8 8 14 8 6 10 14 9 12 Bestelde hoeveelheid 0 0 55 0 0 0 32 0 0 0 Voorraad 17 9 56 42 34 28 50 36 27 15
Klant 15 BV= 111
Vraag 45 38 39 58 23 31 38 44 55 39 Bestelde hoeveelheid 0 128 0 0 0 0 141 0 147 0 Voorraad 66 156 117 59 36 5 108 64 156 117
81 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
Naast de capaciteitscontrole op de routes kunnen we ook nagaan of de tijdsvensters niet
overschreden worden. Hoe de route gecontroleerd wordt binnen de heuristiek hangt af van de
gebruikte metaheuristiek. Het is echter ook mogelijk om dit manueel te controleren:
In de 1de periode route [3 10 2]: 65+90+7=162 ;+ pauze=177;+90+10=277 <870
In de 2de periode route [13,15,12]: 31+90+5=126; +pauze; 384+90+7=481<721
In de 3de periode route [5,7,8,11,14]: 15+90+2=107;+pauze; 170+90+3=263;+90+3=356;
+middagpauze=401;448+90+21=559<620
In de 4de periode route [13,9,6,4]:
31+90+17=138;+middagpauze;534+90+2=626;+90+2=718;+pauze;<782
In de 5de periode route [3,7,10,2,1]: 65+90+2=157;+pauze=172;+90+5=267;357+90+5=452;+
middagpauze;825+90+2=917<967
In de 6de periode route [13,11,9,12]:
31+90+14=135;+middagpauze;448+90+3=541;+90+17=648;652<721
In de 7de periode route [15,14,12]: 384+90+5=479; +middagpauze;567+90+3=660<721
In de 8ste periode route [8,6,4,1]:
255+90+2=347;+middagpauze;621+90+2=713;727+90+3=820:+ pauze;912<967
In de 9de periode route [15,9,2]: 384+90+21=495;+middagpauze=540;+90+7=637;+ pauze;
825<870
In de 10de en laatste periode route [5,7,11]:
15+90+2=107;+pauze;170+90+6=266;+middagpauze;448<505
3.4.2.5 Totale kosten
De totale kosten worden opnieuw berekend via de IRPTW.m functie (infra Bijlage H).
met:
Naast de TSSA heuristiek worden ook de andere meta- heuristieken toegepast op het voorbeeld.
82 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
De volgende figuren geven het kostenverloop per iteratie (IRPTW heuristiek) van de verschillende
combinaties van metaheuristieken.
Figuur 34: Kosten volgens de TSSA heuristiek*
Figuur 35: Kosten volgens ANTS heuristiek*
Figuur 36: Kosten volgens GRASP heuristiek*
75
80
85
90
95
100
105
110
115
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
Du
ize
nd
en
TSSA
GRASP
VNS2H
ANTS
75
85
95
105
115
125
135
145
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
Du
ize
nd
en
TSSA
GRASP
VNS2H
ANTS
75
85
95
105
115
125
135
145
155
165
175
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Du
ize
nd
en
TSSA
GRASP
VNS2H
ANTS
Ook hier is 21ste
iteratie optimum (=Figuur 31:
Kostenverloop heuristiek (excl. voorraadkosten))
83 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
Figuur 37: Kosten volgens VNS2H heuristiek*
*De verticale as toont de totale kosten, de horizontale de verbeterings iteraties
3.4.2.6 Varianten op de routeuit.m functie
De standaardwaarden voor en zijn respectievelijk 50 en 1 000. Diverse andere testwaarden
worden getest, weliswaar enkel met de VNS heuristiek. Hierbij blijkt dat men best op 50
gehouden wordt terwijl op 500 kan worden vastgelegd.
populatie minimum
15 1000 pop 1 87997,39
20 1000 pop 2 87997,39
30 1000 pop 3 87997,39
25 1000 pop 4 87997,39
50 1000 pop 5 78871,73
50 1250 pop 6 87997,39
25 1250 pop 7 87997,39
50 750 pop 8 78871,73
25 750 pop 9 87997,39
50 650 pop 10 78871,73
50 600 pop 11 78871,73
50 500 pop 12 78871,73 Tabel 20: Parametertest routeuit.m
75
80
85
90
95
100
105
110
115
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
Du
ize
nd
en
TSSA
Reeks2
VNS2H
ANTS
84 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
3.4.3 Kleinste bovengrens
De kleinste bovengrens (78 871) voor het IRPTW model met pauzes werd bekomen via de IRPTW
heuristiek met ingebouwd de VNS metaheuristiek (met 2 mutatie functies) voor het VRPTW transport
onderdeel van het probleem. Hieronder (en op de volgende pagina’s) wordt het resultaat
samengevat:
kosten berekend volgens minimum waarde VRPTW heuristiek Hybride
TSSA 83 015 TSSA 81 996
ANTS 92 997 VNS2H 127 935
VNS2H 78 871 VNS2H 81 996
GRASP 88 207 VNS2H 81 996
85 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
Tabel 21: Voorraadniveau klanten
Klant 1 BV= 34 Vraag 5 8 13 8 6 10 9 12 10 13
Bestelde hoeveelheid 0 0 0 0 24 28 0 0 47 0 Voorraad 29 21 8 0 18 36 27 15 52 39
Klant 2 BV= 71
Vraag 40 21 19 40 34 15 42 30 31 33 Bestelde hoeveelheid 0 0 66 0 119 0 0 0 109 0 Voorraad 31 10 57 17 102 87 45 15 93 60
Klant 3 BV= 29
Vraag 13 14 9 6 12 8 13 9 13 7 Bestelde hoeveelheid 0 0 34 0 0 51 0 0 0 0 Voorraad 16 2 27 21 9 52 39 30 17 10
Klant 4 BV= 25
Vraag 6 14 5 12 12 9 9 15 9 9 Bestelde hoeveelheid 0 0 0 48 0 0 0 54 0 0 Voorraad 19 5 0 36 24 15 6 45 36 27
Klant 5 BV= 36
Vraag 7 8 8 14 7 8 9 12 6 14 Bestelde hoeveelheid 0 0 0 43 0 0 52 0 0 0 Voorraad 29 21 13 42 35 27 70 58 52 38
Klant 6 BV= 54
Vraag 12 19 11 25 24 14 24 21 27 21 Bestelde hoeveelheid 0 0 0 88 0 0 0 71 0 0 Voorraad 42 23 12 75 51 37 13 63 36 15
Klant 7 BV= 70
Vraag 28 18 17 20 15 29 19 15 19 24 Bestelde hoeveelheid 0 0 0 73 0 60 0 73 0 0 Voorraad 42 24 7 60 45 76 57 115 96 72
Klant 8 BV= 52
Vraag 18 14 27 22 17 14 14 20 19 25 Bestelde hoeveelheid 0 0 88 0 0 0 0 66 0 0 Voorraad 34 20 81 59 42 28 14 60 41 16
Klant 9 BV= 35
Vraag 6 13 12 6 14 7 11 10 7 5 Bestelde hoeveelheid 0 0 0 20 0 24 0 28 0 0 Voorraad 29 16 4 18 4 21 10 28 21 16
Klant 10 BV= 25
Vraag 13 13 9 6 11 7 12 10 8 14 Bestelde hoeveelheid 40 0 0 0 0 42 0 0 0 0 Voorraad 52 39 30 24 13 48 36 26 18 4
Klant 11 BV= 33
Vraag 13 14 6 7 12 12 13 10 9 11 Bestelde hoeveelheid 0 0 28 0 0 34 0 0 28 0 Voorraad 20 6 28 21 9 31 18 8 27 16
Klant 12 BV= 45
Vraag 27 23 20 16 24 18 21 28 27 28 Bestelde hoeveelheid 0 74 0 0 63 0 0 0 103 0 Voorraad 18 69 49 33 72 54 33 5 81 53
Klant 13 BV= 95
Vraag 43 39 15 15 18 23 16 28 25 31 Bestelde hoeveelheid 0 47 0 0 80 0 0 0 0 124 Voorraad 52 60 45 30 92 69 53 25 0 93
Klant 14 BV= 31
Vraag 14 8 8 14 8 6 10 14 9 12 Bestelde hoeveelheid 0 0 55 0 0 0 32 0 0 0 Voorraad 17 9 56 42 34 28 50 36 27 15
Klant 15 BV= 111
Vraag 45 38 39 58 23 31 38 44 55 39 Bestelde hoeveelheid 0 128 0 0 0 0 147 0 0 141 Voorraad 66 156 117 59 36 5 114 70 15 117
86 Het Inventory Routing Probleem - 3.4 Heuristieken voor een IRPTW model
Figuur 38: Routes kleinste bovengrens
10
13 15 12
3 8 11 14 2
5 7 9 6 4
13 12 2 1
3 7 10 11 9 1
5 15 14
7 8 9 6 4
11 12 2 1
13 15
Routes 7de Periode
Routes 8ste Periode
Routes 9de Periode
Routes 10de Periode
Routes 1ste Periode
Routes 2de Periode
Routes 3de Periode
Routes 4de Periode
Routes 5de Periode
Routes 6de Periode
87 Vergelijkende resultaten
4 Vergelijkende resultaten Doorheen deze scriptie werd één voorbeeld, gebaseerd op de eerste 15 klanten uit de
Solomoninstantie C101 (supra p4, paragraaf 1.2), uitgewerkt als illustratie. Op dezelfde manier
werden nog 8 andere testinstanties uitgewerkt, ditmaal op basis van Solomoninstanties C102, C103,
R201, R202, R203, RC201, RC202 en RC203. De MATLAB functie datageneratie.m wordt opnieuw
gebruikt om de nodige input te genereren uit de Solomoninstanties. Voor elke instantie werd een
apart voorraadmodel opgesteld in IBM ILOG OPL IDE 6.3. Door de doelfunctie per model in te lezen in
MATLAB 2010b kon aan de hand van de bestelhoeveelheid per klant en per periode de
voorraadkosten berekend worden. (Alle bestanden kunnen uiteraard teruggevonden worden op de
bijlage cd)
De transportkosten bevatten zowel vaste als variabele kosten.
Waarbij de FixedCost net als bij het voorbeeld 1000 is. De transportkosten voor de
benaderingsmethode worden berekend aan de hand van de VNS heuristiek. Hetzelfde geldt voor de
EOQ methode.
Tabel 22 (infra p88) vat de resultaten samen.
88 Vergelijkende resultaten
Tabel 22: Testinstanties
Methode Duur (min)
Voorraad-kosten
Transport kosten
Totale kosten
Besparing (%)
Max. voertuigen
Gem. voertuigen
C1
02
EOQ (VNS) - 46.340 55.198 101.538 - 3 1,3
TSSA 0,23 47.991 37.868 85.859 15% 2 1,3
VNS 0,11 46.641 43.578 90.219 11% 2 1,2
GRASP 2,40 47.324 37.868 85.192 16% 2 1,3
ACS 2,35 46.845 36.868 83.713 18% 2 1,2
Hybride 15,06* 30.988 65.502 96.490 5% 3 1,8
C1
03
EOQ (VNS) - 36.769 49.398 86.167 - 2 1,5
TSSA 0,63 38.845 36.288 75.133 13% 2 1,1
VNS 0,09 38.826 32.996 71.822 17% 1 1
GRASP 1,89 37.496 39.288 76.784 11% 2 1,4
ACS 2,05 38.471 25.288 63.759 26% 1 1
Hybride 14,04* 23.520 52.448 75.968 12% 2 1,6
R2
01
EOQ (VNS) - 34.146 64.210 98.356 - 3 1,2
TSSA 0,52 37.567 39.964 77.531 21% 2 1,6
VNS 0,14 34.236 45.480 79.716 19% 2 1,1
GRASP 3,86 37.681 34.888 72.569 26% 2 1,1
ACS 2,75 35.353 37.962 73.315 25% 2 1,4
Hybride 16,19* 18.091 84.197 102.288 -4% 3 2,4
R2
02
EOQ (VNS) - 25.462 49.654 75.116 - 2 1,1
TSSA 0,51 25.774 37.154 62.928 16% 2 1,3
VNS 0,16 26.133 34.754 60.887 19% 1 1
GRASP 2,69 25.592 37.154 62.746 16% 2 1,3
ACS 1,97 25.462 37.154 62.616 17% 2 1,3
Hybride 15,98* 16.934 63.608 80.542 -7% 2 1,6
R2
03
EOQ (VNS) - 19.195 48.346 67.541 - 3 1,4
TSSA 0,54 19.345 36.346 55.691 18% 2 1,3
VNS 0,12 20.292 32.028 52.320 23% 1 0,9
GRASP 3,40 19.564 36.346 55.910 17% 2 1,3
ACS 2,09 21.223 23.346 44.569 34% 1 1
Hybride 15,34* 12.344 62.918 75.262 -11% 2 1,7
RC
20
1
EOQ (VNS) - 47.009 66.068 113.077 - 3 1,6
TSSA 0,45 48.252 40.438 88.690 22% 2 1,4
VNS 0,24 49.133 50.944 100.077 11% 2 1,3
GRASP 4,22 48.008 40.438 88.446 22% 2 1,4
ACS 3,21 51.579 45.438 97.017 14% 2 1,9
Hybride 17,98* 31.071 59.368 90.439 20% 2 1,7
RC
20
2
EOQ (VNS) - 47.700 76.348 124.048 - 4 1,6
TSSA 0,62 49.251 42.468 91.719 26% 2 1,6
VNS 0,23 48.882 53.488 102.370 17% 2 1,4
GRASP 3,95 49.547 42.468 92.015 26% 2 1,6
ACS 2,08 48.969 41.468 90.437 27% 2 1,5
Hybride 18,32* 33.392 70.824 104.216 16% 3 1,8
RC
20
3
EOQ (VNS) - 47.909 63.882 111.791 - 3 1,5
TSSA 0,43 49.004 41.922 90.926 19% 2 1,6
VNS 0,12 48.124 53.832 101.956 9% 2 1,5
GRASP 2,46 49.004 39.922 88.926 20% 2 1,4
ACS 2,34 48.017 38.922 86.939 22% 2 1,3
Hybride 15,82* 31.465 58.593 90.058 19% 2 1,6
*Uit de profiler van IBM ILOG kan opgemaakt worden dat gemiddeld 92% van het geheugen gebruikt wordt door het
inlezen en schrijven van data naar Excel. (Snellere implementatie is dus mogelijk)
89 Vergelijkende resultaten
Tabel 23: Besparingen t.o.v. EOQ
Methode C1 (1-3) R2 (1-3) RC2(1-3) Gemiddeld
TSSA 12% 18% 22% 18%
VNS 14% 20% 13% 15%
GRASP 9% 20% 23% 17%
ACS 11% 25% 21% 19%
Hybride 9% -8% 18% 7%
Tabel 23 neemt het gemiddelde van de relatieve besparingen overheen de testinstanties. Op deze
manier kan men de daadkracht van de heuristiek en de benaderingsmethode inschatten.
Op basis van deze resultaten kunnen enkele observaties gemaakt worden:
De voorraadkosten liggen opmerkelijk lager bij de benaderingsmethode. (Hybride)
De manier waarop de transportkosten hier berekend worden bevoordeeld de heuristiek. De
heuristiek is dus vooral daadkrachtig wanneer de vaste transportkosten hoog zijn.
De snelheid en dus de implementatie van het benaderingsmodel moet sterk verbeteren als
men een groter klantenbestand of meer periodes wenst te benaderen. Zowel de resultaten
van Y. Yu et al. [94] als de profiler informatie uit IBM ILOG geven aan dat efficiënter
programmeren de werktijd tot een fractie van het huidige kan herleiden.
De diversiteit bekomen door verschillende VRPTW heuristieken te gebruiken biedt een
meerwaarde voor de ontwikkelde IRPTW heuristiek. Er is geen aangewezen metaheuristiek
die consistent de beste resultaten geeft.
De benaderingsmethode blijkt niet goed samen te gaan met de R2 testinstanties. De klanten
uit deze instanties zijn willekeurig geplaatst waardoor het transportprobleem meer impact
heeft. De daadkracht van de methode blijkt te dalen naarmate de transportkosten meer en
meer doorwegen.
Het niet opnemen van pauzes in het benaderingsmodel maar wel nadien in de VRPTW
heuristiek vermindert de daadkracht van de methode.
De metaheuristiek, die gemiddeld het meest oplevert is, de ACS. De slechte resultaten op het
voorbeeld blijken een uitzondering op die regel te zijn.
90 Conclusie
5 Conclusie Het Inventory Routing Probleem met tijdsvenster en verplichte planning van pauzes werd in deze
scriptie onderzocht. Een benaderingsmodel werd opgelost aan de hand van Lagrangian Relaxatie en
de Surrogate Subgradient methode. Dit model blijkt bijzonder effectief in het verminderen van de
voorraadkosten. Ten opzichte van de EOQ methode wordt een besparing van ruim 30% vastgesteld
op de voorraadkosten van de testwaarden. Indien de transportkosten echter zwaarder doorwegen,
door bijvoorbeeld hoge vaste transportkosten blijkt het model minder daadkrachtig.
Naast de benaderingsmethode werd een heuristiek ontwikkeld die zich focust op de transportkosten.
Door gebruik te maken van verschillende VRPTW heuristieken wordt een beter optimum bekomen.
Als de transportkosten zwaar doorwegen worden besparingen van gemiddeld 17% vastgesteld ten
opzichte van een standaard EOQ toepassing op een beperkte maar diverse dataset. De nadruk ligt
hierbij vooral op het verminderen van het aantal voertuigen/chauffeurs overheen de periodes.
91 Referenties
Referenties 1. Kleywegt, A.J., The stochastic inventory routing problem with direct deliveries. Transportation
Science, 2002. 36(1): p. 94. 2. Jaillet, H.F., Web metrics: measuring patterns in online shopping. Journal of Consumer
Behaviour, 2003. 2(4): p. 369-381. 3. Burns, L.D., et al., Distribution Strategies that Minimize Transportation and Inventory Costs.
Operations Research, 1985. 33(3): p. 469-490. 4. Disney, S.M. and D.R. Towill, The effect of vendor managed inventory (VMI) dynamics on the
Bullwhip Effect in supply chains. International journal of production economics, 2003. 85(2): p. 199-215.
5. Chopra, S. and P. Meindl, Supply Chain Management. Strategy, Planning & Operation, in Das Summa Summarum des Management, C. Boersch and R. Elschen, Editors. 2007, Gabler. p. 265-275.
6. Liao, S.-H., C.-L. Hsieh, and P.-J. Lai, An evolutionary approach for multi-objective optimization of the integrated location-inventory distribution network problem in vendor-managed inventory. Expert systems with applications, 2011. 38(6): p. 6768-6776.
7. Lee, H., V. Padmanabhan, and S. Whang, Information Distortion in a Supply Chain: The Bullwhip Effect. Management Science, 1997. 43(4): p. 546-558.
8. Ann, C., et al., The Inventory Routing Problem. 1998, Kluwer Academic Publishers. 9. Campbell, A.M. and M.W.P. Savelsbergh, A Decomposition Approach for the Inventory-
Routing Problem. Transportation Science, 2004. 38(4): p. 488-502. 10. Archetti, C., et al., A Branch-and-Cut Algorithm for a Vendor-Managed Inventory-Routing
Problem. Transportation Science, 2007. 41(3): p. 382-391. 11. Jian-Bo, Y. and X. Dong-Ling, On the evidential reasoning algorithm for multiple attribute
decision analysis under uncertainty. Systems, Man and Cybernetics, Part A: Systems and Humans, IEEE Transactions on, 2002. 32(3): p. 289-304.
12. Kleywegt, A.J., Dynamic programming approximations for a stochastic inventory routing problem. Transportation Science, 2004. 38(1): p. 42.
13. Trudeau, P. and M. Dror, Stochastic Inventory Routing: Route Design with Stockouts and Route Failures. Transportation Science, 1992. 26(3): p. 171-184.
14. Baita, F., et al., Dynamic routing-and-inventory problems: a review. Transportation Research Part A: Policy and Practice, 1998. 32(8): p. 585-598.
15. Axsäter, S., Scaling down multi-echelon inventory problems. International journal of production economics, 2001. 71(1-3): p. 255-261.
16. Çetinkaya, S. and C.-Y. Lee, Stock Replenishment and Shipment Scheduling for Vendor-Managed Inventory Systems. Management Science, 2000. 46(2): p. 217-232.
17. Cheung, K.L. and H.L. Lee, The Inventory Benefit of Shipment Coordination and Stock Rebalancing in a Supply Chain. Management Science, 2002. 48(2): p. 300-306.
18. Fry, M.J., R. Kapuscinski, and T.L. Olsen, Coordinating Production and Delivery Under a (z, Z)-Type Vendor-Managed Inventory Contract. Manufacturing service operations management, 2001. 3(2): p. 151-173.
19. Giesen, R., H.S. Mahmassani, and P. Jaillet, Logistics in Real Time Inventory Routing Operations under Stochastic Demand, in Innovations in Distribution Logistics, J.A.E.E. Nunen, M.G. Speranza, and L. Bertazzi, Editors. 2009, Springer Berlin Heidelberg. p. 109-148.
20. Popken, D.A., An algorithm for the multiattribute, multicommodity flow problem with freight consolidation and inventory costs. Operations Research, 1994. 42(2): p. 274.
21. Al-Khayyal, F. and S.-J. Hwang, Inventory constrained maritime routing and scheduling for multi-commodity liquid bulk, Part I: Applications and model. European Journal of Operational Research, 2007. 176(1): p. 106-130.
92 Referenties
22. Viswanathan, S. and K. Mathur, Integrating Routing and Inventory Decisions in One-Warehouse Multiretailer Multiproduct Distribution Systems. Management Science, 1997. 43(3): p. 294-312.
23. Buffa, F.P. and J.R. Munn, A Recursive Algorithm for Order Cycle-Time that Minimizes Logistics Cost. The Journal of the Operational Research Society, 1989. 40(4): p. 367-377.
24. Ben-Khedher, N. and C.A. Yano, The Multi-Item Joint Replenishment Problem with Transportation and Container Effects. Transportation Science, 1994. 28(1): p. 37-54.
25. Bertazzi, L. and M.G. Speranza, Minimizing logistic costs in multistage supply chains. Naval Research Logistics (NRL), 1999. 46(4): p. 399-417.
26. Savelsbergh, M. and J.-H. Song, Inventory routing with continuous moves. Computers & operations research, 2007. 34(6): p. 1744-1763.
27. Bramel, J. and D. Simchi-Levi, A Location based Heuristic for General Routing Problems. Operations Research, 1995. 43(4): p. 649-660.
28. Federgruen, A. and P. Zipkin, A Combined Vehicle Routing and Inventory Allocation Problem. Operations Research, 1984. 32(5): p. 1019-1037.
29. Chan, L.M.A. and D. Simchi-Levi, Probabilistic Analyses and Algorithms for Three-Level Distribution Systems. Management Science, 1998. 44(11): p. 1562-1576.
30. Anily, S. and A. Federgruen, A Class of Euclidean Routing Problems with General Route Cost Functions. Mathematics of Operations Research, 1990. 15(2): p. 268-285.
31. Anily, S. and A. Federgruen, One Warehouse Multiple Retailer Systems with Vehicle Routing Costs. Management Science, 1990. 36(1): p. 92-114.
32. Chan, L.M.A., A. Federgruen, and D. Simchi-Levi, Probabilistic Analyses and Practical Algorithms for Inventory-Routing Models. Operations Research, 1998. 46(1): p. 96-106.
33. Solomon, M.M., Algorithms for the Vehicle Routing and Scheduling Problems with Time Window Constraints. Operations Research, 1987. 35(2): p. 254-265.
34. Lau, H.C., Q. Liu, and H. Ono, Integrating local search and network flow to solve the inventory routing problem, in Eighteenth national conference on Artificial intelligence. 2002, American Association for Artificial Intelligence: Edmonton, Alberta, Canada. p. 9-14.
35. Malandraki, C. and R.B. Dial, A restricted dynamic programming heuristic algorithm for the time dependent traveling salesman problem. European Journal of Operational Research, 1996. 90(1): p. 45-55.
36. Van Woensel, T., et al., Vehicle routing with dynamic travel times: A queueing approach. European Journal of Operational Research, 2008. 186(3): p. 990-1007.
37. Woensel, T., et al., A Queueing Framework for Routing Problems with Time-dependent Travel Times. Journal of Mathematical Modelling and Algorithms, 2007. 6(1): p. 151-173.
38. Ichoua, S., M. Gendreau, and J.-Y. Potvin, Vehicle dispatching with time-dependent travel times. European Journal of Operational Research, 2003. 144(2): p. 379-396.
39. Fleischmann, B., M. Gietz, and S. Gnutzmann, Time-Varying Travel Times in Vehicle Routing. Transportation Science, 2004. 38(2): p. 160-173.
40. Bertsimas, D.J. and G.v. Ryzin, A Stochastic and Dynamic Vehicle Routing Problem in the Euclidean Plane. Operations Research, 1991. 39(4): p. 601-615.
41. Dantzig, G.B. and J.H. Ramser, The Truck Dispatching Problem. Management Science, 1959. 6(1): p. 80-91.
42. Dantzig, G., R. Fulkerson, and S. Johnson, Solution of a Large-Scale Traveling-Salesman Problem. Operations Research, 1954. 2(4): p. 393-410.
43. Kallehauge, B., Lagrangian duality applied to the vehicle routing problem with time windows. Computers & operations research, 2006. 33(5): p. 1464-1487.
44. Padberg, M. and G. Rinaldi, A Branch-and-Cut Algorithm for the Resolution of Large-Scale Symmetric Traveling Salesman Problems. SIAM review, 1991. 33(1): p. 60-100.
45. Laporte, G., Optimal routing under capacity and distance restrictions. Operations Research, 1985. 33(5): p. 1050.
93 Referenties
46. Laporte, G., Y. Nobert, and M. Desrochers, Optimal Routing under Capacity and Distance Restrictions. Operations Research, 1985. 33(5): p. 1050-1073.
47. Toth, P. and D. Vigo, The vehicle routing problem. 2002: Society for Industrial and Applied Mathematics.
48. Kallehauge, B., et al., Vehicle Routing Problem with Time Windows, in Column Generation, G. Desaulniers, J. Desrosiers, and M.M. Solomon, Editors. 2005, Springer US. p. 67-98.
49. Garey, M.R. and D.S. Johnson, Computers and intractibility : A guide to the theory of NP- Completeness / Michael R. Garey, David S. Johnson. 1979, San Francisco : W. H. Freeman and Company.
50. Kohl, N., et al., 2-Path Cuts for the Vehicle Routing Problem with Time Windows. Transportation Science, 1999. 33(1): p. 101-116.
51. Kallehauge, B., N. Boland, and O.B.G. Madsen, Path inequalities for the vehicle routing problem with time windows. Networks, 2007. 49(4): p. 273-293.
52. Ascheuer, N., M. Fischetti, and M. Grötschel, A polyhedral study of the asymmetric traveling salesman problem with time windows. Networks, 2000. 36(2): p. 69-79.
53. Naddef, D. and G. Rinaldi, Branch-and-cut algorithms for the capacitated VRP, in The vehicle routing problem. 2001, Society for Industrial and Applied Mathematics. p. 53-84.
54. Bard, J.F., G. Kontoravdis, and G. Yu, A Branch-and-Cut Procedure for the Vehicle Routing Problem with Time Windows. Transportation Science, 2002. 36(2): p. 250-269.
55. Kohl, N., Exact methods for time constrained routing and related scheduling problems. 1995. 56. Bräysy, O. and M. Gendreau, Vehicle Routing Problem with Time Windows, Part II:
Metaheuristics. Transportation Science, 2005. 39(1): p. 119-139. 57. Braysy, O., Vehicle routing problem with time windows, part II: Metaheuristics.
Transportation Science, 2005. 39(1): p. 119. 58. R.Thangiah, S., I.H. Osman, and T. Sun, Hybrid Genetic Algorithm, Simulated Annealing and
Tabu Search Methods for Vehicle Routing Problems with Time Windows. Report SRU CpSc-TR-94-27, 1994.
59. Kontoravdis, G. and J.F. Bard, A GRASP for the Vehicle Routing Problem with Time Windows. ORSA Journal on Computing, 1995. 7(1): p. 10.
60. Potvin, J.-Y. and J.-M. Rousseau, An Exchange Heuristic for Routeing Problems with Time Windows. The Journal of the Operational Research Society, 1995. 46(12): p. 1433-1446.
61. Bachem, A., W. Hochstättler, and M. Malich, The simulated trading heuristic for solving vehicle routing problems. Discrete Applied Mathematics, 1996. 65(1-3): p. 47-72.
62. Chiang, W.-C. and R. Russell, Simulated annealing metaheuristics for the vehicle routing problem with time windows. Annals of Operations Research, 1996. 63(1): p. 3-27.
63. Liu, F.-H.F. and S.-Y. Shen, A route-Neighbourhood-based metaheuristic for vehicle routing problem with time windows. European Journal of Operational Research, 1999. 118(3): p. 485-504.
64. Kilby, Prosser, and Shaw, Guided local search for the vehicle routing problem with time windows. 1999. XII, 511 p.
65. Caseau, Y. and F. Laburthe, Heuristics for Large Constrained Vehicle Routing Problems. Journal of Heuristics, 1999. 5(3): p. 281-303.
66. Gambardella, L.M., et al., MACS-VRPTW: a multiple ant colony system for vehicle routing problems with time windows, in New ideas in optimization. 1999, McGraw-Hill Ltd., UK. p. 63-76.
67. Tan, K.C., L.H. Lee, and K.Q. Zhu, Heuristic Methods for Vehicle Routing Problem with Time Windows. 1999.
68. Anderson, D., et al., Human-Guided Simple Search, in Proceedings of the Seventeenth National Conference on Artificial Intelligence and Twelfth Conference on Innovative Applications of Artificial Intelligence. 2000, AAAI Press. p. 209-216.
69. Tan, K.C., et al., Heuristic methods for vehicle routing problem with time windows. Artificial Intelligence in Engineering, 2001. 15(3): p. 281-295.
94 Referenties
70. Bräysy, O., A reactive variable Neighbourhood search for the vehicle-routing problem with time windows. INFORMS journal on computing, 2003. 15(4): p. 347.
71. Bent, R. and P.V. Hentenryck, A Two-Stage Hybrid Local Search for the Vehicle Routing Problem with Time Windows. Transportation Science, 2004. 38(4): p. 515-530.
72. Rousseau, L.-M., M. Gendreau, and G. Pesant, Using Constraint-Based Operators to Solve the Vehicle Routing Problem with Time Windows. Journal of Heuristics, 2002. 8(1): p. 43-58.
73. Czech, Z.J. and P. Czarnas. Parallel simulated annealing for the vehicle routing problem with time windows. in Parallel, Distributed and Network-based Processing, 2002. Proceedings. 10th Euromicro Workshop on. 2002.
74. Bräysy, O., G. Hasle, and W. Dullaert, A multi-start local search algorithm for the vehicle routing problem with time windows. European Journal of Operational Research, 2004. 159(3): p. 586-605.
75. Chiang, W.C. and R.A. Russell, A Metaheuristic for the Vehicle-Routeing Problem with Soft Time Windows. The Journal of the Operational Research Society, 2004. 55(12): p. 1298-1310.
76. Clarke, G. and J.W. Wright, Scheduling of vehicles from a central depot to a number of delivery points. Operations Research, 1964. 12(4): p. 568.
77. Schulze, J. and T. Fahle, A parallel algorithm for the vehicle routing problem with time window constraints. Annals of Operations Research, 1999. 86(0): p. 585-607.
78. Backer, B.D., et al., Solving Vehicle Routing Problems Using Constraint Programming and Metaheuristics. Journal of Heuristics, 2000. 6(4): p. 501-523.
79. Glover, F., A user's guide to tabu search. Annals of Operations Research, 1993. 41(1): p. 1. 80. Gautama, S., Notes Toegepaste combinatorische optimalisatie en heuristieken. 2011,
Universiteit Gent. 81. Kirkpatrick, S., Optimization by simulated annealing: Quantitative studies. Journal of
Statistical Physics, 1984. 34(5): p. 975-986. 82. Li, Z. and Orchard, Improved GRASP with Tabu search for vehicle routing with both time
window and limited number of vehicles Innovations in Applied Artificial Intelligence. Vol. 3029. 2004.
83. Lim, A. and F. Wang, A Smoothed Dynamic Tabu Search Embedded GRASP for m-VRPTW, in Proceedings of the 16th IEEE International Conference on Tools with Artificial Intelligence. 2004, IEEE Computer Society. p. 704-708.
84. Chaovalitwongse, W., GRASP with a new local search scheme for vehicle routing problems with time windows. Journal of Combinatorial Optimization, 2003. 7(2): p. 179.
85. Kytöjoki, J., et al., An efficient variable Neighbourhood search heuristic for very large scale vehicle routing problems. Computers & operations research, 2007. 34(9): p. 2743-2757.
86. Hansen, P., A tutorial on variable Neighbourhood search. 2003. 87. Bräysy, O. and M. Gendreau, Tabu Search heuristics for the Vehicle Routing Problem with
Time Windows. TOP, 2002. 10(2): p. 211-237. 88. Taillard, É., A tabu search heuristic for the vehicle routing problem with soft time windows.
1996. 89. Tong, Z., et al. Hybrid Ant Colony Algorithm for the Vehicle Routing with Time Windows. in
Computing, Communication, Control, and Management, 2008. CCCM '08. ISECS International Colloquium on. 2008.
90. Xuan, T., et al. Ant Colony System for Optimizing Vehicle Routing Problem with Time Windows. in Computational Intelligence for Modelling, Control and Automation, 2005 and International Conference on Intelligent Agents, Web Technologies and Internet Commerce, International Conference on. 2005.
91. Luca Maria, G., T. Éric, and A. Giovanni, MACS-VRPTW: A Multiple Colony System For Vehicle Routing Problems With Time Windows. 1999, McGraw-Hill.
92. Kallehauge, B., J. Larsen, and O. Madsen, Lagrangean Duality Applied on Vehicle Routing with Time Windows - Experimental Results, in IMM-Technical Report-2001-9. 2001: Richard Petersens Plads, Building 321, DK-2800 Kgs. Lyngby.
95 Referenties
93. Cook, W. and J.L. Rich, A Parallel Cutting-Plane Algorithm for the Vehicle Routing Problems with Time Windows, in Rice University. 1999.
94. Yu, Y., H. Chen, and F. Chu, A new model and hybrid approach for large scale inventory routing problems. European Journal of Operational Research, 2008. 189(3): p. 1022-1040.
95. Chandra, P. and M.L. Fisher, Coordination of production and distribution planning. European Journal of Operational Research, 1994. 72(3): p. 503-517.
96. Aghezzaf, E.-h., et al., An exact algorithm for the single-vehicle cyclic inventory routing problem. 2010.
97. Hiriart-Urruty, J.B. and C. Lemaréchal, Convex analysis and minimization algorithms: Fundamentals. 1996: Springer-Verlag.
98. Webb, I.R. and R.C. Larson, Period and phase of customer replenishment: A new approach to the Strategic Inventory/Routing problem. European Journal of Operational Research, 1995. 85(1): p. 132-148.
99. Savelsbergh, M., An optimization algorithm for the inventory routing problem with continuous moves. Computers & operations research, 2008. 35(7): p. 2266.
100. Zhao, X., P.B. Luh, and J. Wang, Surrogate Gradient Algorithm for Lagrangian Relaxation. Journal of Optimization Theory and Applications, 1999. 100(3): p. 699-712.
101. Neckebrouck, J. and K. Schellinck, Procedures voor het Single Machine Maximum Lateness probleem, in Beleidsinformatica en Operationeel Beheer. 2010, University of Ghent: Ghent. p. 89.
96 Lijst met figuren
Lijst met figuren Figuur 1: ..................................................................................................................................... 9
Figuur 2: Pseudocode voor de Push Forward Insertion Heuristiek ....................................................... 14
Figuur 3: Oplossing PFIH ........................................................................................................................ 15
Figuur 4: Tabu beslissingsboom ............................................................................................................ 16
Figuur 5: Eigenschappen Simulated Annealing ..................................................................................... 17
Figuur 6: Flow diagram TSSA heuristiek ................................................................................................ 18
Figuur 7: Routes TSSA na 2-interchange voor verbeteringsiteratie ...................................................... 19
Figuur 8: Routes TSSA na eerste iteratie ............................................................................................... 19
Figuur 9: Beste routes volgens TSSA heuristiek .................................................................................... 20
Figuur 10: Flow diagram GRASP heuristiek ........................................................................................... 25
Figuur 11: Initiële oplossing X2 voor GRASP ......................................................................................... 26
Figuur 12: GRASP: X2 na lokale optimalisatie ....................................................................................... 26
Figuur 13: Initiële oplossing X3 voor GRASP ......................................................................................... 26
Figuur 14: GRASP: X3 na lokale optimalisatie ....................................................................................... 27
Figuur 15: De 2-interchange methode .................................................................................................. 28
Figuur 16: Werking cross-exchange ...................................................................................................... 28
Figuur 17: Flow diagram VNS heuristiek met 2 mutatie functies .......................................................... 30
Figuur 18: VNS - initiële oplossing na lokale optimalisatie via 2-interchange mutaties ....................... 31
Figuur 19: VNS - cross-exchange ........................................................................................................... 31
Figuur 20: Illustratie werking ACS ......................................................................................................... 32
Figuur 21: Flow diagram ACS heuristiek ................................................................................................ 33
Figuur 22: Routes na de ACS VRPTW heuristiek .................................................................................... 35
Figuur 23: Bestelhoeveelheid B&C ........................................................................................................ 45
Figuur 24: Voorraadsniveau klanten (B&C) ........................................................................................... 46
Figuur 25: Voorraadniveau bij de klant laat toe bepaalde periodes uit het model te weren ............... 48
Figuur 26: Schema benaderingsmethode IRP van Yu, Chen en Chu. .................................................... 50
Figuur 27: Gebruikte benaderingsmethode .......................................................................................... 50
Figuur 28: 2 punten cross-over van binaire strings ............................................................................... 64
Figuur 29: Kerngedachte IRPTW heuristiek ........................................................................................... 72
Figuur 30: Heuristiek - initiële routes per periode ................................................................................ 74
Figuur 31: Kostenverloop heuristiek (excl. voorraadkosten) ................................................................ 78
Figuur 32: Routes na IRPTW heuristiek ................................................................................................. 78
Figuur 33: Voorraadverloop klant 1 na IRPTW heuristiek ..................................................................... 79
Figuur 34: Kosten volgens de TSSA heuristiek ....................................................................................... 82
Figuur 35: Kosten volgens ANTS heuristiek ........................................................................................... 82
Figuur 36: Kosten volgens GRASP heuristiek ......................................................................................... 82
Figuur 37: Kosten volgens VNS2H heuristiek ........................................................................................ 83
Figuur 38: Routes kleinste bovengrens ................................................................................................. 86
97 Lijst met tabellen
Lijst met tabellen Tabel 1: Voorbeeld - Klantengegevens .................................................................................................... 4
Tabel 2: Voorbeeld - Vraag per periode, beginvoorraad en de maximumvoorraad ............................... 6
Tabel 3: Voorbeeld - Transportkosten/tijd van klant i naar klant j ......................................................... 7
Tabel 4: Voorbeeld - voorraadkosten ...................................................................................................... 7
Tabel 5: Enkele metaheuristieken voor het VRPTW ............................................................................. 13
Tabel 6: Parametertest voor ACS-VRPTW op Solomon instantie C101 ................................................. 35
Tabel 7: Resultaten VRPTW heurstieken ............................................................................................... 36
Tabel 8: Mogelijke routes toegepast op voorbeeld .............................................................................. 49
Tabel 9: Parameterwaarden SSG ........................................................................................................... 57
Tabel 10: Waarden SSG ......................................................................................................................... 59
Tabel 11: Bestelhoeveelheid via hybride methode ............................................................................... 60
Tabel 12: Routes bij oplossing hybride methode .................................................................................. 61
Tabel 13: Kosten na benaderde optimalisatie ....................................................................................... 62
Tabel 14: Resultaat GA - bestelhoeveelheid ......................................................................................... 70
Tabel 15: Depth first search op parameters en functies GA ................................................................. 71
Tabel 16: Initiële bestelhoeveelheid per periode per klant .................................................................. 73
Tabel 17: Routes per Iteratie per periode ............................................................................................. 77
Tabel 18: Bestelhoeveelheid per periode ............................................................................................. 79
Tabel 19: Voorraadniveau klanten ........................................................................................................ 80
Tabel 20: Parametertest routeuit.m ..................................................................................................... 83
Tabel 21: Voorraadniveau klanten ........................................................................................................ 85
Tabel 22: Testinstanties ......................................................................................................................... 88
Tabel 23: Besparingen t.o.v. EOQ .......................................................................................................... 89
98 Bijlagen
Bijlagen
Bijlage A: Standaardinstanties IRPTW B=round(disttab(SOLOMON));
For i=1:N
MaxStock=min(vehCapacity,max(DemandPeriode())*)
BV=min(MaxStock(),round(SOLOMON (I,3)*random(‘uniform’,0.5,3.3)))
HoldingCost()=round(random(‘uniform’,1,10))*0,5
99 Bijlagen
Bijlage B: Branch en Cut model Run configuratie B&C in Masterproef .opl bestand te openen in IBM ILOG OPL IDE. De Input data kan
teruggevonden worden in exampleBC.xlsx
Databestand /*********************************************
* OPL 6.3 Data
* Author: Taftje
* Creation Date: 30-mrt-2011 at 19:43:18
*********************************************/
/*Branch en Cut model*/
/*Input data*/
SheetConnection sheet("exampleBC.xlsx");
/* Oproepen leverancier data*/
BeginStock from SheetRead(sheet,"klantendata!D2:D17");
V from SheetRead(sheet,"klantendata!H2:H17");
h from SheetRead(sheet,"klantendata!J2:J17");
r from SheetRead(sheet,"Dem!B2:K17");
ShippingCost from SheetRead(sheet,"TK!B2:Q17");
Modelbestand /*********************************************
* OPL 6.3 Model
* Author: Taftje
* Creation Date: 30-mrt-2011 at 19:15:21
*********************************************/
/*Branch en Cut model*/
/*gebasseerd op Archetti, Laporte en Speranza 2007*/
/*indexen*/
{int} S={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
{int} S_={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
{int} Periode={1,2,3,4,5,6,7,8,9,10};
{int} Periode_={1,2,3,4,5,6,7,8,9,10,11};
/*input data*/
int C=1200;
int ShippingCost[S_,S_]=...;
float h[S_]=...;
int BeginStock[S_]=...;
float r[S_,Periode]=...;
int V[S_]=...;
/*beslissingsvariabelen*/
dvar int+ X[S,Periode_];
dvar int Y[S,S_,Periode] in 0..2;
dvar boolean Z[S_,Periode];
dvar float B[Periode_];
dvar float I[S,Periode_];
/*doelfunctie*/
minimize /*2.1*/(sum(t in Periode_)h[0]*B[t] + sum(i in S, t in
Periode_)h[i]*I[i,t]+sum(t in Periode,i in S_,j in
S_:j<i)ShippingCost[i,j]*Y[i,j,t]);
/*restricties*/
subject to {
100 Bijlagen
/*2.2*/BeginStock[0]==B[1];
/*2.2*/forall(t in 2..11) B[t]==B[t-1]+r[0,t-1]-sum(i in S)X[i,t-1];
/*2.3*/forall( t in Periode) B[t]>=sum(i in S)X[i,t];
/*2.4*/forall(i in S)I[i,1]==BeginStock[i];
/*2.4*/forall( t in 2..11, i in S) I[i,t]==I[i,t-1]+X[i,t]-r[i,t-1];
/*2.5*/forall( t in Periode_,i in S) I[i,t]>=0;
/*2.6*/forall(i in S,t in Periode)X[i,t]>=V[i]*Z[i,t]-I[i,t];
/* restricties 2.7 en 2.8 niet geimplementeerd
forall(i in S,t in Periode)X[i,t]<=V[i]-I[i,t];
forall(i in S,t in Periode)X[i,t]<=V[i]*Z[i,t];
*/
/*2.9*/forall(t in Periode)sum(i in S)X[i,t]<=C;
/*2.10 a*/forall(t in Periode)sum(i in S)X[i,t]<=C*Z[0,t];
/*2.10 b*/forall(t in Periode,i in S_)sum(j in S_:j<i)Y[i,j,t]+sum(j in
S_:j>i)Y[j,i,t]==2*Z[i,t];
/*2.13*/forall(t in Periode,i in S,j in S:j<i)Y[i,j,t]<=1;
/*ongelijkheden*/
/*2.20*/forall(i in S, t in Periode)Z[i,t]<=Z[0,t];
/*2.21*/forall(i in S, t in Periode)Y[i,0,t]<=2*Z[i,t];
/*2.22*/forall(i in S, t in Periode,j in S)Y[i,j,t]<=Z[i,t];
/*2.16*/forall(i in S,t in Periode,k in 0..t-1)I[i,t-k]>=(sum(j in
0..k)r[i,t-j])*(1-sum(j in 0..k)Z[i,t-j]);
OptieBestand
<?xml version="1.0" encoding="UTF-8"?> <settings version="2"> <category name="cplex"> <setting name="tilim" value="900.0"/> <setting name="cliques" value="3"/> <setting name="covers" value="3"/> <setting name="disjcuts" value="3"/> <setting name="flowcovers" value="2"/> <setting name="fraccuts" value="2"/> <setting name="gubcovers" value="2"/> <setting name="implbd" value="2"/> <setting name="mircuts" value="2"/> <setting name="flowpaths" value="2"/> <setting name="zerohalfcuts" value="2"/> </category> </settings>
Resultaat
Toegepast op de input data exampleBC.xlsx is het resultaat te vinden op de bijlage CD:
Engine log file: …\BIJLAGE_TESTEN\Engine_log_file_BC.txt
Solution file: …\ BIJLAGE_TESTEN\Solution_BC.txt
101 Bijlagen
Statistieken:
102 Bijlagen
Bijlage C: Hybride IRP(TW) model
Submodel 1: vereenvoudigde modellering
Variabelen D en I zijn hier beslissingsvariabelen en variabelen met meer dan twee indexen is mogelijk.
/*********************************************
* OPL 6.3 Model
* Author: Taftje
* Creation Date: 12-mrt-2011 at 10:44:36
*********************************************/
int VehicleCapacity=300;
range KlantenminDepot=1..15;
range Klanten=0..15;
range Periode=1..10;
range Vehicle=1..10;
/*alternatief op tijdsvensters*/
int MO[Klanten,Klanten]=...;
int Demand[KlantenminDepot,Periode]=...;
int HoldingCost[KlantenminDepot, Periode]=...;
int ShippingCost[Klanten,Klanten]=...;
int BeginStock[KlantenminDepot]=...;
int MaxStock[KlantenminDepot]=...;
int FixedCost[Periode]=...;
/*multipliers*/
float multi23[KlantenminDepot,Periode]=...;
float multi28[Vehicle,KlantenminDepot,Periode]=...;
float multi26a[KlantenminDepot,KlantenminDepot,Periode]=...;
float multi27a[Vehicle,KlantenminDepot,Periode]=...;
float multi17[KlantenminDepot,KlantenminDepot,Periode]=...;
/*afhankelijken*/
/*1.2*/dexpr float D[i in KlantenminDepot,t in periode]=sum(m in
Vehicle)P[m,i,t]-sum(j in Klanten:j!=i)Q[i,j,t]+sum(j in
KlantenminDepot:j!=i)Q[j,i,t];
/*1.3*/dexpr float I[i in KlantenminDepot,t in Periode]=BeginStock[i]+sum(G
in 1..t)D[i,G]-Demand[i,G];
/*vastgezet*/
int Y[Vehicle,KlantenminDepot,Periode]=...;
int X[Klanten,Klanten,Periode]=...;
/*beslissingsvariabelen*/
dvar int Q[Klanten,KlantenminDepot,Periode] in 0..VehicleCapacity;
dvar int P[Vehicle,KlantenminDepot,Periode] in 0..VehicleCapacity;
minimize /*5.2.1*/
sum(t in Periode,i in KlantenminDepot)HoldingCost[i,t]*(BeginStock[i]
+ sum(G in 1..t)(D[i,G]-Demand[i,G]))
+ sum(t in Periode,j in KlantenminDepot,i in KlantenminDepot:i!=j)
((ShippingCost[i,j]-(multi17[i,j,t]/VehicleCapacity) + multi26a[i,j,t]*(1-
X[i,j,t]))*Q[i,j,t])
+ sum(t in Periode,i in KlantenminDepot,m in Vehicle)((ShippingCost[0,i]-
multi23[i,t]-(multi28[m,i,t]/VehicleCapacity)+(1-Y[m,i,t]) *
multi27a[m,i,t])*P[m,i,t])
103 Bijlagen
+/*kleine permutatie*/ sum(t in Periode,i in KlantenminDepot,m in
Vehicle)(0.0000000000000001*m*P[m,i,t]);
subject to{
/*4.4*/forall(i in KlantenminDepot,t in Periode)sum(m in
Vehicle)P[m,i,t]+sum(j in Klanten:j!=i)Q[j,i,t]-sum(j in
KlantenminDepot:j!=i)Q[i,j,t]==D[i,t];
/*4.5*/ forall(t in Periode)sum(i in KlantenminDepot)sum(m in
Vehicle)P[m,i,t]==sum(i in KlantenminDepot)D[i,t];
/*4.10*/forall(t in Periode,i in KlantenminDepot,j in
KlantenminDepot:i==j)Q[i,j,t]==0;
/*4.12*/forall(t in Periode,i in KlantenminDepot,j in
KlantenminDepot:j!=i)Q[i,j,t]<=VehicleCapacity;
/*4.14*/forall(t in Periode,i in KlantenminDepot,m in
Vehicle)P[m,i,t]<=VehicleCapacity;
/*5.2.2*/ forall(i in KlantenminDepot,t in 2..10) BeginStock[i]+sum(G in
1..t)D[i,G]-sum(G in 1..(t-1))Demand[i,G]<=MaxStock[i];
/*5.2.2bis*/ forall(i in KlantenminDepot)
BeginStock[i]+D[i,1]<=MaxStock[i];
/*5.2.3*/forall(i in KlantenminDepot,t in Periode)BeginStock[i]+sum(G in
1..t)(D[i,G]-Demand[i,G])>=0;
/*6.2*/ forall(i in Klanten,j in KlantenminDepot,t in Periode:i!=j)
Q[i,j,t]<=MO[i,j]*Q[i,j,t];
}
104 Bijlagen
Submodel 2: vereenvoudigde modellering /*********************************************
* OPL 6.3 Model
* Author: Taftje
* Creation Date: 12-mrt-2011 at 12:01:03
*********************************************/
int SizeFleet=10;
int VehicleCapacity=300;
range KlantenminDepot=1..15;
range Klanten=0..15;
range Periode=1..10;
range Vehicle=1..10;
int Demand[KlantenminDepot,Periode]=...;
int HoldingCost[KlantenminDepot, Periode]=...;
int ShippingCost[Klanten,Klanten]=...;
int BeginStock[KlantenminDepot]=...;
int MaxStock[KlantenminDepot]=...;
int FixedCost[Periode]=...;
/*alternatief op tijdsvensters*/
int MO[Klanten,Klanten]=...;
/*multipliers*/
float multi17[KlantenminDepot,KlantenminDepot,Periode]=...;
float multi23[KlantenminDepot,Periode]=...;
float multi28[Vehicle,KlantenminDepot,Periode]=...;
float multi26a[KlantenminDepot,KlantenminDepot,Periode]=...;
float multi27a[Vehicle,KlantenminDepot,Periode]=...;
/*beslissingsvariabelen*/
dvar int+ X[Klanten,Klanten,Periode]; /*4.9*/
dvar boolean Y[Vehicle,Klanten,Periode]; /*4.9*/
dvar int+ M[Klanten] in 0..SizeFleet;
/*vast gezet*/
float P[Vehicle,KlantenminDepot,Periode]=...;
float Q[Klanten,KlantenminDepot,Periode]=...;
minimize /*5.3.1*/
sum(t in Periode,i in
KlantenminDepot)(ShippingCost[0,i]+FixedCost[t])*X[i,0,t]
+ sum(t in Periode,i in KlantenminDepot,j in
KlantenminDepot:i!=j)(multi17[i,j,t]-multi26a[i,j,t]*Q[i,j,t])*X[i,j,t]
+ sum(t in Periode,i in KlantenminDepot,m in
1..M[i])(multi23[i,t]*VehicleCapacity+multi28[m,i,t]-
multi27a[m,i,t])*Y[m,i,t]
+ /*small permutation*/ sum(t in Periode,i in KlantenminDepot,m in
1..M[i])(0.0000000000000001*m*Y[m,i,t]);
subject to {
/*1.7*/forall(t in Periode)sum(i in KlantenminDepot)X[i,0,t]<=SizeFleet;
/*4.2*/forall(i in KlantenminDepot,t in Periode)sum(j in
Klanten:j!=i)X[i,j,t]==sum(m in 1..M[i])Y[m,i,t] + sum(j in
KlantenminDepot:j!=i)X[j,i,t];
105 Bijlagen
/*4.3*/forall(t in Periode)(sum(i in KlantenminDepot)X[i,0,t]==sum(i in
KlantenminDepot,m in 1..M[i])Y[m,i,t]);
/*6.1*/forall(t in Periode,i in KlantenminDepot,j in
KlantenminDepot:i!=j)X[i,j,t]<=MO[i,j];
forall(t in Periode,i in Klanten,j in Klanten:i==j)X[i,j,t]==0;
106 Bijlagen
Model P’: vereenvoudigde modellering /*********************************************
* OPL 6.3 Model
* Author: Taftje
* Creation Date: 21-mrt-2011 at 00:37:19
*********************************************/
range KlantenminDepot=1..15;
range Klanten=0..15;
range Periode=1..10;
range Vehicle=1..10;
int VehicleCapacity=300;
int Demand[KlantenminDepot,Periode]=...;
int HoldingCost[KlantenminDepot, Periode]=...;
int ShippingCost[Klanten,Klanten]=...;
int BeginStock[KlantenminDepot]=...;
int MaxStock[KlantenminDepot]=...;
int FixedCost[Periode]=...;
/*alternatief op tijdsvensters*/
int MO[Klanten,Klanten]=...;
/*afhankelijken*/
/*1.2*/dexpr float D[i in KlantenminDepot,t in periode]=sum(m in
Vehicle)P[m,i,t]-sum(j in Klanten:j!=i)Q[i,j,t]+sum(j in
KlantenminDepot:j!=i)Q[j,i,t];
/*1.3*/dexpr float I[i in KlantenminDepot,t in Periode]=BeginStock[i]+sum(G
in 1..t)D[i,G]-Demand[i,G];
/*beslissingvariabelen vastgezet*/
float P[Vehicle,KlantenminDepot,Periode]=...;
float Q[Klanten,KlantenminDepot,Periode]=...;
/*multipliers*/
int multi17[KlantenminDepot,KlantenminDepot,Periode];
int multi23[KlantenminDepot,Periode];
int multi28[Vehicle,KlantenminDepot,Periode];
int multi26a[KlantenminDepot,KlantenminDepot,Periode];
int multi27a[Vehicle,KlantenminDepot,Periode];
/*beslissingsvariabelen*/
dvar boolean Y[Vehicle,KlantenminDepot,Periode];
dvar int+ X[Klanten,Klanten,Periode];
/*gradients*/
dexpr float g1[i in KlantenminDepot,j in KlantenminDepot,t in Periode] =
(X[i,j,t]-((Q[i,j,t]-1)/VehicleCapacity)-1);
dexpr float g2[i in KlantenminDepot,t in Periode] =
((VehicleCapacity*(sum(m in Vehicle)Y[m,i,t])));
dexpr float g3[m in Vehicle,i in KlantenminDepot,t in Periode] = (Y[m,i,t]-
((P[m,i,t]-1)/VehicleCapacity)-1);
dexpr float g4[i in KlantenminDepot,j in KlantenminDepot,t in Periode] =
(Q[i,j,t]*(1-X[i,j,t]));
dexpr float g5[m in Vehicle,i in KlantenminDepot,t in Periode] =
(P[m,i,t]*(1-Y[m,i,t]));
107 Bijlagen
minimize
sum(t in Periode,i in KlantenminDepot) HoldingCost[i,t]*I[i,t]
+sum(t in Periode, j in KlantenminDepot,i in
KlantenminDepot:j!=i)ShippingCost[i,j]*Q[i,j,t]
+sum(t in Periode,i in KlantenminDepot) ShippingCost[0,i]*sum(m in
Vehicle)P[m,i,t]
+sum(t in Periode,i in KlantenminDepot)(FixedCost[t]*(sum(m in
Vehicle)Y[m,i,t]))
+sum(t in Periode,i in KlantenminDepot)ShippingCost[i,0]*X[i,0,t]
+sum(i in KlantenminDepot,j in KlantenminDepot,t in Periode)
(multi17[i,j,t]*g1[i,j,t])
+sum(i in KlantenminDepot,t in Periode)(multi23[i,t]*g2[i,t])
+sum(m in Vehicle,i in KlantenminDepot,t in
Periode)(multi28[m,i,t]*g3[m,i,t])
+sum(i in KlantenminDepot,j in KlantenminDepot,t in
Periode)(multi26a[i,j,t]*g4[i,j,t])
+sum(m in Vehicle,i in KlantenminDepot,t in
Periode)( multi27a[m,i,t]*g5[m,i,t]);
subject to {
/*1.7*/forall(t in Periode)sum(i in KlantenminDepot)X[i,0,t]<=SizeFleet;
/*4.2*/forall(i in KlantenminDepot,t in Periode)sum(j in
Klanten:j!=i)X[i,j,t]==sum(m in VehicleY[m,i,t] + sum(j in
KlantenminDepot:j!=i)X[j,i,t];
/*4.3*/forall(t in Periode)(sum(i in KlantenminDepot)X[i,0,t]==sum(i in
KlantenminDepot,m in Vehicle)Y[m,i,t]);
/*4.4*/forall(i in KlantenminDepot,t in Periode)sum(m in
Vehicle)P[m,i,t]+sum(j in Klanten:j!=i)Q[j,i,t]-sum(j in
KlantenminDepot:j!=i)Q[i,j,t]==D[i,t];
/*4.5*/ forall(t in Periode)sum(i in KlantenminDepot)sum(m in Vehicle)
P[m,i,t]==sum(i in KlantenminDepot)D[i,t];
/*4.9*/forall(t in Periode,i in KlantenminDepot,j in KlantenminDepot:i==j)
X[i,j,t]==0;
/*4.10*/forall(t in Periode,i in KlantenminDepot,j in
KlantenminDepot:i==j)Q[i,j,t]==0;
/*4.12*/forall(t in Periode,i in KlantenminDepot,j in
KlantenminDepot:j!=i)Q[i,j,t]<=VehicleCapacity;
/*4.14*/forall(i in KlantenminDepot, t in Periode,m in
Vehicle)P[m,i,t]<=VehicleCapacity;
/*6.1*/forall(t in Periode,i in KlantenminDepot,j in
KlantenminDepot:i!=j)X[i,j,t]<=MO[i,j];
forall(t in Periode,i in Klanten,j in Klanten:i==j)X[i,j,t]==0;
/*6.2*/ forall(i in Klanten,j in KlantenminDepot,t in Periode:i!=j)
Q[i,j,t]<=MO[i,j]*Q[i,j,t];
}
108 Bijlagen
Bijlage D: Voorraadmodel /*********************************************
* OPL 6.3 Model
* Author: Taftje
* Creation Date: 17-apr-2011 at 12:18:01
*********************************************/
{int} Klanten={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
{int} Periode={1,2,3,4,5,6,7,8,9,10};
int BS[Klanten]=...;
int MS[Klanten]=...;
int DEMAND[Klanten,Periode]=...;
float HOLDING[Klanten,Periode]=...;
dvar int+ D_P1[Klanten];
dvar int+ D_P2[Klanten];
dvar int+ D_P3[Klanten];
dvar int+ D_P4[Klanten];
dvar int+ D_P5[Klanten];
dvar int+ D_P6[Klanten];
dvar int+ D_P7[Klanten];
dvar int+ D_P8[Klanten];
dvar int+ D_P9[Klanten];
dvar int+ D_P10[Klanten];
dexpr int I_P1_T[i in Klanten]=BS[i]-DEMAND[i,1];
dexpr int I_P1[i in Klanten]=I_P1_T[i]+D_P1[i];
dexpr int I_P2[i in Klanten]=I_P1[i]-DEMAND[i,2]+D_P2[i];
dexpr int I_P3[i in Klanten]=I_P2[i]-DEMAND[i,3]+D_P3[i];
dexpr int I_P4[i in Klanten]=I_P3[i]-DEMAND[i,4]+D_P4[i];
dexpr int I_P5[i in Klanten]=I_P4[i]-DEMAND[i,5]+D_P5[i];
dexpr int I_P6[i in Klanten]=I_P5[i]-DEMAND[i,6]+D_P6[i];
dexpr int I_P7[i in Klanten]=I_P6[i]-DEMAND[i,7]+D_P7[i];
dexpr int I_P8[i in Klanten]=I_P7[i]-DEMAND[i,8]+D_P8[i];
dexpr int I_P9[i in Klanten]=I_P8[i]-DEMAND[i,9]+D_P9[i];
dexpr int I_P10[i in Klanten]=I_P9[i]-DEMAND[i,10]+D_P10[i];
minimize
sum(i in Klanten)HOLDING[i,1]*I_P1[i]
+sum(i in Klanten)HOLDING[i,2]*I_P2[i]
+sum(i in Klanten)HOLDING[i,3]*I_P3[i]
+sum(i in Klanten)HOLDING[i,4]*I_P4[i]
+sum(i in Klanten)HOLDING[i,5]*I_P5[i]
+sum(i in Klanten)HOLDING[i,6]*I_P6[i]
+sum(i in Klanten)HOLDING[i,7]*I_P7[i]
+sum(i in Klanten)HOLDING[i,8]*I_P8[i]
+sum(i in Klanten)HOLDING[i,9]*I_P9[i]
+sum(i in Klanten)HOLDING[i,10]*I_P10[i];
subject to
{
forall (i in Klanten)-I_P1[i]<=0;
forall (i in Klanten)-I_P2[i]<=0;
forall (i in Klanten)-I_P3[i]<=0;
forall (i in Klanten)-I_P4[i]<=0;
forall (i in Klanten)-I_P5[i]<=0;
forall (i in Klanten)-I_P6[i]<=0;
109 Bijlagen
forall (i in Klanten)-I_P7[i]<=0;
forall (i in Klanten)-I_P8[i]<=0;
forall (i in Klanten)-I_P9[i]<=0;
forall (i in Klanten)-I_P10[i]<=0;
forall(i in Klanten)D_P1[i]+I_P1[i]<=MS[i];
forall(i in Klanten)D_P2[i]+I_P2[i]<=MS[i];
forall(i in Klanten)D_P3[i]+I_P3[i]<=MS[i];
forall(i in Klanten)D_P4[i]+I_P4[i]<=MS[i];
forall(i in Klanten)D_P5[i]+I_P5[i]<=MS[i];
forall(i in Klanten)D_P6[i]+I_P6[i]<=MS[i];
forall(i in Klanten)D_P7[i]+I_P7[i]<=MS[i];
forall(i in Klanten)D_P8[i]+I_P8[i]<=MS[i];
forall(i in Klanten)D_P9[i]+I_P9[i]<=MS[i];
forall(i in Klanten)D_P10[i]+I_P10[i]<=MS[i];
forall(i in Klanten)-D_P1[i]<=0;
forall(i in Klanten)-D_P2[i]<=0;
forall(i in Klanten)-D_P3[i]<=0;
forall(i in Klanten)-D_P4[i]<=0;
forall(i in Klanten)-D_P5[i]<=0;
forall(i in Klanten)-D_P6[i]<=0;
forall(i in Klanten)-D_P7[i]<=0;
forall(i in Klanten)-D_P8[i]<=0;
forall(i in Klanten)-D_P9[i]<=0;
forall(i in Klanten)-D_P10[i]<=0;
}
110 Bijlagen
Bijlage E: MATLAB GA toolbox function description
Scaling function
Scaling function specifies the function that performs the scaling. You can choose from the following
functions:
Rank scales the raw scores based on the rank of each individual, rather than its score. The rank of
an individual is its position in the sorted scores. The rank of the fittest individual is 1, the next
fittest is 2, and so on. Rank fitness scaling removes the effect of the spread of the raw scores.
Proportional makes the expectation proportional to the raw fitness score. This strategy has
weaknesses when raw scores are not in a "good" range.
Top scales the individuals with the highest fitness values equally. If you select this option, you
can specify Quantity, the number of fittest individuals that produce offspring. Quantity must be
an integer between 1 and Population Size or a fraction between 0 and 1 specifying a fraction of
the population size. Each of these individuals has an equal probability of reproducing. The rest
have probability 0 of reproducing. The expectation has the form [ 0 1/n 1/n 0 0 1/n 0 0 1/n ...].
Shift linear scales the raw scores so that the expectation of the fittest individual is equal to a
constant, which you can specify as Maximum survival rate, multiplied by the average score.
Selection function
The selection function chooses parents for the next generation based on their scaled values from the
fitness scaling function.
You can specify the function that performs the selection in the Selection function field. You can
choose from the following functions:
Stochastic uniform lays out a line in which each parent corresponds to a section of the line of
length proportional to its expectation. The algorithm moves along the line in steps of equal
size, one step for each parent. At each step, the algorithm allocates a parent from the section
it lands on. The first step is a uniform random number less than the step size.
Remainder assigns parents deterministically from the integer part of each individual's scaled
value and then uses roulette selection on the remaining fractional part.
Uniform select parents at random from a uniform distribution using the expectations and
number of parents. This results in an undirected search. Uniform selection is not a useful
search strategy, but you can use it to test the genetic algorithm.
Shift linear scales the raw scores so that the expectation of the fittest individual is equal to a
constant, which you can specify as Maximum survival rate, multiplied by the average score.
Roulette simulates a roulette wheel with the area of each segment proportional to its
expectation. The algorithm then uses a random number to select one of the sections with a
probability equal to its area.
111 Bijlagen
Tournament selects each parent by choosing individuals at random, the number of which
you can specify by Tournament size, and then choosing the best individual out of that set to
be a parent.
Reproduction
Reproduction options determine how the genetic algorithm creates children at each new generation.
Elite count specifies the number of individuals that are guaranteed to survive to the next
generation. Set Elite count to be a positive integer less than or equal to Population size.
Crossover fraction specifies the fraction of the next generation that crossover produces.
Mutation produces the remaining individuals in the next generation. Set Crossover fraction
to be a fraction between 0 and 1, either by entering the fraction in the text box, or by moving
the slider.
Mutation function
Mutation functions make small random changes in the individuals in the population, which provide
genetic diversity and enable the genetic algorithm to search a broader space.
Specify the function that performs the mutation in the Mutation function field. You can choose from
the following functions:
Use constraint dependent default chooses:
Gaussian if there are no constraints
Adaptive feasible otherwise
Gaussian adds a random number to each vector entry of an individual. This random number
is taken from a Gaussian distribution centered on zero. The standard deviation of this
distribution can be controlled with two parameters. The Scale parameter determines the
standard deviation at the first generation. The Shrink parameter controls how standard
deviation shrinks as generations go by. If the Shrink parameter is 0, the standard deviation is
constant. If the Shrink parameter is 1, the standard deviation shrinks to 0 linearly as the last
generation is reached.
Uniform is a two-step process. First, the algorithm selects a fraction of the vector entries of
an individual for mutation, where each entry has the same probability as the mutation rate of
being mutated. In the second step, the algorithm replaces each selected entry by a random
number selected uniformly from the range for that entry.
Adaptive feasible randomly generates directions that are adaptive with respect to the last
successful or unsuccessful generation. A step length is chosen along each direction so that
linear constraints and bounds are satisfied.
112 Bijlagen
Crossover combines two individuals, or parents, to form a new individual, or child, for the next
generation.
Specify the function that performs the crossover in the Crossover function field. You can choose from
the following functions:
Scattered creates a random binary vector. It then selects the genes where the vector is a 1
from the first parent, and the genes where the vector is a 0 from the second parent, and
combines the genes to form the child. For example:
p1 = [a b c d e f g h] p2 = [1 2 3 4 5 6 7 8] random crossover vector = [1 1 0 0 1 0 0 0] child = [a b 3 4 e 6 7 8]
Single point chooses a random integer n between 1 and Number of variables, and selects the
vector entries numbered less than or equal to n from the first parent, selects genes
numbered greater than n from the second parent, and concatenates these entries to form
the child. For example:
p1 = [a b c d e f g h]
p2 = [1 2 3 4 5 6 7 8]
random crossover point = 3
child = [a b c 4 5 6 7 8]
Two point selects two random integers m and n between 1 and Number of variables. The
algorithm selects genes numbered less than or equal to m from the first parent, selects genes
numbered from m+1 to n from the second parent, and selects genes numbered greater than
n from the first parent. The algorithm then concatenates these genes to form a single gene.
For example:
p1 = [a b c d e f g h]
p2 = [1 2 3 4 5 6 7 8]
random crossover points = 3,6
child = [a b c 4 5 6 g h]
Intermediate creates children by a random weighted average of the parents. Intermediate
crossover is controlled by a single parameter Ratio:
child1 = parent1+...
rand*Ratio*(parent2 - parent1)
If Ratio is in the range [0,1], the children produced are within the hypercube defined by the
parents locations at opposite vertices. If Ratio is in a larger range, say 1.1, children can be
generated outside the hypercube. Ratio can be a scalar or a vector of length Number of
113 Bijlagen
variables. If Ratio is a scalar, all the children lie on the line between the parents. If Ratio is a
vector, children can be any point within the hypercube.
Heuristic creates children that randomly lie on the line containing the two parents, a small distance
away from the parent with the better fitness value, in the direction away from the parent with the
worse fitness value.
Arithmetic creates children that are a random arithmetic mean of two parents, uniformly on
the line between the parents.
Migration
Migration is the movement of individuals between subpopulations, which the algorithm creates if
you set Population size to be a vector of length greater than 1. Every so often, the best individuals
from one subpopulation replace the worst individuals in another subpopulation. You can control how
migration occurs by the following three parameters.
Direction specifies the direction in which migration can take place:
If you set Direction to Forward, migration takes place toward the last subpopulation. That is
the nth subpopulation migrates into the (n+1)th subpopulation.
If you set Direction to Both, the nth subpopulation migrates into both the (n–1)th and the
(n+1)th subpopulation.
Migration wraps at the ends of the subpopulations. That is, the last subpopulation migrates into
the first, and the first may migrate into the last. To prevent wrapping, specify a subpopulation of
size 0.
Fraction controls how many individuals move between subpopulations. Fraction is the fraction of
the smaller of the two subpopulations that moves. If individuals migrate from a subpopulation of
50 individuals into a population of 100 individuals and Fraction is 0.1, 5 individuals (0.1 * 50)
migrate. Individuals that migrate from one subpopulation to another are copied; they are not
removed from the source subpopulation.
Interval controls how many generations pass between migrations. If you set Interval to 20, for
example, migration between subpopulations takes place every 20 generations.
Plot functions
Plot functions enable you to plot various aspects of the genetic algorithm as it is executing. Each one
draws in a separate axis on the display window. Use the Stop button on the window to interrupt a
running process.
Plot interval specifies the number of generations between successive updates of the plot.
Best fitness plots the best function value in each generation versus iteration number.
Best individual plots the vector entries of the individual with the best fitness function value
in each generation.
114 Bijlagen
Distance plots the average distance between individuals at each generation.
Expectation plots the expected number of children versus the raw scores at each generation.
Genealogy plots the genealogy of individuals. Lines from one generation to the next are
color-coded as follows:
Red lines indicate mutation children.
Blue lines indicate crossover children.
Black lines indicate elite individuals.
Range plots the minimum, maximum, and mean fitness function values in each generation.
Score diversity plots a histogram of the scores at each generation.
Scores plots the scores of the individuals at each generation.
Selection plots a histogram of the parents. This shows you which parents are contributing to
each generation.
Stopping plots stopping criteria levels.
Max constraint plots the maximum nonlinear constraint violation.
115 Bijlagen
Bijlage F: routeuit.m function [RouteErUit,RouteUit]=routeuit(routesperperiode,t,OQ,capacity)
%sorteren op basis van aantal klanten en overblijvende capaciteit. [q,s]=size(routesperperiode(:,:,t)); for v=1:q for b=1:s routes(v,b)=routesperperiode(v,b,t); end end
[n,m]=size(routes);
%aantal klanten berekenen per route for i=1:n route=routes(i,:); route(m+1)=0; u=0; capaciteit(i)=0; for j=1:m if route(j)>0 u=u+1; capaciteit(i)=capaciteit(i)+OQ(route(j),t); aantalklanten(i)=u;
end end end
%resterende capaciteit
for i=1:n if routes(i,1)==0 opportuniteiten=0; continue end opportuniteiten(i)=(capacity-capaciteit(i))*50-aantalklanten(i)*1000; end
[value,index]=sort(opportuniteiten,'descend'); RouteUit=index(1); RouteErUit=routes(index(1),:);
116 Bijlagen
Bijlage G: kosten.m function kost=kosten(routesPerPeriode, disttabel,FC,vehicles,OQ)
[n,m,p]=size(routesPerPeriode); %Fixed cost per voertuig of route bedoeling is om minimum aantal voertuigen %te gebruiken overheen de periodes
%bij voorkeur wil je het maximum aantal voertuigen beperken kostmaximumvoertuigen=max(vehicles)*FC*10;
%Je wilt het aantal routes overheen de periodes beperken kostaantalroutes=sum(vehicles)*FC;
%transport kosten kosttransport=0; for t=1:p %per periode for i=1:n %aantal routes
for j=1:m %aantal nodes per route routes(n,m)=routesPerPeriode(n,m,t); end route=normalize(routes(i,:)); [~, col]=size(route); if (col>0) if (col<2)||(not((route(1)==0)&&(route(2)==1))) kosttransport=kosttransport+disttabel(1,route(1)+1); for j=1:col-1
kosttransport=kosttransport+disttabel(route(j)+1,route(j+1)+1); end kosttransport=kosttransport+disttabel(route(col)+1,1); end end
end end
%kosten zijn apart opgemaakt om zo het gewicht dat aan elke kost is gezet %te kunnen wijzigen kost=10*kosttransport+kostaantalroutes+kostmaximumvoertuigen; end
117 Bijlagen
Bijlage H: Uitleg bij IRPTW.m INPUT:
maximale capaciteit van de voertuigen
Vaste kosten
Aantal periodes
Tijdsvenster en servicetijd gegevens van de klanten
Obj=Doel vector bekomen via heuristiek model (zie Bijlage D)
X=oplossingsverzameling10
Kost=naartabu(round(X),INPUT)
FUNCTIE:
De model.m functie kan worden gebruikt om de data verkregen uit het mps bestand bruikbaar te
maken voor de modellering van onder andere de GA.
10 De kolomnamen voor de variabelen moeten dezelfde zijn als deze die ingelezen worden in het mps
bestand. Dit bestand wordt verkregen door in de GA.opl project de optie (heur.ops) in de
runconfiguratie “heur” te wijzigen zodat de mps exportmogelijkheid aangevinkt is.
De kolomnamen zijn terug te vinden in de MATLAB Workspace binnen de “map” die de mps
gegevens bevat.
Wanneer bijvoorbeeld het mps-bestand ingelezen wordt onder de naam “probleem” (in command
window MATLAB “probleem=readmps(‘heur.mps’)”) dan staan de kolomnamen in deze datastructuur
onder “probleem.Columnnames”.
118 Bijlagen
Bijlage I: Resultaten IRPTW heuristieken op voorbeeld
Kosten berekend via de TSSA heuristiek
iteratie TSSA GRASP VNS3H VNS2H ANTS
1 90480 90480 137920 90480 90480
2 91466 91466 139801 91466 90594
3 91566 91566 151101 91566 90707
4 91831 91831 151744 91831 91757
5 91947 91722 162227 93178 91858
6 90856 93145 167474 91852 93391
7 102325 93261 166464 92346 93441
8 90785 93052 165373 92954 96440
9 91373 92029 - 91952 96805
10 91800 92248 - 103030 97175
11 92175 91053 - 91842 97844
12 91251 92465 - 91991 97858
13 91415 92600 - 92440 96599
14 91531 91181 - 91455 96398
15 90344 92548 - 105695 108765
16 92162 91340 - 93074 109240
17 93981 90118 - 95165 110507
18 93666 90729 - 95138 111526
19 94258 89834 - 95460 111556
20 93122 91551 - 95745 111822
21 83016 94435 - 95874 -
22 104087 93362 - - -
23 105905 108158 - - -
24 107724 97278 - - -
25 107409 97930 - - -
26 104413 98582 - - -
27 105374 98823 - - -
119 Bijlagen
Kosten berekend via de ANTS heuristiek
iteratie TSSA GRASP VNS3H VNS2H ANTS
1 100528 100528 147085 100528 100567
2 101851 101851 140738 101890 101664
3 102990 102990 152038 102951 100802
4 102267 103267 153900 102306 100961
5 103383 102335 175383 102372 104262
6 104499 101534 168883 102428 104456
7 106727 102650 169165 116063 103558
8 104552 102426 181367 115671 103942
9 105140 103705 - 105279 104306
10 107540 102936 - 104129 104670
11 106940 102923 - 92997 105382
12 127329 92058 - 105208 106399
13 127917 103193 - 106681 106814
14 128033 103047 - 106933 107874
15 127148 105137 - 108572 129974
16 129967 104227 - 107552 129626
17 132785 115497 - 95350 131924
18 129855 107105 - 108370 122292
19 129475 108533 - 108674 121319
20 130580 108960 - 109961 121513
21 131830 109167 - 118122 -
22 128102 130407 - -
23 130921 109291 - -
24 133739 109943 - -
25 130809 120595 - -
26 128269 111247 - -
27 130519 111551 - -
120 Bijlagen
Kosten berekend via de GRASP heuristiek
iteratie TSSA GRASP VNS3H VNS2H ANTS
1 86887 86564 126654 97528 97528
2 86987 87887 121442 87887 85705
3 87987 87987 129889 87987 85763
4 87267 88267 131545 87267 87961
5 87383 86335 166879 86372 87222
6 88499 86534 167161 86428 87417
7 86688 87650 166404 87063 89558
8 85552 88462 96528 86671 91942
9 88140 87705 - 87279 92306
10 87540 87936 - 88129 92670
11 89976 86923 - 86957 92382
12 89329 87058 - 87208 92399
13 88917 87193 - 87681 92815
14 89033 88047 - 87933 92915
15 89148 88137 - 90575 106010
16 90967 86227 - 90552 105662
17 91785 86497 - 91350 104965
18 91855 87105 - 91370 107328
19 91475 87533 - 91674 107360
20 93580 77133 - 90961 108549
21 80946 89167 - 92122 -
22 91102 88407 - - -
23 92921 92291 - - -
24 94739 91943 - - -
25 94809 93631 - - -
26 91269 94247 - - -
27 93519 93551 - - -
121 Bijlagen
Kosten berekend via de VNS 3H heuristiek
iteratie TSSA GRASP VNS3H VNS2H ANTS
1 90231 90231 132020 86564 90231
2 91217 91217 126044 87887 89013
3 91317 91317 134806 87987 89121
4 90698 91585 136490 87267 90170
5 92616 91677 157118 86372 90297
6 95838 93119 154887 85428 91829
7 96938 93235 153650 86063 91893
8 94949 93018 164709 97671 93551
9 93268 91995 - 87279 94174
10 97745 93561 - 88166 94531
11 95973 92368 - 86957 95186
12 129712 93780 - 87208 95285
13 116417 93915 - 87681 95276
14 114897 92474 - 76970 96406
15 113489 93842 - 90575 108790
16 115511 92634 - 88552 109467
17 105093 91410 - 90350 110440
18 111564 92018 - 90370 111502
19 108713 91129 - 90674 111802
20 111269 92846 - 90961 112075
21 114523 93713 - 91159 -
22 92993 94666 - -
23 117312 97930 - -
24 119920 98582 - -
25 107639 99234 - -
26 115170 99886 - -
27 118761 101502 - -
122 Bijlagen
Kosten berekend via de VNS 2H heuristiek
iteratie TSSA GRASP VNS3H VNS2H ANTS
1 90462,76 90462,76 137920,3 90462,76 90462,76
2 91448,84 91448,84 139801,1 91448,84 90576,19
3 91548,84 91548,84 151101,1 91548,84 90689,45
4 90508,71 90508,71 151771,3 90508,71 91728,86
5 91930,08 90399,26 162227,5 89323,39 91840,74
6 90838,52 91840,13 167474,1 87997,39 93373,13
7 89702,14 91955,63 166464,3 88490,8 93423,94
8 89494,49 91748,17 165373,1 100447,5 95105,13
9 90082,28 92022,73 - 89355,95 95469,59
10 90521,02 92249,73 - 90446,97 95839,66
11 92174,71 91053,82 - 89259 96508,65
12 91250,88 92465,24 - 89407,7 96646,76
13 91415,03 92600,24 - 89857,34 96578,47
14 90252,9 91181,82 - 78871,73 96380,84
15 90343,91 92548,24 - 93112,3 108747,2
16 92143,92 91340,08 - 90490,73 109222,5
17 93980,91 90117,72 - 92581,97 110507,5
18 93592,82 90725,72 - 92555,03 111525,8
19 92895,24 89833,71 - 92857,07 111556,5
20 93048,98 91550,7 - 93154 111822,3
21 83015,69 94435,26 - 93271,45 -
22 92542,99 93361,94 - - -
23 94347,27 96625,96 - - -
24 96179,99 97277,96 - - -
25 95791,9 97929,96 - - -
26 92795,78 98581,96 - - -
27 93830,58 100197,9 - - -
123 Bijlagen
Bijlage J: Instructie invoeren heuristieken Korte instructies uitvoeren IRPTW (TSSA) Heuristiek.
Openen data:
Ofwel de data importeren door “15klanten.mat” te importeren. Dit zijn de basisdata
waar de tekst mee uitgewerkt is. Het is uiteraard mogelijk om zelf deze data op te stellen.
De input leveringsperiode staat op nul omdat dit voorlopig buiten beschouwing gelaten
wordt.
De functie IRPTABU heeft dan volgende input nodig. (Dit moet eventueel aangepast
worden in de functie IRPTABU)
L1: …=IRPTABU(Data,p,capaciteit,n,BV,leveringsperiode,DemandPeriode,B,stream)
L21 &28 hier moet de “%”toegevoegd worden (of laten staan).
Ofwel zelf data genereren. Dit kan binnen de functie IRPTABU. De input van de functie is
dan beperkt tot p,capaciteit en Data. (Dit moet eventueel aangepast worden in de functie
IRPTABU)
L1: …=IRPTABU(Data,p) L21 &28 hier moet de “%” verwijdert worden.
p is het aantal periodes
Data zijn het aantal klanten met de bijhorende gegevens. Dit moet de structuur
hebben van een Solomon waarde. Dit moet dus een N x 6 matrix zijn. [N,1]: X-
coord.;[N,2]:Y-coord.;[N,3]:vraagwaarde (hierop is de vraag per periode
gebaseerd);[N,4]:begintijdsvenster in minuten;[N,5]: eindtijdsvenster in minuten;
[N,6]:servicetijd in minuten
capaciteit
Het programma wordt nu opgestart door IRPTABU(…-input-…) op te roepen.(Volgorde is hier
uiteraard van belang.)
De werking van het programma kan best gevolgd worden door het zetten van breakpoint of de
“step into” functie in de debug mode.
124 Bijlagen
Er zijn twee functies die de bestelhoeveelheid berekenen. Binnen deze functie kan men, indien
gewenst, het voorraadverloop beïnvloeden door de bestelde hoeveelheid te wijzigen. Deze staat
oorspronkelijk op DemandPeriode x 3 – de voorraad. Indien gewenst, kan dit ook maal 4,5,6,7,…
bepaald worden. Minder dan 3 is zeker niet aan te raden omdat het niet de bedoeling mag zijn dat
klanten zo snel na elkaar te leveren. (eventueel zou de paramater leveringsperiode hier kunnen
gebruikt worden. Per klant kan men dan een waarde geven voor een gewenste leverings ritme. Hoe
groter deze waarde, hoe meer de klant wil gebruik maken van voorraad. Stel leveringsperiode van 7,
dan zou een klant gemiddeld om de 7 periodes geleverd worden. Hier moet dan wel rekening mee
gehouden worden bij het bepalen van de maximale voorraad. Dit kan, maar is nog niet
geïmplementeerd vanwege illustratieve redenen. Bij het praktisch voorbeeld wordt het misschien
wel mogelijk om deze werkwijze te gebruiken.