Solving the Vehicle Routing Problem with Multiple Multi

advertisement
Solving the Vehicle Routing
Problem with
Multiple Multi-Capacity
Vehicles
Michael Sanders
Overall Goals
 Create a program that given:
 List of delivery points
 Number and capacity of vehicles
 Working route finder
 Return a list of routes that efficiently
utilizes vehicles
 Efficiency defined as distance traveled
over product delivered
Scope
 Select/develop a working heuristic for
solution finder
 Several possibilities from previous research
 Decided on a genetic algorithm
Previous Research
 Vehicle Routing Problem (VRP)
 Extensively researched
 Solutions
 Agent architecture
 Used agents to represent vehicles and “auctioneer”
that assigned customers to routes
 Ant colony optimization
 Could solve variants of VRP
Variants of VRP
 Variants
 VRP with Time Windows (VRPTW)
 Requires deliveries to be in specific time ranges
for each delivery
 Multi-Depot VRP (MDVRP)
 Multiple origins for vehicles
Components
 Route finder
 Given two intersections, find shortestdistance route between the two
 Not necessarily fastest route
 Would need speed limit data
 Solution finder
 Using list of delivery points and quantity to
be delivered, utilizes other component to
most efficiently deliver the product
Route Finder
 Had attempted to write own route finder
program
 Failed due to data reliability
 Researched free commercial options
Solution Creator
 Uses three types of genetic operations to
find better solutions
 Creates a set of Route objects
 Each has unique vehicle assigned
 The whole set has deliveries to entire
customer list
 Route objects are “genes” that are
operated on
Genetic Operations
 Swap
 Two deliveries on two
different routes are
switched
 Randomize
 The points on a route
are randomly
reordered
Genetic Operations
 Insert
 A delivery point from one route is deleted
from that route and added to another
Testing
 Following slide will show percentages
 Percentages represent the final solution’s
total distance traveled, as a percentage
of the original, randomly-created
solution’s total distance traveled
10,000 Generations
Swap
Insert
Rand.
Swap
+Insert
Swap
+Rand.
Insert
+Rand. All
0.921
0.833
0.93
0.89
0.933
0.884
0.901
0.92
0.875
0.92
0.915
0.901
0.894
0.904
0.905
0.863
0.938
0.892
0.937
0.924
0.913
0.935
0.862
0.945
0.85
0.89
0.944
0.929
0.92025 0.85825 0.93325 0.88675 0.91525
0.9115 0.91175
Test Code
gen_algs
gen_algs
gen_algs
gen_algs
gen_algs
gen_algs
gen_algs
gen_algs
gen_algs
gen_algs
$swap1, true, false, false
$rand1, false, false, true
$swapRand1,true, false, true
$insertRand1,false, true, true
$insert1,false, true, false
$insert2,false, true, false
$swapInsert1,true, true, false
$swapInsert2,true, true, false
$all1, true, true, true
$all2, true, true, true
Results
 Most efficient method:
 Use two arrays using insert method
 Average of 85.75% distance traveled versus
original solution
Other Information
 Language
 Ruby
 Problems
 Route finder
 Data not completely standardized
Main Points
 Optimum answer not necessarily goal
 Finding optimum is too time-intensive
 Drivers have personal knowledge of routes
and can adapt as necessary
 More genetic operations are not
necessarily better
 Using all genetic operations usually resulted
in moderate results
Extensions
 Addition of working route finder
 Will result in fully functional program
 Further optimization of genetic algorithms
 Increase or decrease chance of mutation
 Implement different operations
Download