Outline Integer Programming DMP204 SCHEDULING, TIMETABLING AND ROUTING Lecture 25 Vehicle Routing 1. Integer Programming Mathematical Programming Marco Chiarandini 2 Outline Integer Programming Basic Models Integer Programming arc flow formulation integer variables on the edges counting the number of time it is traversed one, two or three index variables 1. Integer Programming set partitioning formulation multi-commodity network flow formulation for VRPTW integer variables representing the flow of commodities along the paths traveled by the vehicles and integer variables representing times 3 4
Integer Programming Integer Programming Two index arc flow formulation One index arc flow formulation � � (1) min c ij x ij i ∈ V j ∈ V � � min c e x e (8) s.t. x ij = 1 ∀ j ∈ V \ { 0 } (2) e ∈ E i ∈ V � � s.t. x e = 2 ∀ i ∈ V \ { 0 } (9) x ij = 1 ∀ i ∈ V \ { 0 } (3) e ∈ δ ( i ) j ∈ V � � x e = 2K (10) x i0 = K (4) e ∈ δ ( 0 ) i ∈ V � � x e ≥ 2r ( S ) ∀ S ⊆ V \ { 0 } , S � = ∅ (11) x 0j = K (5) e ∈ δS j ∈ V � � x e ∈ { 0, 1 } ∀ e �∈ δ ( 0 ) (12) x ij ≥ r ( S ) ∀ S ⊆ V \ { 0 } , S � = ∅ (6) x e ∈ { 0, 1, 2 } ∀ e ∈ δ ( 0 ) (13) i ∈ S i �∈ S x ij ∈ { 0, 1 } ∀ i, j ∈ V (7) 5 6 Integer Programming Integer Programming What can we do with these integer programs? Three index arc flow formulation K plug them into a commercial solver and try to solve them � � � c ij x ijk (14) min preprocess them i ∈ V j ∈ V k = 1 determine lower bounds K � s.t. y ik = 1 ∀ i ∈ V \ { 0 } (15) solve the linear relaxation combinatorial relaxations k = 1 relax some constraints and get an easy solvable problem K � y 0k = 1 (16) Lagrangian relaxation polyhedral study to tighten the formulations k = 1 � � ∀ i ∈ V, k = 1, . . . , K (17) x ijk = x jik = y ik upper bounds via heuristics j ∈ V j ∈ V branch and bound � d i y ik ≤ C ∀ k = 1, . . . , K (18) cutting plane i ∈ V branch and cut � � x ijk ≥ y hk ∀ S ⊆ V \ { 0 } , h ∈ S, k = 1, 1, . . . , K (19) column generation (via reformulation) i ∈ S i �∈ S branch and price y ik ∈ { 0, 1 } ∀ i ∈ V, k = 1, . . . , K (20) Dantzig Wolfe decomposition x ijk ∈ { 0, 1 } ∀ i, j ∈ V, k = 1, . . . , K (21) upper bounds via heuristics 7 8
Combinatorial Relaxations Integer Programming Integer Programming Lower bounding via combinatorial relaxations Relax: capacity cut constraints (CCC) relax in two index flow formulation: or generalized subtour elimination constraints (GSEC) Consider both ACVRP and SCVRP � � min c ij x ij Relax CCC in 2-index formulation i ∈ V j ∈ V obtain a transportation problem � s.t. x ij = 1 ∀ j ∈ V \ { 0 } Solution may contain isolated circuits and exceed vertex capacity i ∈ V � x ij = 1 ∀ i ∈ V \ { 0 } Relax CCC in 1-index formulation j ∈ V � obtain a b-matching problem x i0 = K i ∈ V � � min c e x e x 0j = K e ∈ E j ∈ V � s.t. x e = b i ∀ i ∈ V { 0 } � � x ij ≥ r ( S ) 1 ∀ S ⊆ V \ { 0 } ,S � = ∅ e ∈ δ ( i ) i ∈ S i �∈ S x e ∈ { 0,1 } ∀ e �∈ δ ( 0 ) x ij ∈ { 0,1 } ∀ i,j ∈ V x e ∈ { 0,1,2 } ∀ e ∈ δ ( 0 ) K-shortest spanning arborescence problem Solution has same problems as above 9 10 Integer Programming Branch and Cut Integer Programming relax in two index formulation � c e x e min � (22) e ∈ E min c e x e � e ∈ E ∀ i ∈ V \ { 0 } s.t. x e = 2 � ∀ i ∈ V \ { 0 } (23) s.t. x e = 2 e ∈ δ ( i ) e ∈ δ ( i ) � x e = 2K � x e = 2K (24) e ∈ δ ( 0 ) e ∈ δ ( 0 ) � x e ≥ 2 ⌈ d ( S ) � x e ≥ 2r ( S ) ∀ S ⊆ V \ { 0 } , S � = ∅ C ⌉ ∀ S ⊆ V \ { 0 } ,S � = ∅ (25) e ∈ δS e ∈ δS x e ∈ { 0,1 } ∀ e �∈ δ ( 0 ) (26) x e ∈ { 0, 1 } ∀ e �∈ δ ( 0 ) x e ∈ { 0,1,2 } ∀ e ∈ δ ( 0 ) (27) K-tree: min cost set of n + K edges spanning the graph with degree 2K at the depot. Lagrangian relaxation of the sub tour constraints iteratively added after violation recognized by separation procedure. Subgradient optimization for the multipliers. 11 12
Branch and Cut Integer Programming Integer Programming Problems with B&C: Let LP ( ∞ ) be linear relaxation of IP i) no good algorithm for the separation phase z LP ( ∞ ) ≤ z IP it may be not exact in which case bounds relations still hold and we can go on with branching Problems if many constraints ii) number of iterations for cutting phase is too high Solve LP ( h ) instead and add constraints later iii) program unsolvable because of size If LP ( h ) has integer solution then we are done, that is optimal If not, then z LP ( h ) ≤ z LP ( h + 1 ) ≤ z LP ( ∞ ) ≤ z IP iv) the tree explodes The main problem is (iv). Crucial step: separation algorithm given a solution to LP ( h ) it tell Worth trying to strengthen the linear relaxation by inequalities that us if some constraints are violated. although unnecessary in the integer formulation force the optimal If the procedure does not return an integer solution we proceed by branch solution of LP and IP to get closer. ➨ Polyhedral studies and bound 13 14 Set Covering Formulation Integer Programming Integer Programming Solving the SCP integer program R = { 1, 2, . . . , R } index set of routes � 1 Branch and bound if costumer i is served by r a ir = otherwise 0 Generate routes such that: � if route r is selected 1 they are good in terms of cost x r = 0 otherwise they reduce the potential for fractional solutions � constraint branching [Ryan, Foster, 1981] min c r x r (28) r ∈R � � ∃ constraints r 1 , r 2 : 0 < x j < 1 s.t. a ir x r ≥ 1 ∀ i ∈ V (29) j ∈ J ( r 1 ,r 2 ) r ∈R � x r ≤ K (30) J ( r 1 , r 2 ) all columns covering r 1 , r 2 simultaneously. Branch on: r ∈R / \ x r ∈ { 0, 1 } ∀ r ∈ R (31) � � x j ≤ 0 x j ≥ 1 (32) j ∈ J ( r 1 ,r 2 ) j ∈ J ( r 1 ,r 2 ) 15 16
Integer Programming Convergence in CG Integer Programming Solving the SCP linear relaxation Column Generation Algorithm Step 1 Generate an initial set of columns R ′ Step 2 Solve problem P ′ and get optimal primal variables, ¯ x , and π, ¯ optimal dual variables, ( ¯ θ ) Step 3 Solve problem CG, or identify routes r ∈ R satisfying ¯ c r < 0 c r < 0 add the column r to R ′ and Step 4 For every r ∈ R with ¯ go to Step 2 Step 5 If no routes r have ¯ c r < 0 , i.e., ¯ c min ≥ 0 then stop. In most of the cases we are left with a fractional solution [plot by Stefano Gualandi, Milan Un.] 17 18 Integer Programming Integer Programming Cuts Solving the SCP integer program: Intersection graph G = ( V, E ) where V are the routes and E is made by the links between routes that intercept cutting plane Independence set in G is a collection of routes where each customer is branch and price visited only once. Clique constraints Cutting Plane Algorithm Step 1 Generate an initial set R ′ of columns � x r ≤ 1 ∀ cliques K of G ¯ Step 2 Solve, using column generation, the problem P ′ (linear r ∈ K programming relaxation of P ) Cliques searched heuristically Step 3 If the optimal solution to P ′ is integer stop. Else, generate cutting plane separating this fractional Odd holes solution. Odd hole: odd cycle with no chord Add these cutting planes to the linear program P ′ � x r ≤ | H | − 1 Step 4 Solve the linear program p ′ . Goto Step 3. ∀ odd holes H ¯ 2 r ∈ H Is the solution to this procedure overall optimal? Generation via layered graphs 19 20
Integer Programming Integer Programming Branch and price it must be possible to incorporate information on the node in the column generation procedure easy to incorporate x r = 1 , just omit nodes in S r from generation; but not clear how to impose x r = 0 . different branching: on the edges: x ij = 1 then in column generation set c ij = − ∞ ; if x ij = 0 then c ij = ∞ [illustration by Stefano Gualandi, Milan Un.] (the pricing problem is for a GCP) 21 22 Integer Programming Implementation details throw out from LP columns that have not been basic for a long time good procedures to generate good columns generate columns that are disjoint, collectively exhaustive and of minimal cost 23
Recommend
More recommend