tutorial constraint programming for the vehicle routing
play

Tutorial: Constraint Programming for the Vehicle Routing Problem - PDF document

See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/256981178 Tutorial: Constraint Programming for the Vehicle Routing Problem (slides) Conference Paper September 2013 CITATIONS READS


  1. Heuristic methods - Construction Savings method (Clarke & Wright 1964) • Calculate S ij for all i , j j • Consider cheapest S ij i • If j can be appended to i – merge them to new i – update all S ij • else – delete S ij • Repeat �������������������� ��������������������������

  2. Improvement Methods 2-opt (3-opt, 4-opt…) • Remove 2 arcs • Replace with 2 others �������������������� ��������������������������

  3. Improvement methods Large Neighbourhood Search = Destroy & Re-create • Destroy part of the solution – Remove visits from the solution • Re-create solution – Use favourite construct method to re-insert customers • If the solution is better, keep it • Repeat �������������������� ��������������������������

  4. Improvement methods Variable Neighbourhood Search • Consider multiple neighbourhoods – 1-move (move 1 visit to another position) – 1-1 swap (swap visits in 2 routes) – 2-2 swap (swap 2 visits between 2 routes) – 2-opt – 3-opt – Or-opt size 2 (move chain of length 2 anywhere) – Or-opt size 3 (chain length 3) – Tail exchange (swap final portion of routes �������������������� ��������������������������

  5. Improvement methods Variable Neighbourhood Search • Consider multiple neighbourhoods • Find local minimum in smallest neighbourhood • Advance to next-largest neighbourhood • Search current neighbourhood – If a change is found, return to smallest neighbourhood – Otherwise, advance to next-largest �������������������� ��������������������������

  6. Genetic Programming • Generate a population of solutions (construct methods) • Evaluate fitness (objective) • Create next generation: – Choose two solutions from population – Combine the two (two ways) – (Mutate) – Produce offspring (calculate fitness) – (Improve) – Repeat until population doubles • Apply selection: – Bottom half “dies” • Repeat �������������������� ��������������������������

  7. Solution Methods .. and the whole bag of tricks • Tabu Search • Simulated Annealing • Ants • Bees • …. �������������������� ��������������������������

  8. Solution Methods What’s wrong with that? • New constraint � new code – Often right in the core • New constraints interact – e.g. Multiple time windows mess up duration calculation • Code is hard to understand, hard to maintain �������������������� ��������������������������

  9. Solution Methods An alternative: Constraint Programming Advantages: • Expressive language for formulating constraints • Each constraint encapsulated • Constraints interact naturally Disadvantages: • Difficulty in representation • Can be slower �������������������� ��������������������������

  10. Constraint Programming Two ways to use constraint programming • Rule Checker • Properly Rule Checker: • Use favourite method to create/improve a solution • Check it with CP – Very inefficient. �������������������� ��������������������������

  11. A CP Model for the VRP �������������������� ��������������������������

  12. A Model for a (Rich) VRP Locations • Fixed locations – where things happen – one for each customer + one for (each?) depot Metrics • Know time T i,j between each location pair i,j • Know cost C i,j between each location pair i,j – Both obey triangle inequality – (Not always true in practice) Commodities • c commodities (e.g. weight, volume, pallets) �������������������� ��������������������������

  13. A Model for a (Rich) VRP Customers • n customers (fixed in this model) – Known demand D i,k of commodity k for customer i – Known “value” V i of customer i – penalty for not servicing – Know Time Windows E i , L i , earliest and latest start times – Know Service time S i �������������������� ��������������������������

  14. A Model for a (Rich) VRP Vehicles • m vehicles / routes (fixed in this model) – Assume 1 route per vehicle • Known Capacity Q j,k for commodity k on vehicle j • Known start location • Know start time • Known end location • Know latest return time �������������������� ��������������������������

  15. Vocabulary • A solution is made up of routes (one for each vehicle) • A route is made up of a sequence of visits • Some visits serve a customer ( customer visit ) (Some tricks) • Each route has a “start visit” and an “end visit” • Start visit is first visit on a route – location is depot • End visit is last visit on a route – location is depot • Also have an additional route – the unassigned route – Where visits live that cannot be assigned �������������������� ��������������������������

  16. Referencing Customers • Each customer has an index in N = {1.. n } • Customers are ‘named’ in CP by their index Routes • Each route has an index in M = {1.. m } • Unassigned route has index 0 • Routes are ‘named’ in CP by their index Visits • Customer visit index same as customer index • Start visit for route k has index n + k ; aka start k • End visit for route k has index n + m + k ; aka end k �������������������� ��������������������������

  17. Vocabulary 1 Route 2 4 Route 1 2 End 3 visits 7 9 5 8 6 Start visits �������������������� ��������������������������

  18. Referencing Sets • N = { 1 .. n } – customers • M = { 1 .. m } – routes • R = M ∪ { 0 } – includes ‘unassigned’ route • S = { n+1 .. n+m } – start visits • E = { n+m+1 .. n+2m } – end visits • V = N ∪ S ∪ E – all visits • V S = N ∪ S – visits that have a sensible successor • V E = N ∪ E – visits that have a sensible predecessor �������������������� ��������������������������

  19. Data We know (note uppercase) The ‘value’ of customer i • V i • D ik Demand by customer i for commodity k Earliest time to start service at i • E i Latest time to start service at i • L i Service time of visit at i • S i • Q jk Capacity of vehicle j for commodity k • T ij Travel time from visit i to visit j • C ij Cost (w.r.t. objective) of travel from i to j �������������������� ��������������������������

  20. Decision Variables Successor variables: s i • s i gives direct successor of i , i.e. the index of the next visit on the route that visits i • s i ∈ V E for i in V S s i = 0 for i in E Predecessor variables p i • p i gives the index of the previous visit in the route • p i ∈ V S for i in V E p i = 0 for i in S • Redundant – but empirical evidence for its use Route variables r i • r i gives the index of the route (vehicle) that visits i • r i ∈ R �������������������� ��������������������������

  21. Example i s i p i r i 1 4 2 2 1 2 1 7 2 Route 2 4 3 8 5 1 4 9 1 2 Route 1 2 5 3 6 1 3 6 5 0 1 7 2 0 2 8 0 3 1 7 9 5 8 9 0 4 2 6 �������������������� ��������������������������

  22. Other variables Accumulation Variables • q ik Quantity of commodity k after visit i Objective cost getting to i • c i For problems with time constraints Arrival time at i • a i Start time at i (time service starts) • t i Departure time at i • d i • Actually, only t i is required, but others allow for expressive constraints �������������������� ��������������������������

  23. Objective Objective is • Minimize – sum of objective ( C ij ) over used arcs, plus – value of unassigned visits • Minimize � � + C V , i s i i S ∈ = i N r 0 ∈ ≠ , 0 i V r i i �������������������� ��������������������������

  24. Basic constraints Path ( S, E, { s i | i ∈ V } ) AllDifferentExceptZero ( { p i | i ∈ V E } ) Accumulate obj. S = + ∀ ∈ c c C i V s i i , s i i Accumulate time S = + ∀ ∈ a d T i V s i i , s i i Time windows ≥ ∀ ∈ t a i V i i ≤ ∀ ∈ t L i V i i ≥ ∀ ∈ t E i V i i �������������������� ��������������������������

  25. Constraints S = + ∀ ∈ ∈ q q Q i V , k C Load s k ik s k i i ≤ ∀ ∈ ∈ q Q i V , k C ik r k i ≥ ∀ ∈ ∈ q 0 i V , k C ik = ∀ ∈ ∈ 0 , q i S k C ik Consistency = ∀ ∈ c 0 i S i S = ∀ ∈ s i i V p i E = ∀ ∈ p i i V s i S = ∀ ∈ r r i V i s i = ∀ ∈ r k k M + n k = ∀ ∈ r k k M �������������������� �������������������������� + + n m k

  26. What can we model? • Basic VRP • VRP with time windows (VRPTW) • Multi-depot • Heterogeneous fleet • Orienteering / Profitable tour problems • Open VRP (vehicle not required to return to base) – Requires anywhere location – Route end visits located at anywhere – distance i � anywhere = 0 • Compatibility – Customers on different / same vehicle – Customers on/not on given vehicle • Pickup and Delivery problems �������������������� ��������������������������

  27. What can we model? • Variable load/unload times – by constraining departure time relative to start time • Dispatch time constraints – e.g. limited docks – e i for i in S is load-start time • Depot close time – Time window on end visits • Fleet size and mix – Add lots of vehicles – Need to introduce a ‘fixed cost’ for a vehicle – C ij is increased by fixed cost for all i ∈ S , all j ∈ N �������������������� ��������������������������

  28. What can’t we model • Can’t handle dynamic problems – Fixed domain for s, p, r vars • Can’t introduce new visits post-hoc – E.g. optional driver break must be allowed at start • Can’t decide how many visits to same customer – ‘Larger than truck-load’ problems – If qty is fixed, can have multiple visits / cust – Heterogeneous fleet is a pain • Can’t handle time- or vehicle-dependent travel times/costs • Soft Constraints �������������������� ��������������������������

  29. Solving the CP �������������������� ��������������������������

  30. Solving Pure CP • Assign to ‘successor’ variables s 1 = 4 1 • Form chains of visits • Decision 1: Which visit to insert 4 • Decision 2: Where to insert it s 2 = 1 2 • ‘Rooted chain’ starts at Start 3 s 7 = 2 • ‘Free chain’ otherwise • Can reason about free chains 7 9 but rooted chains easier s 5 = 3 5 8 6 �������������������� ��������������������������

  31. Propagation – Cycles Subtour elimination • Rooted chains are fine • For free chains: – “ last(j) ” is last visit in chain starting at j – for any chain starting at j , • remove j from s last(j) • Some CP libraries have built-ins – Comet: ‘circuit’ – ILOG: Path constraint �������������������� ��������������������������

  32. Propagation – Cycles ‘Path’ constraint • Propagates subtour elimination • Also propagates cost • path (S, E, succ, P, z) – succ array implies path – ensures path from nodes in S to nodes in E through nodes in P – variable z bounds cost of path – cost propagated incrementally based on shortest / longest paths �������������������� ��������������������������

  33. Propagation – Cost ‘Path’ constraint Maintains sets • Path is consistent if it starts in S , ends in T , goes through P , and has bounds consistent with z • Pos ⊆ P U S U T : Possibly in the path – If no consistent paths use i , then i ∉ Pos • Req ⊆ Pos : Required to be in the path – If there is a consistent path that does not need i , then i ∉ Req • Shortest path in Req � lower bound on z • Longest path in Pos � upper bound on z == Shortest path with –ve costs • Updated incrementally (and efficiently) �������������������� ��������������������������

  34. Simulated Annealing shortcut • leverages cost estimate from Path constraint • std SA: – Generate sol – test delta obj against uniform rand var • improved SA −∂ – generate random var first = T P ( accept) e – calc acceptable obj ∂ < log( ) T x – constrain obj < + ∂ z z * • Much more efficient �������������������� ��������������������������

  35. Propagation – Capacity (assume +ve qtys) Rooted Chain • For each visit i with p i not bound Assume +ve qtys – For each route k in domain of r i • If spare space on route k won’t allow visit i – Remove k from r i – Remove i from p end(k) – Remove i from s last(start(k)) Free chains • As above (pretty much) • Before increasing chain to load L – v = Count routes with free space � L – c = Count free chains with load � L – if c > v , can’t form chain �������������������� ��������������������������

  36. Propagation – Time Time Constraints: Rooted chains: • For each route k – For each visit i in domain of s last(k) • If vehicle can’t reach i before E i – Remove k from r i – Remove i from s last(start(k)) Free chains: • Form “implied time window” from chain • Rest is as above �������������������� ��������������������������

  37. Savings Note: • Clarke-Wright “Savings” method grows chains of visits • Very successful early method • Still used in many methods for an initial solution • Very appropriate for CP �������������������� ��������������������������

  38. A gotchya: Chronological backtracking Assign a successor 1 4 s 2 = 4 2 3 s 7 = 2 7 9 5 8 6 �������������������� ��������������������������

  39. A gotchya: Chronological backtracking Assign a successor Can’t re-assign 1 • Domains can only shrink 4 s 2 = 1 2 3 s 7 = 2 7 9 5 8 6 �������������������� ��������������������������

  40. A gotchya: Chronological backtracking Assign a successor s 1 = [2,3,4,5,8,9] 1 s 2 = [1,3,4,5] s 3 = [1,2,4,5,8,9] 4 s 4 = [1,3,5,9] s 5 = [1,2,3,4,8,9] 2 s 6 = [1,3,5,8] 3 s 7 = [1,2,3,5] s 8 = [0] 7 9 s 9 = [0] 5 8 6 �������������������� ��������������������������

  41. A gotchya: Chronological backtracking Assign a successor s 1 = [3,4,5] 1 s 2 = [1,3,5] s 3 = [1,2,4,5,8,9] 4 s 4 = [3,5,9] s 5 = [1,2,3,4,8,9] 2 s 6 = [3,5,8] 3 s 7 = [2,3,5] s 8 = [0] 7 9 s 9 = [0] 5 8 6 �������������������� ��������������������������

  42. A gotchya: Chronological backtracking Assume: T i,j = 1 for all i, j TWs for 1-5 are are [1-3] 1 a 1 = [1,2,3] a 2 = [1,2] 4 a 3 = [1,2,3] a 4 = [2,3] 2 a 5 = [1,2,3] 3 a 6 = [0] a 7 = [0] 7 9 a 8 = [0,1,2,3,4] 5 8 a 9 = [3,4] 6 �������������������� ��������������������������

  43. A gotchya: Chronological backtracking Assume: T i,j = 1 for all i, j TWs for 1-5 are are [1-3] 1 a 1 = [2] a 2 = [1] 4 a 3 = [1,2,3] a 4 = [3] 2 a 5 = [1,2,3] 3 a 6 = [0] a 7 = [0] 7 9 a 8 = [0,1,2,3,4] 5 8 a 9 = [4] 6 �������������������� ��������������������������

  44. Propagation – an alternative • Alternative relies on knowledge of “incumbent” solution • Use shared data structure • Can use full insertion (insert into middle of ‘chain’) CP System Var/value choice Incumbent Solution Propagators �������������������� ��������������������������

  45. Propagation Insertion ‘in the middle’ • Propagators know incumbent solution 1 • Only propagate non-binding 3 implications 4 • e.g. don’t “set” s 1 s 2 here: • But 1 is removed from s 4 , s 6 • Can calculate earliest start, latest start to bound start time • Can calculate feasible inserts, and 2 update s vars appropriately 7 9 • Strong propagation for capacity, time 8 constraints 6 �������������������� ��������������������������

  46. Example (1 cdty) R1 R2 R3 R4 R5 R6 R7 R8 R9 D i 10 10 10 10 10 0 0 0 0 20 20 20 20 20 0 0 0 20 E i 1 L i 150 65 150 150 150 200 200 200 200 4 S i 10 10 10 10 10 10 10 10 10 V1 V2 3 2 Q k 30 30 + Request Compatibility Different Routes: R2, R4 8 6 7 5 9 �������������������� ��������������������������

  47. Initial R1 R2 R3 R4 R5 R6 R7 R8 R9 0,1, 0-2 s i 0,2-5, 0-3,5, 0-4, 1-5, 8 1-5 0 0 3-5,8,9 4,5,8,9 8,9 8,9 8,9 r i 0,1,2 0,1,2 0,1,2 0,1,2 0,1,2 1 2 1 2 20- 20-65 20- 20- 20- 0 0 0-200 0-200 t i 150 150 150 150 q i 0-30 0-30 0-30 0-30 0-30 0 0 0-30 0-30 1 4 3 2 �������������������� �������������������������� 5 9 7 8 6

  48. Initial R1 R2 R3 R4 R5 R6 R7 R8 R9 0,1, 0-2 s i 0,2-5, 0-3,5, 0-4, 1-5, 8 1-5 0 0 3-5,8,9 4,5,8,9 8,9 8,9 8,9 r i 0,1,2 0,1,2 0,1,2 0,1,2 0,1,2 1 1 2 2 51- 32-65 42- 50- 30- 0 0 0-200 0-200 t i 150 150 150 150 q i 0-30 0-30 0-30 0-30 0-30 0 0 0-30 0-30 1 4 Initial propagations (arrive time) 3 2 �������������������� �������������������������� 5 9 7 8 6

  49. Initial R1 R2 R3 R4 R5 R6 R7 R8 R9 0, 0,1, 0-2 0,1 0,1 s i 1-5, 8 1-5 0 0 3-5,8,9 3-5,8,9 4,5,8,9 3,5,8,9 3,4,8,9 0,1,2 0,1,2 0,1,2 0,1,2 0,1,2 1 1 2 2 r i t i 51- 32-65 42- 50- 30- 0 0 0-200 0-200 150 150 150 150 q i 0-30 0-30 0-30 0-30 0-30 0 0 0-30 0-30 1 4 Initial propagations (time windows) 3 2 �������������������� �������������������������� 5 9 7 8 6

  50. Initial R1 R2 R3 R4 R5 R6 R7 R8 R9 0, 0,1, 0-2 0,1 0,1 s i 1-5, 8 1-5 0 0 3-5,8,9 3,5,8,9 4,5,8,9 3,5,8,9 3,4,8,9 0,1,2 0,1,2 0,1,2 0,1,2 0,1,2 1 1 2 2 r i t i 51- 32-65 42- 50- 30- 0 0 0-200 0-200 150 150 150 150 q i 0-30 0-30 0-30 0-30 0-30 0 0 0-30 0-30 1 4 Initial propagations (compatibility 3 constraint) 2 �������������������� �������������������������� 5 9 7 8 6

  51. Choose R5 after R7 (start V2) R1 R2 R3 R4 R5 R6 R7 R8 R9 0, 0,1, 0-2 0,1 0,1 s i 1-5, 8 1-5 0 0 3-5,8,9 3,5,8,9 4,5,8,9 3,5,8,9 3,4,8,9 0,1,2 0,1,2 0,1,2 0,1,2 0,1,2 1 1 2 2 r i t i 51- 32-65 42- 50- 30- 0 0 0-200 0-200 150 150 150 150 q i 0-30 0-30 0-30 0-30 0-30 0 0 0-30 0-30 1 4 3 2 �������������������� �������������������������� 5 9 7 8 6

  52. Choose R5 after R7 (start V2) R1 R2 R3 R4 R5 R6 R7 R8 R9 0, 0,1, 0-2 0,1 0,1 s i 1-4, 8 1-5 0 0 3-5,8,9 3,5,8,9 4,5,8,9 3,5,8,9 3,4,8,9 0,1,2 0,1,2 0,1,2 0,1,2 0,1,2 1 1 2 2 r i t i 51- 32-65 42- 50- 30- 0 0 0-200 0-200 150 150 150 150 q i 0-30 0-30 0-30 0-30 0-30 0 0 0-30 0-30 1 4 Propagate successor implications 3 2 �������������������� �������������������������� 5 9 7 8 6

  53. Choose R5 after R7 (start V2) R1 R2 R3 R4 R5 R6 R7 R8 R9 0, 0,1, 0-2 0,1 0,1 s i 1-4, 8 1-5 0 0 3-5,8,9 3,5,8,9 4,5,8,9 3,5,8,9 3,4,9 0,1,2 0,1,2 0,1,2 0,1,2 0,1,2 1 1 2 2 r i t i 51- 32-65 42- 50- 30- 0 0 0-200 60- 150 150 150 150 200 q i 0-30 0-30 0-30 0-30 10-30 0 0 0-30 10-30 1 4 Propagate changes to time and 3 load 2 �������������������� �������������������������� 5 9 7 8 6

  54. Choose R5 after R7 (start V2) R1 R2 R3 R4 R5 R6 R7 R8 R9 0, 0,1, 0-2 0,1 0,1 s i 1-4, 8 1-5 0 0 3-5,8,9 3,5,8,9 4,5,8,9 3,5,8,9 3,4,9 0,1,2 0,1,2 0,1,2 0,1,2 0,1,2 1 1 2 2 r i t i 51- 32-65 42- 50- 30- 0 0 0-200 60- 150 150 150 150 200 q i 0-30 0-30 0-30 0-30 10-30 0 0 0-30 10-30 1 4 Bind route var 3 2 �������������������� �������������������������� 5 9 7 8 6

  55. Choose R2 after R7 (start V2) R1 R2 R3 R4 R5 R6 R7 R8 R9 0, 0,1, 0-2 0,1 0,1 s i 1-4, 8 1-5 0 0 3-5,8,9 3,5,8,9 4,5,8,9 3,5,8,9 3,4,9 0,1,2 0,1,2 0,1,2 0,1,2 2 1 1 2 2 r i t i 51- 32-65 42- 50- 30- 0 0 0-200 60- 150 150 150 150 200 q i 0-30 0-30 0-30 0-30 10-30 0 0 0-30 10-30 1 4 3 2 �������������������� �������������������������� 5 9 7 8 6

  56. Choose R2 after R7 (start V2) R1 R2 R3 R4 R5 R6 R7 R8 R9 0, 0-2 0,1 s i 1,3,5 1,3,4, 1,3,4, 1-4 0 0 3-5,8,9 4,5,8,9 3,5,8,9 9 8 r i 0,1,2 0,1,2 0,1,2 0,1,2 2 1 1 2 2 51- 32-65 42- 50- 30- 0 0 0-200 60- t i 150 150 150 150 200 q i 0-30 0-30 0-30 0-30 10-30 0 0 0-30 10-30 1 4 Propagate successor implications 3 2 �������������������� �������������������������� 5 9 7 8 6

  57. Choose R2 after R7 (start V2) R1 R2 R3 R4 R5 R6 R7 R8 R9 0, 0-2 0,1 s i 1,3,5 1,3,4, 1,3,4, 1-4 0 0 3-5,8,9 4,5,8,9 3,5,8,9 9 8 r i 0,1,2 0,1,2 0,1,2 0,1,2 2 1 1 2 2 51- 32-65 42- 50- 78- 0 0 0-200 118- t i 150 150 150 150 200 q i 0-30 10-30 0-30 0-30 20-30 0 0 0-30 20-30 1 4 Update load and time 3 2 �������������������� �������������������������� 5 9 7 8 6

  58. Choose R2 after R7 (start V2) R1 R2 R3 R4 R5 R6 R7 R8 R9 0, 0-2 0,1 s i 1,3,5 1,3,4, 1,3,4, 1-4 0 0 3-5,8,9 4,5,8,9 3,5,8,9 9 8 r i 0,1,2 0,1,2 0,1,2 0,1,2 2 1 1 2 2 51- 32-65 42- 50- 78- 0 0 0-200 118- t i 150 150 150 150 200 q i 0-30 10-30 0-30 0-30 20-30 0 0 0-30 20-30 1 4 Bind route var 3 2 �������������������� �������������������������� 5 9 7 8 6

  59. Choose R2 after R7 (start V2) R1 R2 R3 R4 R5 R6 R7 R8 R9 0, 0-2 s i 1,3,5 0,1,3, 1,3,4, 1,3,4, 1-3 0 0 3-5,8,9 4,5,8,9 8 9 8 r i 0,1,2 2 0,1,2 0,1,2 2 1 1 2 2 51- 32-65 42- 50- 78- 0 0 0-200 118- t i 150 150 150 150 200 q i 0-30 10-30 0-30 0-30 20-30 0 0 0-30 20-30 1 4 Propagate request compatibility 3 constraint 2 �������������������� �������������������������� 5 9 7 8 6

  60. Choose R3 after R2 R1 R2 R3 R4 R5 R6 R7 R8 R9 0, 0-2 s i 1,3,5 0,1,3, 1,3,9 1,3,4, 1-3 0 0 3-5,8,9 4,5,8,9 8 8 r i 0,1,2 2 0,1,2 0,1 2 1 1 2 2 51- 32-65 42- 50- 78- 0 0 0-200 118- t i 150 150 150 150 200 q i 0-30 10-30 0-30 0-30 20-30 0 0 0-30 20-30 4 1 3 2 �������������������� �������������������������� 5 9 7 8 6

  61. Choose R3 after R2 R1 R2 R3 R4 R5 R6 R7 R8 R9 0, s i 1,3,5 1,4,5 0,1,3, 1,3,9 1,3,4, 1,2 0 0 3-5,8,9 8 8 r i 0,1,2 2 0,1,2 0,1 2 1 1 2 2 51- 32-65 42- 50- 78- 0 0 0-200 118- t i 150 150 150 150 200 q i 0-30 10-30 0-30 0-30 20-30 0 0 0-30 20-30 4 1 Propagate successor implications 3 2 �������������������� �������������������������� 5 9 7 8 6

  62. Choose R3 after R2 R1 R2 R3 R4 R5 R6 R7 R8 R9 0, s i 1,3 1,4,5 0,1,3, 1,9 1,4,8 1,2 0 0 3-5,8,9 8 r i 0,1,2 2 0,1,2 0,1 2 1 1 2 2 51- 32-65 62- 50- 102- 0 0 0-200 142- t i 150 110 150 150 200 q i 0-30 10-30 20-30 0-30 30 0 0 0-30 30 4 1 Update time and load 3 2 �������������������� �������������������������� 5 9 7 8 6

  63. V1 schedule �������������������� ��������������������������

  64. Choose R3 after R2 R1 R2 R3 R4 R5 R6 R7 R8 R9 0, s i 1,3 1,4,5 0,1,3, 1,9 1,4,8 1,2 0 0 3-5,8,9 8 r i 0,1,2 2 0,1,2 0,1 2 1 1 2 2 51- 32-65 62- 50- 102- 0 0 0-200 142- t i 150 110 150 150 200 q i 0-30 10-30 20-30 0-30 30 0 0 0-30 30 4 1 Bind route var 3 2 �������������������� �������������������������� 5 9 7 8 6

  65. Choose R3 after R2 R1 R2 R3 R4 R5 R6 R7 R8 R9 0, s i 1,3 1,4,5 0,1,3, 1,9 1,4,8 1,2 0 0 3-5,8,9 8 r i 0,1,2 2 2 0,1 2 1 1 2 2 51- 32-65 62- 50- 102- 0 0 0-200 142- t i 150 110 150 150 200 q i 0-30 10-30 20-30 0-30 30 0 0 0-30 30 4 1 Propagate request incompatibility 3 constraint 2 �������������������� �������������������������� 5 9 7 8 6

  66. Choose R3 after R2 R1 R2 R3 R4 R5 R6 R7 R8 R9 s i 0,4,8 1,3 5 0,1,8 1,9 1,4,8 1,2 0 0 0,1,2 2 2 0,1 2 1 1 2 2 r i t i 51- 32-65 62- 50- 102- 0 0 0-200 142- 150 110 150 150 200 0-30 10-30 20-30 0-30 30 0 0 0-30 30 q i 4 1 Propagate effects of full load 3 2 �������������������� �������������������������� 5 9 7 8 6

  67. Choose R4 after R6 (start V1) R1 R2 R3 R4 R5 R6 R7 R8 R9 s i 0,4,8 3 5 0,1,8 9 1,4,8 2 0 0 0,1 2 2 0,1 2 1 1 2 2 r i t i 51- 32-65 62- 50- 102- 0 0 0-200 142- 150 110 150 150 200 0-30 10-30 20-30 0-30 30 0 0 0-30 30 q i 4 1 3 2 �������������������� �������������������������� 5 9 7 8 6

  68. Choose R4 after R6 (start V1) R1 R2 R3 R4 R5 R6 R7 R8 R9 s i 0,4,8 3 5 0,1,8 9 1,4,8 2 0 0 0,1 2 2 0,1 2 1 1 2 2 r i t i 51- 32-65 62- 50- 102- 0 0 0-200 142- 150 110 150 150 200 0-30 10-30 20-30 0-30 30 0 0 0-30 30 q i 4 1 Propagate successor implications 3 2 �������������������� �������������������������� 5 9 7 8 6

  69. Choose R4 after R6 (start V1) R1 R2 R3 R4 R5 R6 R7 R8 R9 s i 0,4,8 3 5 1,8 9 1,4 2 0 0 0,1 2 2 0,1 2 1 1 2 2 r i t i 51- 32-65 62- 50- 102- 0 0 110- 142- 150 110 140 150 200 200 0-30 10-30 20-30 10-30 30 0 0 10-30 30 q i 4 1 Update time and load 3 2 �������������������� �������������������������� 5 9 7 8 6

  70. Choose R4 after R6 (start V1) �������������������� ��������������������������

  71. Choose R4 after R6 (start V1) R1 R2 R3 R4 R5 R6 R7 R8 R9 s i 0,4,8 3 5 1,8 9 1,4 2 0 0 0,1 2 2 0,1 2 1 1 2 2 r i t i 51- 32-65 62- 50- 102- 0 0 110- 142- 150 110 140 150 200 200 0-30 10-30 20-30 10-30 30 0 0 10-30 30 q i 4 1 Bind route var 3 2 �������������������� �������������������������� 5 9 7 8 6

  72. Choose R1 after R4 R1 R2 R3 R4 R5 R6 R7 R8 R9 s i 0,4,8 3 5 1,8 9 1,4 2 0 0 0,1 2 2 1 2 1 1 2 2 r i t i 51- 32-65 62- 50- 102- 0 0 110- 142- 150 110 140 150 200 200 0-30 10-30 20-30 10-30 30 0 0 10-30 30 q i 4 1 3 2 �������������������� �������������������������� 5 9 7 8 6

  73. Choose R1 after R4 R1 R2 R3 R4 R5 R6 R7 R8 R9 s i 0,4,8 3 5 1,8 9 1,4 2 0 0 0,1 2 2 1 2 1 1 2 2 r i t i 51- 32-65 62- 50- 102- 0 0 110- 142- 150 110 140 150 200 200 0-30 10-30 20-30 10-30 30 0 0 10-30 30 q i 4 1 Propagate successor implications 3 2 �������������������� �������������������������� 5 9 7 8 6

  74. Choose R1 after R4 R1 R2 R3 R4 R5 R6 R7 R8 R9 s i 8 3 5 1 9 4 2 0 0 0,1 2 2 1 2 1 1 2 2 r i t i 70- 32-65 62- 50- 102- 0 0 131- 142- 139 110 119 150 200 200 20-30 10-30 20-30 10-30 30 0 0 20-30 30 q i 4 1 Update load and time, and route 3 var 2 �������������������� �������������������������� 5 9 7 8 6

Recommend


More recommend