VRP2013 - Comp Aspects VRP
-
Upload
victor-pillac -
Category
Documents
-
view
216 -
download
1
Transcript of VRP2013 - Comp Aspects VRP
![Page 1: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/1.jpg)
Computational Aspects Of Vehicle Routing
Victor PillacMay 20
VRP 2013, Angers, France
1
![Page 2: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/2.jpg)
Agenda
2
• Introduction• What is complexity? Why is it important?
• Data structures• How to represent a solution efficiently?
• Algorithmic tricks• What are the main bottlenecks and how to avoid them?
• Parallelization• How do parallel computing work? Why, when, and how to
parallelize?• Software engineering
• How to design flexible and reusable code?• Resources
• How to avoid reinventing the wheel?
![Page 3: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/3.jpg)
INTRODUCTION
3
![Page 4: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/4.jpg)
About Me
• Finished my Ph. D. in 2012 at the Ecole des Mines de Nantes (France) and Universidad de Los Andes (Colombia)• Dynamic vehicle routing: solution methods and computational tools
• Since Oct. 2012, researcher at NICTA (Melbourne, Australia)
• Disaster management team• NICTA in a few numbers:
• 700 staff, 260 PhDs• 7 research groups, 4 business teams
• 550+ publications in 2012
4
![Page 5: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/5.jpg)
Assumptions• General knowledge on vehicle routing• General knowledge of common heuristics
• Local search• Variable Neighborhood Search (VNS)
• General knowledge of object-oriented programming• Examples are in Java
5
![Page 6: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/6.jpg)
Time Complexity
6
• Measure the worst case number of operations• Expressed as a function of the size of the problem n
![Page 7: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/7.jpg)
Time Complexity
6
• Measure the worst case number of operations• Expressed as a function of the size of the problem n
For i = 1 to na = 1 + ib = 2 * ac = a * b + 2
![Page 8: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/8.jpg)
Time Complexity
6
• Measure the worst case number of operations• Expressed as a function of the size of the problem n
For i = 1 to na = 1 + ib = 2 * ac = a * b + 2
Performs n*(1+1+2) = 4n operationsComplexity is O(n)
![Page 9: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/9.jpg)
Time Complexity
6
• Measure the worst case number of operations• Expressed as a function of the size of the problem n
For i = 1 to na = 1 + ib = 2 * ac = a * b + 2
Performs n*(1+1+2) = 4n operationsComplexity is O(n)
For S ⊆ {1..n}a = 1 + |S|
![Page 10: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/10.jpg)
Time Complexity
6
• Measure the worst case number of operations• Expressed as a function of the size of the problem n
For i = 1 to na = 1 + ib = 2 * ac = a * b + 2
Performs n*(1+1+2) = 4n operationsComplexity is O(n)
For S ⊆ {1..n}a = 1 + |S|
Performs 2n operationsComplexity is O(2n)
![Page 11: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/11.jpg)
Space Complexity
7
• Measure the worst case memory usage• Expressed in as a function of the size of the problem n
![Page 12: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/12.jpg)
Space Complexity
7
• Measure the worst case memory usage• Expressed in as a function of the size of the problem n
For i = 1 to na = 1 + ib = 2 * ac = a * b + 2
![Page 13: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/13.jpg)
Space Complexity
7
• Measure the worst case memory usage• Expressed in as a function of the size of the problem n
For i = 1 to na = 1 + ib = 2 * ac = a * b + 2
Stores at most 4 integers simultaneouslyComplexity is O(1)
![Page 14: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/14.jpg)
Space Complexity
7
• Measure the worst case memory usage• Expressed in as a function of the size of the problem n
For i = 1 to na = 1 + ib = 2 * ac = a * b + 2
Stores at most 4 integers simultaneouslyComplexity is O(1)
For S ⊆ {1..n}a = 1 + |S|
![Page 15: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/15.jpg)
Space Complexity
7
• Measure the worst case memory usage• Expressed in as a function of the size of the problem n
For i = 1 to na = 1 + ib = 2 * ac = a * b + 2
Stores at most 4 integers simultaneouslyComplexity is O(1)
For S ⊆ {1..n}a = 1 + |S|
Stores at most n+1 integers simultaneouslyComplexity is O(n)
![Page 16: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/16.jpg)
Complexity In Practice
8
10 100 1000 10,000 100,000 1000,000
n 0.1 ns 1 ns 10 ns 100 ns 1 µs 10 µs
n.log(n) 0.1 ns 2 ns 30 ns 400 ns 5 µs 60 µs
n2 1 ns 100 ns 10 µs 1 ms 100 ms 10 s
n3 1 ns 10 µs 10 ms 1 s 2.7 h 115 d
en 22 µs 8.5 1024 years - - - -
Computational time for a single floating point operation on a recent desktop processor
![Page 17: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/17.jpg)
Complexity In Practice
9
10 100 1000 10,000 100,000 1000,000
n 320 b 3.2 kb 32 kb 320 kb 3.2 Mb 32 Mb
n.log(n) 320 b 64 kb 96 kb 1.28 Mb 16 Mb 190 Mb
n2 3.2 kb 320 kb 32 Mb 3.2 Gb 320 Gb 32 Tb
n3 32 kb 32 Mb 32 Gb 32 Tb 32 Pb 32 Eb*
en 700 kb 8 1026 Eb
Memory requirement to store a single floating point precision number
(*The world’s storage capacity is estimated to be 300 Eb - or 300 billion Gb)
![Page 18: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/18.jpg)
Local Search & Terminology
10
Initial solution
S0
![Page 19: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/19.jpg)
Local Search & Terminology
10
Initial solution
NeighborhoodS0
![Page 20: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/20.jpg)
Local Search & Terminology
10
Initial solution
Move
Neighbor
NeighborhoodS0
![Page 21: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/21.jpg)
Local Search & Terminology
10
Initial solution
Move
Neighbor
Neighborhood
Current solution
S0
S1
Executed Move
![Page 22: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/22.jpg)
Local Search & Terminology
10
Initial solution
Move
Neighbor
Neighborhood
Current solution
S0
S1
S3
Executed Move
![Page 23: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/23.jpg)
DATA STRUCTURES
11
![Page 24: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/24.jpg)
Representing Routes
12
• Routes are the base of solving vehicle routing problems• It is critical to have efficient data structures to store them• There is no best data structure
• Performance depends on how it is used• Tradeoff between simplicity and performance
• Choice should be motivated by• Purpose: prototype v.s. state of the art algorithm• Usage: what are the most common operations?
![Page 25: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/25.jpg)
Dynamic Array List
• Common operation complexity• Access to the customer by position: O(1) • Access to the position of customer by id: O(n)
• Iteration: O(1)• Insertion/deletion: O(n)
• See [ArrayListRoute.java]13
1 2 3 4 5
0 2 3 4 01 2 3 4 5 6
0 1 6 5 7 00
7 5
64
3
21
![Page 26: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/26.jpg)
Doubly Linked List
• Common operation complexity• Access to the customer by position: O(n) • Access to the position of customer by id: O(n)
• Iteration: O(1)• Insertion/deletion: O(1)
• See[LinkedListRoute.java]14
0
0
2
1
3
6
4
6
0
7 00
7 5
64
3
21
![Page 27: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/27.jpg)
• Common operation complexity• Access to the customer by position: O(n)• Access to the position of customer by id: O(1)• Iteration: O(1)• Insertion/deletion: O(1)
Doubly Linked List V2
15
0
7 5
64
3
21 1 2 3 4 5 6 7
0 0 2 3 6 1 5
1 2 3 4 5 6 7
6 3 4 0 7 5 0
Predecessor
SuccessorFirst
Last
![Page 28: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/28.jpg)
• Common operation complexity• Access to the customer by position: O(n)• Access to the position of customer by id: O(1)• Iteration: O(1)• Insertion/deletion: O(1)
Implementation can be tricky, especially for repeated nodes (e.g., depot)
Warning: The implementation in VroomModeling is full of bugs “incomplete”
Doubly Linked List V2
15
0
7 5
64
3
21 1 2 3 4 5 6 7
0 0 2 3 6 1 5
1 2 3 4 5 6 7
6 3 4 0 7 5 0
Predecessor
SuccessorFirst
Last
![Page 29: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/29.jpg)
16
/* HANDS ON */
![Page 30: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/30.jpg)
17
Resources / Solutions:http://victorpillac.com/vrp2013
![Page 31: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/31.jpg)
18
Naming Conventions:m: prefix for instance fields (e.g., mMyField)s: prefix for static fields (e.g., sMyStaticField)I: prefix for interface names (e.g., IMyInterface)Base: suffix for abstract types (e.g., MyTypeBase)
Logging:Uses Log4J, see VRPLogging.java
![Page 32: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/32.jpg)
19
Opened files
Documentation, Console
Packages, source files
Class structure
![Page 33: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/33.jpg)
20
![Page 34: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/34.jpg)
21
![Page 35: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/35.jpg)
22
![Page 36: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/36.jpg)
22
Compilation errorClick for quick fix
![Page 37: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/37.jpg)
22
Error explanation
Compilation errorClick for quick fix
![Page 38: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/38.jpg)
22
Possible fixes
Error explanation
Compilation errorClick for quick fix
![Page 39: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/39.jpg)
algorithms package
23
IVRPOptimizationAlgorithm
GRASPVND ParallelGRASP HeuristicConcentrationCW
examples package util package
VNS
![Page 40: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/40.jpg)
algorithms package
23
IVRPOptimizationAlgorithm
GRASPVND ParallelGRASP HeuristicConcentrationCW
Clarke and Wright heuristic
to generate routes
examples package util package
VNS
![Page 41: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/41.jpg)
algorithms package
23
IVRPOptimizationAlgorithm
GRASPVND ParallelGRASP HeuristicConcentrationCW
Clarke and Wright heuristic
to generate routes
Explore a number of
neighborhoods
examples package util package
VNS
![Page 42: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/42.jpg)
algorithms package
23
IVRPOptimizationAlgorithm
GRASPVND ParallelGRASP HeuristicConcentrationCW
Clarke and Wright heuristic
to generate routes
Explore a number of
neighborhoods
Start with a solution from CW and apply VND
examples package util package
VNS
![Page 43: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/43.jpg)
algorithms package
23
IVRPOptimizationAlgorithm
GRASPVND ParallelGRASP HeuristicConcentrationCW
Clarke and Wright heuristic
to generate routes
Explore a number of
neighborhoods
Start with a solution from CW and apply VND
Parallel implementation
of GRASP
examples package util package
VNS
![Page 44: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/44.jpg)
algorithms package
23
IVRPOptimizationAlgorithm
GRASPVND ParallelGRASP HeuristicConcentrationCW
Clarke and Wright heuristic
to generate routes
Explore a number of
neighborhoods
Start with a solution from CW and apply VND
Parallel implementation
of GRASP
Takes a set of routes and build
a solution
examples package util package
VNS
![Page 45: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/45.jpg)
algorithms package
23
IVRPOptimizationAlgorithm
GRASPVND ParallelGRASP HeuristicConcentrationCW
Clarke and Wright heuristic
to generate routes
Explore a number of
neighborhoods
Start with a solution from CW and apply VND
Parallel implementation
of GRASP
Takes a set of routes and build
a solution
examples package
Each class contains a main method that we will use to run the examples
util package
VNS
![Page 46: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/46.jpg)
algorithms package
23
IVRPOptimizationAlgorithm
GRASPVND ParallelGRASP HeuristicConcentrationCW
Clarke and Wright heuristic
to generate routes
Explore a number of
neighborhoods
Start with a solution from CW and apply VND
Parallel implementation
of GRASP
Takes a set of routes and build
a solution
examples package
Each class contains a main method that we will use to run the examples
util package
Classes to make our life easier
VNS
![Page 47: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/47.jpg)
24
![Page 48: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/48.jpg)
[ExampleRoutesAtomic.java]
• Compares ArrayListRoute and LinkedListRoute
• Append a node• Get a node at a random position• Remove the first node
25
![Page 49: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/49.jpg)
[ExampleRoutesAtomic.java]
• Compares ArrayListRoute and LinkedListRoute
• Append a node• Get a node at a random position• Remove the first node
25
ArrayListAppend:123.1ms GetNodeAt:18.7ms RemoveFirst:134.2ms
LinkedListAppend:129.4ms GetNodeAt:66.6ms RemoveFirst:110.6ms
![Page 50: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/50.jpg)
[CW.java]
• Clarke and Wright constructive heuristic
26
0
4
3
21
213
4
0
4
3
21
213
4
0
4
3
21
213
4
Initialization: create one route
per node
Each step: Merge the two routes to
generate the greatest saving
Repeat until there are no more
feasible merging
![Page 51: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/51.jpg)
[CW.java]
• Clarke and Wright constructive heuristic
26
0
4
3
21
213
4
0
4
3
21
213
4
0
4
3
21
213
4
Initialization: create one route
per node
Each step: Merge the two routes to
generate the greatest saving
Repeat until there are no more
feasible merging
Implemented in VroomHeuristics in package vroom.common.heuristics.cw
![Page 52: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/52.jpg)
[ExampleCW.java]
27
![Page 53: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/53.jpg)
[ExampleCW.java]
27
true
![Page 54: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/54.jpg)
[ExampleCW.java]
27
true
LEVEL_WARN
![Page 55: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/55.jpg)
Variable Neighborhood Descent
• Explore different neighborhoods sequentially
• The final solution is a local optima for all neighborhoods
28
0
4
32
110
4
32
11
N1 N2 0
4
32
11
![Page 56: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/56.jpg)
Variable Neighborhood Descent
• Explore different neighborhoods sequentially
• The final solution is a local optima for all neighborhoods
28
0
4
32
110
4
32
11
N1 N2 0
4
32
11
N1startImprovement
found?
![Page 57: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/57.jpg)
Variable Neighborhood Descent
• Explore different neighborhoods sequentially
• The final solution is a local optima for all neighborhoods
28
0
4
32
110
4
32
11
N1 N2 0
4
32
11
N1startImprovement
found?
yes
![Page 58: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/58.jpg)
Variable Neighborhood Descent
• Explore different neighborhoods sequentially
• The final solution is a local optima for all neighborhoods
28
0
4
32
110
4
32
11
N1 N2 0
4
32
11
N1 N2startImprovement
found?
yesno
![Page 59: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/59.jpg)
Variable Neighborhood Descent
• Explore different neighborhoods sequentially
• The final solution is a local optima for all neighborhoods
28
0
4
32
110
4
32
11
N1 N2 0
4
32
11
N1 N2start Nn endImprovement
found?Improvement
found?Improvement
found?
yesyesyesno no
![Page 60: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/60.jpg)
[VND.java]
29
![Page 61: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/61.jpg)
[VND.java]
29
Ignore for now
![Page 62: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/62.jpg)
[VND.java]
29
The constraints are defined separately from the neighborhoods.
Each constraint is responsible for checking if a move is feasible
Ignore for now
![Page 63: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/63.jpg)
[VND.java]
29
The constraints are defined separately from the neighborhoods.
Each constraint is responsible for checking if a move is feasible
Ignore for now
Instantiate the neighborhood that will be used later
![Page 64: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/64.jpg)
[VND.java]
30
![Page 65: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/65.jpg)
[VND.java]
30
Performs a local search in the neighborhood of the
current solution
![Page 66: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/66.jpg)
[VND.java]
30
Performs a local search in the neighborhood of the
current solution
The parameters control how the search is performed, in this case
deterministic & best improvement
![Page 67: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/67.jpg)
[ExampleVND.java]
• Run the main method
• Is the ordering of neighborhoods in VND.java logical?
• How to improve it?• Is the localSearch implementation in VND.java coherent
with the definition of VND?
31
N1 N2start Nn endImprovement
found?Improvement
found?Improvement
found?
yesyesyesno no
![Page 68: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/68.jpg)
[ExampleVND.java]
• Run the main method
• Is the ordering of neighborhoods in VND.java logical?
• How to improve it?• Is the localSearch implementation in VND.java coherent
with the definition of VND?
31
N1 N2start Nn endImprovement
found?Improvement
found?Improvement
found?
yesyesyesno no
![Page 69: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/69.jpg)
[ExampleVND.java]
• Run the main method
• Is the ordering of neighborhoods in VND.java logical?
• How to improve it?• Is the localSearch implementation in VND.java coherent
with the definition of VND?
31
N1 N2start Nn endImprovement
found?Improvement
found?Improvement
found?
yesyesyesno no
![Page 70: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/70.jpg)
[ExampleRoutesOptim.java]
• Compares ArrayListRoute and LinkedListRoute
• Constructive heuristic (CW)• Variable Neighborhood Descent optimization (VND)
32
![Page 71: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/71.jpg)
[ExampleRoutesOptim.java]
• Compares ArrayListRoute and LinkedListRoute
• Constructive heuristic (CW)• Variable Neighborhood Descent optimization (VND)
32
ArrayListCW 617.1ms VND:67,576.7ms
LinkedListCW 414.4ms VND:86,443.3ms
![Page 72: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/72.jpg)
Store Routes
33
• Store routes for future use• Requirements
• Memory-efficient• Avoid repeated routes• Store a minimalistic route representation
• Low computation overhead• Two approaches
• Exhaustive list• Issue: repeated routes
• Hash based set
![Page 73: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/73.jpg)
Hash Functions• Compress the information stored in a route• Desired characteristics
• Determinism• Uniformity
• Issues• Two different routes can have the same hash (hash collision)• Computational cost of hash evaluation
34
![Page 74: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/74.jpg)
35
/* HANDS ON */
![Page 75: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/75.jpg)
• See Groer et al. 2010 - [GroerSolutionHasher.java]
• Produces a 32-bit integer that depend on the set and sequence of nodes in the route
010 XOR 111 = 101(2) (7) (5)
Sequence Dependent Hash
36
Input: -‐ rnd: An array of n random integers-‐ route: A routeOutput:-‐ A hash value for route
1.if route.first > route.last1.route ← reverse ordering of route
2.hash ← 03.For each edge (i,j) in route
1.hash ← hash XOR rnd[i+j % n]4.return hash
![Page 76: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/76.jpg)
Sequence Independent Hash• See Pillac et al. 2012 - [NodeSetSolutionHasher.java]
• Produce a 32-bit integer that depends on the set of nodes visited by the route
• Advantage:• Implicit filtering of
duplicated routes
37
Input: -‐ rnd: An array of n random integers-‐ route: A routeOutput:-‐ A hash value for route
1.hash ← 02.For each node i in route
1.hash ← hash XOR rnd[i % n]3.return hash
![Page 77: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/77.jpg)
Example• Greedy Randomized Adaptive Search Procedure
38
Randomized Constructive Heuristic
Start
Local Search
End
![Page 78: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/78.jpg)
[GRASP.java]
• Clarke and Wright construction heuristic• Variable Neighborhood Descent optimization
39
![Page 79: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/79.jpg)
[GRASP.java]
• Clarke and Wright construction heuristic• Variable Neighborhood Descent optimization
39
![Page 80: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/80.jpg)
[GRASP.java]
• Clarke and Wright construction heuristic• Variable Neighborhood Descent optimization
39
![Page 81: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/81.jpg)
[ExampleGRASP.java]
• Runs the GRASP procedure on a single instance
40
![Page 82: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/82.jpg)
Heuristic Concentration
41
Randomized Constructive Heuristic
Start
Local Search
![Page 83: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/83.jpg)
Heuristic Concentration
41
Randomized Constructive Heuristic
Start
Local Search Route pool
![Page 84: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/84.jpg)
Heuristic Concentration
41
Randomized Constructive Heuristic
Start
Local Search
End
Route pool
Set Covering
![Page 85: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/85.jpg)
Heuristic Concentration
42
minX
p2⌦
cpxp
s.t.X
p2⌦
a
ipxp � 1 8i 2 N
xp 2 {0, 1} 8p 2 ⌦
• Set covering model:
![Page 86: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/86.jpg)
Heuristic Concentration
42
minX
p2⌦
cpxp
s.t.X
p2⌦
a
ipxp � 1 8i 2 N
xp 2 {0, 1} 8p 2 ⌦
Set of routes
• Set covering model:
![Page 87: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/87.jpg)
Heuristic Concentration
42
minX
p2⌦
cpxp
s.t.X
p2⌦
a
ipxp � 1 8i 2 N
xp 2 {0, 1} 8p 2 ⌦
Set of routesCost of route p
• Set covering model:
![Page 88: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/88.jpg)
Heuristic Concentration
42
minX
p2⌦
cpxp
s.t.X
p2⌦
a
ipxp � 1 8i 2 N
xp 2 {0, 1} 8p 2 ⌦
Set of routesCost of route p
1 if route p is selected
• Set covering model:
![Page 89: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/89.jpg)
Heuristic Concentration
42
minX
p2⌦
cpxp
s.t.X
p2⌦
a
ipxp � 1 8i 2 N
xp 2 {0, 1} 8p 2 ⌦
Set of routesCost of route p
1 if route p is selected
Set of nodes
• Set covering model:
![Page 90: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/90.jpg)
Heuristic Concentration
42
minX
p2⌦
cpxp
s.t.X
p2⌦
a
ipxp � 1 8i 2 N
xp 2 {0, 1} 8p 2 ⌦
Set of routesCost of route p
1 if route p is selected
1 if route p visits node i
Set of nodes
• Set covering model:
![Page 91: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/91.jpg)
• Adapt the GRASP procedure to collect routes• Add the following fragment where needed
• Hint: we want to collect as many routes as possible• Experiment with different route pools
• What is the impact on the number of routes and HC time?
[ExampleGRASPHC.java]
43
![Page 92: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/92.jpg)
Heuristic Concentration
44
Randomized Constructive Heuristic
Start
Local Search
End
Route pool
Set Covering
![Page 93: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/93.jpg)
ALGORITHMIC TRICKS
45
![Page 94: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/94.jpg)
Bottlenecks In Heuristics For VRP
46
• Size of the neighborhood• Areas of the neighborhood are not interesting• Only minor changes are made to the solution at each move
• How different is the new neighborhood?• How to avoid restarting from scratch?
• Move evaluation• Cost & Feasibility• Performed millions of times• Which is most costly? Which should be done first?
![Page 95: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/95.jpg)
Granular Neighborhoods
47
• Reduce the size of the neighborhoods• See Toth and Vigo (2003)• Costly (long) arcs are less likely to be in good solutions
• Filter out moves that involves only costly arcs• Costly arc threshold
54
3
2
1
0
Heuristic solution
Number of nodes+ Number of vehicles
# = � · z0
n+K0
Sparsification parameter (e.g., =2.5)
![Page 96: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/96.jpg)
Granular Neighborhoods
47
• Reduce the size of the neighborhoods• See Toth and Vigo (2003)• Costly (long) arcs are less likely to be in good solutions
• Filter out moves that involves only costly arcs• Costly arc threshold
54
3
2
1
0
Inserting 5 between 3 and 4 involves 2 costly arcsHeuristic solution
Number of nodes+ Number of vehicles
# = � · z0
n+K0
Sparsification parameter (e.g., =2.5)
![Page 97: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/97.jpg)
Granular Neighborhoods
47
• Reduce the size of the neighborhoods• See Toth and Vigo (2003)• Costly (long) arcs are less likely to be in good solutions
• Filter out moves that involves only costly arcs• Costly arc threshold
54
3
2
1
0
Inserting 5 between 3 and 4 involves 2 costly arcs
Inserting 5 between 1 and 2 involves 1 costly arcs
Heuristic solution
Number of nodes+ Number of vehicles
# = � · z0
n+K0
Sparsification parameter (e.g., =2.5)
![Page 98: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/98.jpg)
Static Move Descriptor (SMD)• Store information between moves• See Zachariadis and Kiranoudis (2010)• Precompute and maintain all moves• Example with relocate (relocation of a single node)
48
54
3
2
1
0
n2=0 n2=1 n2=2 n2=3 n2=4 n2=5
n1=0
n1=1
n1=2
n1=3
n1=4
n1=5
... ... 0 0 ...
0 ... ... ... ...
0 ... ... ... ...
... ... 0 ... ...
... ... ... ... 0
... 0 ... ... ...
x
x
![Page 99: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/99.jpg)
Static Move Descriptor (SMD)• Store information between moves• See Zachariadis and Kiranoudis (2010)• Precompute and maintain all moves• Example with relocate (relocation of a single node)
48
54
3
2
1
0
n2=0 n2=1 n2=2 n2=3 n2=4 n2=5
n1=0
n1=1
n1=2
n1=3
n1=4
n1=5
... ... 0 0 ...
0 ... ... ... ...
0 ... ... ... ...
... ... 0 ... ...
... ... ... ... 0
... 0 ... ... ...
x
Cost of relocating 4 after 3:c3,4+c0,5-c5,4-c3,0
x
![Page 100: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/100.jpg)
Static Move Descriptor (SMD)• Store information between moves• See Zachariadis and Kiranoudis (2010)• Precompute and maintain all moves• Example with relocate (relocation of a single node)
48
54
3
2
1
0
n2=0 n2=1 n2=2 n2=3 n2=4 n2=5
n1=0
n1=1
n1=2
n1=3
n1=4
n1=5
... ... 0 0 ...
0 ... ... ... ...
0 ... ... ... ...
... ... 0 ... ...
... ... ... ... 0
... 0 ... ... ...
x
Cost of relocating 4 after 3:c3,4+c0,5-c5,4-c3,0
Cost of relocating 1 after 5:c0,5+c1,4-c0,1-c5,4x
![Page 101: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/101.jpg)
n2=0 n2=1 n2=2 n2=3 n2=4 n2=5
n1=0
n1=1
n1=2
n1=3
n1=4
n1=5
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
SMD Update• One static SMD table is created per neighborhood• Static update rules are predefined to know which SMDs need
to be updated after a move was executed
49
54
3
2
1
0
![Page 102: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/102.jpg)
n2=0 n2=1 n2=2 n2=3 n2=4 n2=5
n1=0
n1=1
n1=2
n1=3
n1=4
n1=5
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
SMD Update• One static SMD table is created per neighborhood• Static update rules are predefined to know which SMDs need
to be updated after a move was executed
49
54
3
2
1
0
![Page 103: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/103.jpg)
n2=0 n2=1 n2=2 n2=3 n2=4 n2=5
n1=0
n1=1
n1=2
n1=3
n1=4
n1=5
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
SMD Update• One static SMD table is created per neighborhood• Static update rules are predefined to know which SMDs need
to be updated after a move was executed
49
54
3
2
1
0
![Page 104: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/104.jpg)
n2=0 n2=1 n2=2 n2=3 n2=4 n2=5
n1=0
n1=1
n1=2
n1=3
n1=4
n1=5
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
SMD Update• One static SMD table is created per neighborhood• Static update rules are predefined to know which SMDs need
to be updated after a move was executed
49
54
3
2
1
0
![Page 105: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/105.jpg)
Selecting The Best Neighbor• All SMDs are store in a Fibonacci Heap
• O(1) access to the lowest cost SMD• O(1) insertion• O(n.log(n)) deletion
• How to find the best feasible neighbor?• Pop the lowest cost SMD
until a feasible move is found
50
Source: http://en.wikipedia.org/wiki/Fibonacci_heap
![Page 106: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/106.jpg)
SMD In Practice
51
ARTICLE IN PRESS
status: this can be achieved by augmenting the cost tag ofinfeasible SMD instances by a very large penalization term, so thatthe feasible SMD instances are firstly extracted from the heaps.For both the aforementioned cases however, the SMD cost updaterules for the application of a move must be appropriatelydesigned to reflect the changes that this specific move has causedin terms of the dynamic feasibility status of the SMD instances.
3.6. The acceleration role of the static move descriptors
To present the acceleration role of the proposed SMD repre-sentation, the following experiment was performed: we executedthe local search method described in Section 3.4 using the new SMDrepresentation of tentative moves, and with the classic moverepresentation. The local search operator employed was thequadratic 1-0 exchange. The termination condition used was thecompletion of 50,000 iterations. To avoid being trapped in localoptima, deteriorating moves were allowed, and move reversalswere eliminated using the tabu strategy. In terms of the cost of thefinal solutions, both methods produced identical results, as theexact same search rules were applied. The two compared methodsdid only differ on the representation used for evaluating solutionneighborhoods, and therefore on the total CPU effort required.
The comparative results obtained by the aforementionedexperimental procedure are summarized in Fig. 8. As seen fromFig. 8, the computational times required by both representationsare comparable for problem scales of up to 350–400 customers.This is because the acceleration effect of the SMD concept iscounterbalanced by the extra computations performed internallyto the Fibonacci Heap structure. However, as the problem scalebecomes larger, the CPU time required by the classicrepresentation exhibits quadratic growth. On the contrary, theCPU time required by the search process with the use of the SMDrepresentation presents a linearithmic growth rate, as moreclearly illustrated in Fig. 9. Note that for the problem instanceof 1200 customers, the complexity reduction achieved by the useof the SMD representation reduces the total time of the searchprocess by a remarkable 87.96% (classic representation: 2485.89 s,SMD representation: 299.36 s). Comparative algorithmicexecutions were also conducted with the use of the 1-1exchange and 2-opt operators. For the 1-1 exchangeneighborhood structure, similar conclusions were yielded, interms of the acceleration role of the SMD representation. Forthe 2-opt operator, the speed-up effect of the SMD move mappingwas also evident, although slightly reduced, due to the fact that
the number of necessary SMD instance cost updates is larger thanthat required by the 1-0 and 1-1 exchange move types, aspresented in Table 1.
4. A VRP Tabu search based on the SMD concept
In this section, we propose a VRP metaheuristic which exploitsthe SMD representation of solution neighborhoods analyticallydescribed in Section 3. Let PSMDA (Penalized Static Move
SMD
inst
ance
s ex
tract
ed u
ntil
the
first
adm
issi
ble
SMD
was
obt
aine
d
CVR
PD
CVR
P1-0 Exchange 1-1 Exchange 2-opt
0
200
400
600
048
121620
01020304050
02468
101214
0
500
1000
1500
2000
0200400600800
1000
n: Problem Size
200 300 400 500 200 300 400 500 200 300 400 500
150 450 750 1050 150 450 750 1050 150 450 750 1050
Fig. 7. Number of SMD instances extracted until the first admissible is obtained against problem size.
0
500
1000
1500
2000
2500
n: Problem Size
CPU
Tim
e fo
r 500
00 it
erat
ions
(sec
)
ClassicRepresentation
SMDreprentation
200 400 600 800 1000 1200
Fig. 8. The acceleration role of the SMD representation.
0
50
100
150
200
250
300
350
n log(n) n: Problem Size
CPU
tim
e fo
r 500
00 it
erat
ions
(sec
)
0 500 1000 1500 2000 2500 30003 500 4000
Fig. 9. The linearithmic behavior of the search process using the SMD concept.
E.E. Zachariadis, C.T. Kiranoudis / Computers & Operations Research 37 (2010) 2089–21052098
Source: Zachariadis and Kiranoudis (2010)
Comparison of computational times
![Page 107: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/107.jpg)
Sequential Search• Explore neighborhoods in a smart way• See Irnich et al. (2006)• Decompose moves in partial moves
• Example with swap
52
54
321
5
![Page 108: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/108.jpg)
Sequential Search• Explore neighborhoods in a smart way• See Irnich et al. (2006)• Decompose moves in partial moves
• Example with swap
52
54
321
5
![Page 109: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/109.jpg)
Sequential Search• Explore neighborhoods in a smart way• See Irnich et al. (2006)• Decompose moves in partial moves
• Example with swap
52
54
321
5
5
321
![Page 110: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/110.jpg)
Sequential Search• Explore neighborhoods in a smart way• See Irnich et al. (2006)• Decompose moves in partial moves
• Example with swap
52
54
321
5
5
321
54
2
5
![Page 111: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/111.jpg)
Sequential Search In Practice• Neighborhoods are explored by considering partial moves• Exploration is pruned using bounds on the partial move cost
53
S. Irnich et al. / Computers & Operations Research 33 (2006) 2405–2429 2423
Or-Opt
0
20
40
60
80
100
120
140
0 500 1000 1500 2000 2500
Acc
eler
atio
nFa
ctor
String-Exchange
0100200300400500600700800900
0 500 1000 1500 2000 2500
Acc
eler
atio
nFa
ctor
Special 2-Opt*
0
20
40
60
80
100
120
0 500 1000 1500 2000 2500
Acc
eler
atio
nFa
ctor
Swap
0
20
40
60
80
100
120
0 500 1000 1500 2000 2500
Acc
eler
atio
nFa
ctor
Relocation
0
10
20
30
40
50
60
70
0 500 1000 1500 2000 2500
Acc
eler
atio
nFa
ctor
2-Opt
0
5
10
15
20
25
30
35
0 500 1000 1500 2000 2500
Acc
eler
atio
nFa
ctor
f =100
f =75
f =50
f =25
f =100
f =75
f =50
f =25
f =100
f =75
f =50
f =25
f =100
f =75
f =50
f =25
f =100
f =75f =50
f =25
f =100
f =75
f =50
f =25
Size n
Size n
Size n
Size n
Size n
Size n
Fig. 7. Acceleration factor comparing the running times of lexicographic search and sequential search algorithms.
point (=factor) in the diagram corresponds to a fixed pair of size n and average number f of customersin a tour. It is computed considering several thousands of runs (10 series, 4 starting solutions, from 35 upto 500 iterations). Note that we have chosen the maximum string length k = 3 for or-opt and relocationneighborhoods.
All six diagrams show that there is a substantial speedup when the classical lexicographical searchapproach is replaced by a sequential search procedure. The most remarkable insight is that for all neigh-borhoods considered, the acceleration factor mainly depends on the average number f of customers in aroute. The smaller f is, the more constrained is the problem instance and the smaller is the accelerationfactor. One may interpret the results in the following way. In more constrained problems (i.e., with smallervalues f ) there are more improving moves which are not necessarily feasible. Since sequential searchprunes the search only based on cost (and not on feasibility) considerations, it is less effective in problemswith tighter constraints.
2424 S. Irnich et al. / Computers & Operations Research 33 (2006) 2405–2429
3-Opt*
02000
40006000
800010000
1200014000
16000
200 300 400 500A
ccel
erat
ion
Fact
or
3-Opt*
0
500
1000
1500
2000
200 300 400 500
Avg
Tim
epe
rSe
arch
[ms]
Size n Size n
f =100
f =75
f =50f =25
f =100
f =75
f =50
f =25
Fig. 8. Acceleration factor comparing lexicographic search and sequential search algorithms, average running times of a singlesequential search iteration for 3-opt* moves.
A second aspect to analyze is the correlation between the acceleration factor and the size of the in-stances. Considering the diagrams it can be recognized that there is a positive correlation between theacceleration factor and n for the swap and relocation neighborhoods. For special 2-opt*, 2-opt, and or-optneighborhoods, there is obviously no significant correlation. That means that there is no decrease in thespeedup. Large acceleration factors can be observed when comparing lexicographic and sequential searchalgorithms for the string-exchange neighborhood. The factor is in the range between 24 and more than750, while the maximum string length was chosen as k = 3. The string-exchange neighborhood is theonly neighborhood under consideration, for which the acceleration drastically decreases with the sizen of the instances. At the first glance it seems that for larger instances, the sequential search approachmight become slower than the lexicographical search approach. This is not the case. Additional com-putational tests for larger instances with up to 5000 customers have shown that the acceleration neverfalls below a certain threshold (never below factor 20 for f = 25). The decrease of the accelerationfactor with increasing n depends on the check in step 10 of Algorithm 8. In an earlier implementation,with corresponding results presented in Irnich et al. [39], we forgot to prune the search according tothe criterion B2 > 0. As a result, the acceleration factor was nearly constant for fixed f , but substan-tially smaller. It is an open research problem why the behavior differs for the types of neighborhoodswe considered.
Since the lexicographic search for improving 3-opt* neighbors is too time-consuming, we modifiedthe computational tests in the following way. The 3-opt* search procedures are only applied to cur-rent solutions which are local optima w.r.t. all other (quadratic) neighborhoods. If an improving 3-opt*neighbor is found, the search is again directed to determine a local optimum of the quadratic neighbor-hoods. Consequently, the number of computationally costly searches within the 3-opt* neighborhoodis small in comparison to the number of searches in the quadratic neighborhoods. However, due to thefast growing effort of lexicographic search in the 3-opt* neighborhood, we considered instances withn!500 only. Results for the 3-opt* neighborhood are depicted in Fig. 8. The acceleration factor isbetween 300 for f = 25 and more than 10.000 for f = 100. The time for a single sequential searchiteration for the 3-opt* neighborhood (see also Section 5.3) ranges from a few milliseconds to about 2 sfor large-scale instances with 500 customers and f =100. Both, the acceleration factor and the time for asingle iteration, explain why lexicographic search is computationally intractable for even larger probleminstances.
f: average number of customers in a route
Speedup for swap and 3-Opt* neighborhoods
Source: Irnich et al. (2006)
![Page 112: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/112.jpg)
Store Cumulative Information• Reduce the complexity of move evaluation• Store and maintain useful information• For example: waiting time / forward slack time
• See Savelsbergh (1992)• Constant time time window feasibility check• More details in Module 2
54
![Page 113: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/113.jpg)
PARALLELIZATION
55
![Page 114: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/114.jpg)
Moore’s Law
56Source: http://en.wikipedia.org/wiki/Moore's_law
![Page 115: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/115.jpg)
Moore’s Law
56Source: http://en.wikipedia.org/wiki/Moore's_law
Doubles every 2 years
![Page 116: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/116.jpg)
Moore’s Law
56Source: http://en.wikipedia.org/wiki/Moore's_law
Doubles every 2 years
Doubles every 3 years
![Page 117: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/117.jpg)
Clock Frequency
57
Source: http://cpudb.stanford.edu/visualize/clock_frequency
![Page 118: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/118.jpg)
Promises Of Parallelization
58
• Overcome the stalling of CPU performance increase• Increased availability of parallel computing
• Personal computers with multiples CPUs/cores• Most universities have access to large grids• On demand cloud services (e.g., Amazon)
![Page 119: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/119.jpg)
Promises Of Parallelization
58
• Overcome the stalling of CPU performance increase• Increased availability of parallel computing
• Personal computers with multiples CPUs/cores• Most universities have access to large grids• On demand cloud services (e.g., Amazon)
Parallel CPU time =Sequential CPU time
Number of CPUs
The parallelization illusion
![Page 120: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/120.jpg)
Architecture Overview
59
CPU
CoreThreads
![Page 121: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/121.jpg)
Architecture Overview
59
CPU
Core
L1 c
ache
L1 c
ache
L1 c
ache
L1 c
ache
Threads
![Page 122: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/122.jpg)
Architecture Overview
59
CPU
L2 c
ache
(~ M
b) Core
L1 c
ache
L1 c
ache
L1 c
ache
L1 c
ache
Very Fast
Threads
![Page 123: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/123.jpg)
Architecture Overview
59
CPU
L2 c
ache
(~ M
b)
RAM(~ Gb)
Core
L1 c
ache
L1 c
ache
L1 c
ache
L1 c
ache
Fast
Very Fast
Threads
![Page 124: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/124.jpg)
Architecture Overview
59
CPU
L2 c
ache
(~ M
b)
RAM(~ Gb)
HDD(~ Tb)
Core
L1 c
ache
L1 c
ache
L1 c
ache
L1 c
ache
Fast
Slow
Very Fast
Threads
![Page 125: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/125.jpg)
Extremely Slow
Architecture Overview
59
CPU
L2 c
ache
(~ M
b)
RAM(~ Gb)
HDD(~ Tb)
Core
L1 c
ache
L1 c
ache
L1 c
ache
L1 c
ache
Fast
Slow
Very Fast
Threads
![Page 126: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/126.jpg)
CPU
Concepts And Limitations
60
My ProgramexecuteMySequentialCode()thread1 = new Thread(do A, do B)thread1.run()thread2 = new Thread(do C)thread2.run()
Operating Systemthread2
Create a new threadAssign it to cpu core #4Execute the instructions A,B
Create a new threadAssign it to cpu core #1Execute the instructions C
thread1
![Page 127: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/127.jpg)
CPU
Concepts And Limitations
60
My ProgramexecuteMySequentialCode()thread1 = new Thread(do A, do B)thread1.run()thread2 = new Thread(do C)thread2.run()
Operating Systemthread2
Create a new threadAssign it to cpu core #4Execute the instructions A,B
Create a new threadAssign it to cpu core #1Execute the instructions C
thread1
Takes time
![Page 128: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/128.jpg)
CPU
Concepts And Limitations
60
My ProgramexecuteMySequentialCode()thread1 = new Thread(do A, do B)thread1.run()thread2 = new Thread(do C)thread2.run()
Operating Systemthread2
Create a new threadAssign it to cpu core #4Execute the instructions A,B
Create a new threadAssign it to cpu core #1Execute the instructions C
Limited control on the actual execution sequence
thread1
Takes time
![Page 129: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/129.jpg)
CPU
Concepts And Limitations
60
My ProgramexecuteMySequentialCode()thread1 = new Thread(do A, do B)thread1.run()thread2 = new Thread(do C)thread2.run()
Operating Systemthread2
Create a new threadAssign it to cpu core #4Execute the instructions A,B
Create a new threadAssign it to cpu core #1Execute the instructions C
Limited control on the actual execution sequence
thread1
Increased memory usage
Takes time
![Page 130: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/130.jpg)
CPU
Concepts And Limitations
60
My ProgramexecuteMySequentialCode()thread1 = new Thread(do A, do B)thread1.run()thread2 = new Thread(do C)thread2.run()
Operating Systemthread2
Create a new threadAssign it to cpu core #4Execute the instructions A,B
Create a new threadAssign it to cpu core #1Execute the instructions C
Takes time
Limited control on the actual execution sequence
thread1
Increased memory usage
Takes time
![Page 131: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/131.jpg)
CPU
Concepts And Limitations
60
My ProgramexecuteMySequentialCode()thread1 = new Thread(do A, do B)thread1.run()thread2 = new Thread(do C)thread2.run()
Operating Systemthread2
Create a new threadAssign it to cpu core #4Execute the instructions A,B
Create a new threadAssign it to cpu core #1Execute the instructions C
Takes time
Concurrent access to shared resources
Limited control on the actual execution sequence
thread1
Increased memory usage
Takes time
![Page 132: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/132.jpg)
Sharing Is Caring
61
Thread 1 Thread 2object
x = 11234
1234
![Page 133: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/133.jpg)
Sharing Is Caring
61
Thread 1 Thread 2object
x = 1✓ z = object.getX()y = object.getX()1234
1234
![Page 134: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/134.jpg)
Sharing Is Caring
61
Thread 1 Thread 2object
x = 1✓ z = object.getX()
z = z + 2
y = object.getX()
y = y + 11234
1234
![Page 135: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/135.jpg)
Sharing Is Caring
61
Thread 1 Thread 2object
x = 1✓
x = ?
z = object.getX()
z = z + 2
object.setX(z)
y = object.getX()
y = y + 1
object.setX(y)
1234
1234
![Page 136: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/136.jpg)
Sharing Is Caring
61
Thread 1 Thread 2object
x = 1✓
x = ?x = 2
z = object.getX()
z = z + 2
y = object.getX()
y = y + 1
object.setX(y)
1234
1234
![Page 137: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/137.jpg)
Sharing Is Caring
61
Thread 1 Thread 2object
x = 1✓
x = ?
x = 3
x = 2
z = object.getX()
z = z + 2
object.setX(z)
y = object.getX()
y = y + 1
object.setX(y)
1234
1234
![Page 138: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/138.jpg)
Sharing Is Caring
61
Thread 1 Thread 2object
x = 1✓
x = ?
x = 3
x = 2
z = object.getX()
z = z + 2
object.setX(z)
y = object.getX()
y = y + 1
object.setX(y)
y = object.getX() ? ✗
1234
1234
![Page 139: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/139.jpg)
Sharing Is Caring
61
Thread 1 Thread 2object
x = 1✓
x = ?
x = 3
x = 2
x = 1 + 1 + 2 ≠ 3✗
z = object.getX()
z = z + 2
object.setX(z)
y = object.getX()
y = y + 1
object.setX(y)
y = object.getX() ? ✗
1234
1234
![Page 140: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/140.jpg)
Sharing With Care
6224
Thread 1 Thread 2object123456789
10
12345678910
![Page 141: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/141.jpg)
Sharing With Care
6224
Thread 1 Thread 2objectlock(object)
(waiting)
lock(object)123456789
10
12345678910
![Page 142: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/142.jpg)
Sharing With Care
6224
Thread 1 Thread 2object
x = 1
x = 2
y = object.getX()
y = y + 1
object.setX(y)
lock(object)
(waiting)
lock(object)123456789
10
12345678910
![Page 143: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/143.jpg)
Sharing With Care
6224
Thread 1 Thread 2object
x = 1
x = 2
y = object.getX()
y = y + 1
object.setX(y)
release(object)
lock(object)
(waiting)
lock(object)123456789
10
12345678910
![Page 144: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/144.jpg)
Sharing With Care
6224
Thread 1 Thread 2object
x = 1
x = 2
y = object.getX()
y = y + 1
object.setX(y)
release(object)
lock(object)
(waiting)
lock(object)
getlock(object)
(waiting)
123456789
10
12345678910
![Page 145: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/145.jpg)
Sharing With Care
6224
Thread 1 Thread 2object
x = 1
x = 2
x = 2 z = object.getX()
z = z + 2
object.setX(z)
release(object)
y = object.getX()
y = y + 1
object.setX(y)
release(object)
lock(object)
(waiting)
lock(object)
getlock(object)
(waiting)x = 4
123456789
10
12345678910
![Page 146: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/146.jpg)
Sharing With Care
6224
Thread 1 Thread 2object
x = 1
x = 2
x = 2
x = 1 + 1 + 2 = 4✓
z = object.getX()
z = z + 2
object.setX(z)
release(object)
y = object.getX()
y = y + 1
object.setX(y)
release(object)
lock(object)
(waiting)
lock(object)
getlock(object)
(waiting)
y = object.getX()
x = 4
x = 4
123456789
10
12345678910
![Page 147: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/147.jpg)
The Limits Of Sharing
63
Thread 1 Thread 2object
lock(object)
(waiting)
release(object)
getlock(object)
(waiting)
release(object)
lock(object)
• Lock/release mechanisms force threads to wait
• In the worst case the execution is sequential
• In general
• Lock an object while it may be modified
• Do no lock for read-only operations
• Check for inconsistencies at runtime
![Page 148: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/148.jpg)
Parallel CPU time =Sequential CPU time
Number of CPUs
The parallelization illusion
Parallelization In Practice
64
![Page 149: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/149.jpg)
Parallel CPU time =Sequential CPU time
Number of CPUs
The parallelization illusionParallel CPU time = Sequential CPU timeNumber of CPUs
Parallelization In Practice
64
![Page 150: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/150.jpg)
Parallel CPU time =Sequential CPU time
Number of CPUs
The parallelization illusionParallel CPU time = Sequential CPU timeNumber of CPUs
Parallelization In Practice
64
x Random(1, +∞)
![Page 151: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/151.jpg)
Parallel CPU time =Sequential CPU time
Number of CPUs
The parallelization illusionParallel CPU time = Sequential CPU timeNumber of CPUs
Parallelization In Practice
64
x Random(1, +∞)x (1- e- time spent programming)
![Page 152: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/152.jpg)
Parallel CPU time =Sequential CPU time
Number of CPUs
The parallelization illusionParallel CPU time = Sequential CPU timeNumber of CPUs
Parallelization In Practice
64
x Random(1, +∞)x (1- e- time spent programming)x (1- e- time spent debugging )
![Page 153: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/153.jpg)
Parallel CPU time =Sequential CPU time
Number of CPUs
The parallelization illusionParallel CPU time = Sequential CPU timeNumber of CPUs
Parallelization In Practice
64
x Random(1, +∞)x (1- e- time spent programming)x (1- e- time spent debugging )x (1- e- number of headaches )
![Page 154: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/154.jpg)
Parallel CPU time =Sequential CPU time
Number of CPUs
The parallelization illusionParallel CPU time = Sequential CPU timeNumber of CPUs
Parallelization In Practice
64
x Random(1, +∞)x (1- e- time spent programming)x (1- e- time spent debugging )x (1- e- number of headaches )
![Page 155: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/155.jpg)
Parallel CPU time =Sequential CPU time
Number of CPUs
The parallelization illusionParallel CPU time = Sequential CPU timeNumber of CPUs
Parallelization In Practice
64
x Random(1, +∞)x (1- e- time spent programming)x (1- e- time spent debugging )x (1- e- number of headaches )
Not so random
![Page 156: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/156.jpg)
Parallel CPU time =Sequential CPU time
Number of CPUs
The parallelization illusionParallel CPU time = Sequential CPU timeNumber of CPUs
Converges to 1
Parallelization In Practice
64
x Random(1, +∞)x (1- e- time spent programming)x (1- e- time spent debugging )x (1- e- number of headaches )
Not so random
![Page 157: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/157.jpg)
Amdahl’s Law
65
S =1
1�↵P + ↵
Given:- A fraction α of the code can be parallelized- P processors
The speedup is bounded by:
![Page 158: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/158.jpg)
Amdahl’s Law
65
S =1
1�↵P + ↵
Given:- A fraction α of the code can be parallelized- P processors
The speedup is bounded by:
Source: http://en.wikipedia.org/wiki/Parallel_computing
Illusion
(P )
(↵)
(S)
![Page 159: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/159.jpg)
Amdahl’s Law
65
S =1
1�↵P + ↵
Given:- A fraction α of the code can be parallelized- P processors
The speedup is bounded by:
“When a task cannot be partitioned because of sequential constraints, the
application of more effort has no effect on the schedule. The bearing of a child
takes nine months, no matter how many women are assigned.”
Fred Brooks
![Page 160: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/160.jpg)
Two Approaches• Run a sequential algorithm in different threads
• E.g., different experiments, or runs of a same algorithm• No synchronization issues• Limited shared resources issues
• Design a parallel algorithm• Potentially a real speedup of the algorithm• Increase complexity and harder to debug
66
![Page 161: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/161.jpg)
Learnt From Experience• Limit number of shared resources
• Avoid risk of concurrent modifications• Use bullet proof synchronization / locks / error checks
• Limit complex debugging• Limit communication between threads
• Reduce waiting for other threads to exchange information• Execute a significant number of operations in each thread
• Execution time ≫ thread creation overhead
67
![Page 162: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/162.jpg)
68
/* HANDS ON */
![Page 163: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/163.jpg)
Thread 1 Thread 2 Thread 3
A Simple Example
• Parallel Greedy Randomized Adaptive Search Procedure
69
Randomized Constructive Heuristic
Start
Local Search
End
Randomized Constructive Heuristic
Local Search
Randomized Constructive Heuristic
Local Search
![Page 164: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/164.jpg)
[ParallelGRASP.java]
70
![Page 165: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/165.jpg)
[ParallelGRASP.java]
70
Ask the system how many processors are available
![Page 166: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/166.jpg)
[ParallelGRASP.java]
70
Ask the system how many processors are available
Create one GRASP instance per iteration
![Page 167: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/167.jpg)
[ParallelGRASP.java]
70
Ask the system how many processors are available
Create one GRASP instance per iteration
The executor will be responsible for the creation of threads
![Page 168: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/168.jpg)
[ParallelGRASP.java]
71
![Page 169: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/169.jpg)
[ParallelGRASP.java]
71
The executor will creates threads as needed, execute the GRASP subprocesses, and return
the results
![Page 170: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/170.jpg)
[ParallelGRASP.java]
71
The executor will creates threads as needed, execute the GRASP subprocesses, and return
the resultsLoop through pairs
<GRASP subprocess, Best solution>
![Page 171: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/171.jpg)
[ExampleParallelGRASP.java]
• Run the for different instances and compare with the sequential version• What is the speedup?• Are the solutions identical?
• Going further ....• Why do we create GRASP instances with a single iteration?• What are the synchronization issues?
72
![Page 172: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/172.jpg)
LS LS
Variable Neighborhood Search
• Similar to the VND• Random exploration of each neighborhood• Local search
73
N1 N2start Nn endImprovement
found?Improvement
found?Improvement
found?
yesyesyesno noLS
![Page 173: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/173.jpg)
LS LS
Variable Neighborhood Search
• Similar to the VND• Random exploration of each neighborhood• Local search
73
N1 N2start Nn endImprovement
found?Improvement
found?Improvement
found?
yesyesyesno noLS
See [VNS.java]
![Page 174: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/174.jpg)
LS LS
Variable Neighborhood Search
• Similar to the VND• Random exploration of each neighborhood• Local search
73
N1 N2start Nn endImprovement
found?Improvement
found?Improvement
found?
yesyesyesno noLS
See [VNS.java]
NeighborhoodExplorer
![Page 175: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/175.jpg)
[VNS.java]
74
Define 4 string-exchange neighborhoods of increasing size
Define an explorer for each neighborhood: include one
neighborhoo and a local search
LSNi
LSN2
![Page 176: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/176.jpg)
LS
LS
Parallel Variable Neighborhood Search
• Explore all neighborhoods in parallel• Select best neighbor
75
N1
N2start
Nn
endImprovement
found?
yes
no
LS
![Page 177: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/177.jpg)
LS
LS
Parallel Variable Neighborhood Search
• Explore all neighborhoods in parallel• Select best neighbor
75
N1
N2start
Nn
endImprovement
found?
yes
no
LS
See [ParallelVNS.java]
![Page 178: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/178.jpg)
LS
LS
Parallel Variable Neighborhood Search
• Explore all neighborhoods in parallel• Select best neighbor
75
N1
N2start
Nn
endImprovement
found?
yes
no
LS
See [ParallelVNS.java]
NeighborhoodExplorer
![Page 179: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/179.jpg)
[ParallelVNS.java]
• In the provided version, neighborhoods are explored in the same thread
• Exercise: explore each neighborhood in a separate thread• Hints:
• Use mExecutor
• See ParallelGRASP.java for reference
• Compare the speed-up for small and large instances
76
![Page 180: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/180.jpg)
Parallel Algorithms Classification• Classification according to three dimensions (Crainic 2008)
• Search control cardinality• 1-control / p-control
• Search control and communications• Rigid / Knowledge synchronization• Collegial / Knowledge Collegial
• Search differentiations• Same initial point / Multiple initial point• Same search strategy / Different search strategy
• In which category fall the ParallelGRASP and ParallelVNS?77
![Page 181: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/181.jpg)
Synchronous 1-Control
78
Thread 1
Thread 2
Thread 3
Thread 4
Control
Control
Thread 1
Thread 2
Thread 3
Thread 4
Control
![Page 182: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/182.jpg)
Synchronous 1-Control
78
Thread 1
Thread 2
Thread 3
Thread 4
Control
Control
The control starts new threads to run part of the optimization in parallel
Thread 1
Thread 2
Thread 3
Thread 4
Control
Do your assignments
![Page 183: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/183.jpg)
Synchronous 1-Control
78
Thread 1
Thread 2
Thread 3
Thread 4
Control
Control
The control starts new threads to run part of the optimization in parallel
Once all threads are finished, the control gathers the information and
proceed with the optimizationThread 1
Thread 2
Thread 3
Thread 4
Control
Do your assignments
Show me your results
![Page 184: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/184.jpg)
Synchronous P-Control
79
Thread 1
Thread 2
Thread 3
Thread 4
Control Control
Control Control
Control Control Control Control
Main Control
![Page 185: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/185.jpg)
Synchronous P-Control
79
Thread 1
Thread 2
Thread 3
Thread 4
Control Control
Control Control
Control Control Control Control
At fixed points of the optimization, some threads synchronize and
exchange information
Main Control
![Page 186: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/186.jpg)
Synchronous P-Control
79
Thread 1
Thread 2
Thread 3
Thread 4
Control Control
Control Control
Control Control Control Control
At fixed points of the optimization, some threads synchronize and
exchange information
Main Control
I found a new local optima!
I found a new best solution!
![Page 187: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/187.jpg)
Thread 1
Thread 2
Thread 3
Thread 4
Main Control
Asynchronous P-Control
80
Control
Control
Control
Control
Control
Control
Control
Control
Shared information
![Page 188: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/188.jpg)
Thread 1
Thread 2
Thread 3
Thread 4
Main Control
Asynchronous P-Control
80
Control
Control
Control
Control
Control
Control
Control
Control
Shared information
At arbitrary points of the optimization, each thread exchange
information with a centralized component
![Page 189: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/189.jpg)
Thread 1
Thread 2
Thread 3
Thread 4
Main Control
Asynchronous P-Control
80
Control
Control
Control
Control
Control
Control
Control
Control
Shared information
At arbitrary points of the optimization, each thread exchange
information with a centralized component
I found a new best solution!
I’m stuck, give me the best solution
found so far
I found a new local optima!
![Page 190: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/190.jpg)
NOTES ON SOFTWARE DEVELOPMENT
81
![Page 191: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/191.jpg)
Software Development For Research
82
Specifications
Design
Implementation
Test
Prototype
Final product
![Page 192: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/192.jpg)
Software Development For Research
82
Specifications
Design
Implementation
Test
Prototype
Final productWhat do I need now?
What will I need in the future?What may I need in the future
![Page 193: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/193.jpg)
Software Development For Research
82
Specifications
Design
Implementation
Test
Prototype
Final productWhat do I need now?
What will I need in the future?What may I need in the future
How to implement what I need, will need and may need?
How to ensure I will be able to reuse/extend my code?
![Page 194: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/194.jpg)
Software Development For Research
82
Specifications
Design
Implementation
Test
Prototype
Final productWhat do I need now?
What will I need in the future?What may I need in the future
How to implement what I need, will need and may need?
How to ensure I will be able to reuse/extend my code?
How to do what I need now?
![Page 195: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/195.jpg)
Software Development For Research
82
Specifications
Design
Implementation
Test
Prototype
Final productWhat do I need now?
What will I need in the future?What may I need in the future
How to implement what I need, will need and may need?
How to ensure I will be able to reuse/extend my code?
How to do what I need now?
Is everything working as expected?Is something that worked before
now broken?
![Page 196: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/196.jpg)
A Typical Design Problem
83
• Current need: two-opt local search for the VRP• Data model
• How to represent an instance, customer, solution, route?• Optimization algorithm
• How to represent • A local search?• A neighborhood?• A move?
• How to check the feasibility of a move?
![Page 197: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/197.jpg)
A First Design
84
Instanceint[] customersdouble[] demandsdouble[][] distancesint fleetSizedouble vehicleCapacity
Solutionint[]<> routesdouble[] loads
TwoOpttwoOpt(Instance,Solution){ for each move: check if feasible evaluate return best move}
![Page 198: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/198.jpg)
A First Design
84
Instanceint[] customersdouble[] demandsdouble[][] distancesint fleetSizedouble vehicleCapacity
Solutionint[]<> routesdouble[] loads
TwoOpttwoOpt(Instance,Solution){ for each move: check if feasible evaluate return best move}
What if I now want to solve the VRPTW?
![Page 199: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/199.jpg)
A First Design
84
Instanceint[] customersdouble[] demandsdouble[][] distancesint fleetSizedouble vehicleCapacity
Solutionint[]<> routesdouble[] loads
TwoOpttwoOpt(Instance,Solution){ for each move: check if feasible evaluate return best move}
What if I now want to solve the VRPTW?
What if I want anOr-Opt local search?
![Page 200: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/200.jpg)
Some Design Tips• Identify what is reusable
• For instance, logic common to all neighborhoods• Separate clearly responsibilities
• An instance stores the data• A solution stores a solution• An objective function evaluates a solution and moves • A constraint evaluates the feasibility of a solution or move
• Keep in mind possible extensions• What other problems may I have to solve?
• Warning: avoid over-designing85
![Page 201: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/201.jpg)
Flexible And Extensible Designs
86
NeighborhoodConstraint<> constraintslocalSearch(instance,solution,objective){ for each move in listAllMoves(instance,solution): for each constraint in constraints: constraint.check(move) objective.evaluate(instance,solution,move) return best feasible move}abstract listAllMoves(instance,solution)
TwoOptlistAllMoves(instance,solution){ ...}
![Page 202: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/202.jpg)
Flexible And Extensible Designs
86
NeighborhoodConstraint<> constraintslocalSearch(instance,solution,objective){ for each move in listAllMoves(instance,solution): for each constraint in constraints: constraint.check(move) objective.evaluate(instance,solution,move) return best feasible move}abstract listAllMoves(instance,solution)
TwoOptlistAllMoves(instance,solution){ ...}
OrOptlistAllMoves(instance,solution){ ...}
![Page 203: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/203.jpg)
Flexible And Extensible Designs
87
Constraintabstract check(move)
Capacitycheck(move){ ...}
![Page 204: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/204.jpg)
Flexible And Extensible Designs
87
Constraintabstract check(move)
Capacitycheck(move){ ...}
TimeWindowcheck(move){ ...}
MaxDurationcheck(move){ ...}
![Page 205: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/205.jpg)
Designing Tools
88
• Create UML diagrams to model the organization of the code• Generate code from a model
• Once the design is stable• Generate all the code skeleton in one click
• Generate a model from code (hazardous)• Examples
• Visual Paradigm (free community edition)• Enterprise Architect ($$$)• Check with your university / computer science department
![Page 206: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/206.jpg)
Implementation• Document your code and use coherent conventions
• Explain what are the inputs, outputs, main steps• Saves a lot of time when you have to come back to it
• Make your code reusable and extensible• Use the benefits of object-oriented programming• Spend time now, save time tomorrow
• Build on top of existing libraries• Avoid reinventing the wheel
89
![Page 207: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/207.jpg)
Testing• Create simple test cases that check key functionalities
• Unit test cases• E.g., check that the methods to manipulate a solutions are
working• More elaborate test cases
• E.g., solution found by a 2-Opt neighborhood• Profile your code to detect bottlenecks and memory leaks
90
![Page 208: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/208.jpg)
Final product
Development Process
91
Define problem
Relaxation(simplify the problem)
Select approach
Design & Implement
Test & Debug
Benchmark & Profile
Restore relaxationAdjust parameters
Publish paper!
Prototype
![Page 209: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/209.jpg)
LIBRARIES & FRAMEWORKS
92
![Page 210: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/210.jpg)
Vehicle Routing
93
• VROOM (Java) - http://victorpillac.com/vroom/• VROOM-‐Modelling
• Library to manipulate VRP instances• VROOM-‐Heuristics
• Library of common (meta)heuristics• CW, [Adaptive] VNS, [Parallel] [Adaptive] LNS, GRASPx[ILS,ELS]
• VROOM-‐Technicians
• Improved implementations for the TRSP• VROOM-‐jMSA
• Event driven multiple scenario approach for dynamic vehicle routing
![Page 211: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/211.jpg)
Vehicle Routing• VRPH (C++) - https://sites.google.com/site/vrphlibrary/
• Library of heuristics for the VRP• CW, VNS
• Symphony-VRP - https://projects.coin-or.org/SYMPHONY• Exact solver based on the Symphony and Concorde solver
• CVRPSEP - Lysgaard (2004)• Valid inequality generation
• Concorde - http://www.tsp.gatech.edu/concorde.html• Exact solver for the TSP
94
![Page 212: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/212.jpg)
Parallelization• Java
• Since Java 5: java.util.concurrent framework
• Since Java 7: Fork/Join framework
• C++• POSIX Threads (http://computing.llnl.gov/tutorials/pthreads)
• OpenMP (http://computing.llnl.gov/tutorials/openMP)
• Boost.Thread (http://www.boost.org/)
• Python• Parallel Python (http://www.parallelpython.com/)
95
![Page 213: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/213.jpg)
Logging• Java
• Log4J
• java.util.logging package
• C++• Boost Log / Logging
• Log4cpp
• Python• logging module
96
![Page 214: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/214.jpg)
VRPRep Instance Repository
97
• VRPREP Website: http://rhodes.ima.uco.fr/vrprep/web/home• XML schema to describe most vehicle routing problems
• Easy to read for your program• XML data binding: creates the objects for you
• Repository of exiting instances• Possibility to define your own problem
• Tool to generate a sample XML file• Upload your instances
![Page 215: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/215.jpg)
WRAP UP
98
![Page 216: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/216.jpg)
Today We Have Seen ...
99
• Introduction• What is complexity? Why is it important?
• Data structures• How to represent a solution efficiently?
• Algorithmic tricks• What are the main bottlenecks and how to avoid them?
• Parallelization• How do parallel computing work? Why, when, and how to
parallelize?• Software engineering
• How to design flexible and reusable code?• Resources
• How to avoid reinventing the wheel?
![Page 217: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/217.jpg)
Take Away1. Developing efficient optimization algorithms requires careful
software engineering✓ Complexity of the problems at hand✓ Efficient data structures, Algorithmic tricks, Parallelization
2. Invest in developing flexible and extensible code✓ Detailed design, Documentation✓ Will save you time later
3. Use existing libraries and share your code✓ Do not reinvent the wheel✓ Help others (good for your resumé too)
100
![Page 218: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/218.jpg)
Discrete Optimization
101
• Pascal Van Hentenryck - http://www.coursera.org/course/optimization• Online community of thousands of students
• Topics
• Dynamic programming• Constraint programming
• Local search• Linear programming
• Join the challenge to solve TSPs and VRPs!
![Page 219: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/219.jpg)
2nd International Optimisation Summer School
• 12th to 17th January 2014, Kioloa, NSW, Australia• http://www.cse.unsw.edu.au/~tw/school/ • Lectures
• Constraint programming, Integer programming, Column generation
• Modelling• Uncertainty• Vehicle routing, Scheduling, Supply networks• Research skills.
102
![Page 220: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/220.jpg)
NICTA IS DEDICATED TO RESEARCH EXCELLENCE IN ICT AND WEALTH
CREATION FOR AUSTRALIANICTA IS AUSTRALIA'S PRE-EMINENT NATIONAL
ICT RESEARCH CENTRE OF EXCELLENCE
AUSTRALIA’S ICT PHD FACTORY
CONNECTING SMALL BUSINESS AND COMMERCIALISINGTECHNOLOGY
* NICTA ISCREATING NEW BUSINESSES
* NICTA ISTRANSFORMING INDUSTRY
* NICTA ISBUILDING SKILLS AND CAPACITYFOR THE DIGITAL ECONOMY
NICTA TECHNOLOGY IS IN 1.5 BILLION MOBILE PHONES AROUND THE WORLD
17 PARTNERUNIVERSITIES
700OF THE BEST ICTSCIENTISTS AND STUDENTS.
BRISBANE
SYDNEY
CANBERRA
MELBOURNE
Crash-proof code: “One of the world’s top 10 technologies”: MIT.
Making Amazon's business more secure in the cloud.
A global leader in digital audio networking, used at the London 2012 Olympics and the Queen's Jubilee Concert.
Revolutionising pain management through the use of implants in the spinal cord.
25% OFICT PHD STUDENTSIN AUSTRALIA
340 graduates,260 enrolled students, that’s:
NICTA is working with schools to promote opportunities in ICT.
Fleet logistics helping to save 15% of transport costs for Tip Top.
Big Data analytics for the Australian finance sector.
AUDINATE
OPEN KERNEL LABS
SALUDA MEDICAL
Optimising freight pick-ups and deliveries across Australia.
OPTURION
Reduce roadside maintenance costs by $60m using computer vision for Sensis.
Providing cutting edge services and applications for the NBN.
INCREASING PRODUCTIVITY AND PROFIT.
Helping diagnose and treat prostate cancer for Peter Mac Cancer Centre, and helping to build the bionic eye.
Saved water costs by 30% for the Australian dairy industry.
YURUWAREwho have gone onto work for:
11 spin-outs, 5 more in the pipeline... creating highly skilled jobs for Australians.
FOR MORE INFORMATION, CONTACT US ON
including UNSW, UoM, USYD, MOnash, and ANU.
* INFRASTRUCTURE
* FINANCE
* AGRICULTURE
* TRANSPORT
* MEDICINE
![Page 221: VRP2013 - Comp Aspects VRP](https://reader031.fdocuments.us/reader031/viewer/2022013013/5875d3451a28ab8f438b5acf/html5/thumbnails/221.jpg)
References
104
• Crainic, T., Parallel Solution Methods for Vehicle Routing Problems, The Vehicle Routing Problem: Latest Advances and New Challenges, Operations Research/Computer Science Interfaces Volume 43, 2008, pp 171-198
• Groer, C.; Golden, B. & Wasil, E., A library of local search heuristics for the vehicle routing problem, Mathematical Programming Computation, Springer Berlin / Heidelberg, 2010, 2, 79-101
• Irnich, S., Funke, B., & Grünert, T. (2006). Sequential search and its application to vehicle-routing problems. Computers & Operations Research, 33(8), 2405-2429.
• Lysgaard, J.,(2004).CVRPSP: A package of separation routines for the capacitated vehicle routing problem, Working Paper 03–04.
• Pillac, V.; Guéret, C. & Medaglia, A. L. (2012). A parallel matheuristic for the Technician Routing and Scheduling Problem, Optimization Letters, doi:10.1007/s11590-012-0567-4
• Savelsbergh, M. (1992). The vehicle routing problem with time windows: minimizing route duration. INFORMS, 4(2):146–154, doi:10.1287/ijoc.4.2.146.
• Toth, P. and Vigo, D. (2003). The Granular Tabu Search and Its Application to the Vehicle-Routing Problem, INFORMS Journal on Computing15, 333-346;
• Zachariadis, E. E., & Kiranoudis, C. T. (2010). A strategy for reducing the computational complexity of local search-based methods for the vehicle routing problem. Computers & Operations Research, 37(12), 2089-2105.