Chapter 9 Branch and Bound Methods 1. Motivations: n n i 1 i 1 n /1// T , n /1// Li , or n /1// i (Ci ) Tree organization Complete search tree ( Ignore the dash lines. ) The difference between Traversal Technique and Branch and Bound method Traversal Technique: FIFO, LIFO Branch and Bound method: FIFO, LIFO, Least cost search XXXX 1 5 1234 7 6 12XX 17 2 1XXX 18 1243 13XX 19 1324 14XX 21 20 1342 1423 22 1432 10 9 21XX 23XX 2134 24 2143 25 2314 3 2XXX 8 23 XXXX 26 2341 12 11 24XX 27 2413 31XX 28 29 2431 3124 4 3XXX 30 3142 32XX 34XX 31 32 33 34 3214 3412 3241 15 14 13 41XX 35 3421 4123 Depth-first traversal (LIFO) 1 4XXX 16 42XX 36 4132 5 43XX 7 6 21XX 21 22 23 24 17 18 19 20 4212 4312 1234 1324 4321 23XX 14XX 39 40 1243 10 9 13XX 25 3 2XXX 8 12XX 37 38 4231 2 1XXX 26 1342 1423 1432 2134 2143 2314 2341 24XX 27 28 4 3XXX 11 12 14 31XX 32XX 34XX 29 30 31 32 33 34 13 2413 2431 3124 3142 3214 3241 3412 4XXX 15 16 41XX 42XX 43XX 35 36 37 38 39 40 3421 4123 4132 4212 4231 4312 4321 LIFO Branch and Bound method (all children of a expanding node are generated.) 5 The difference between Traversal Technique and Branch and Bound method Traversal Technique: FIFO (queue), LIFO (stack) Branch and Bound method: FIFO, LIFO, Least cost search XXXX 1 5 1234 7 6 12XX 17 2 1XXX 18 1243 13XX 19 1324 14XX 21 20 1342 1423 22 1432 10 9 21XX 23XX 2134 24 2143 25 2314 3 2XXX 8 23 XXXX 26 2341 12 11 24XX 27 2413 31XX 28 29 2431 3124 4 3XXX 30 3142 32XX 34XX 31 32 33 34 3214 3412 3241 15 14 13 41XX 35 3421 4123 Depth-first traversal (LIFO) 1 4XXX 16 42XX 36 4132 5 43XX 7 6 21XX 21 22 23 24 17 18 19 20 4212 4312 1234 1324 4321 23XX 14XX 39 40 1243 10 9 13XX 25 3 2XXX 8 12XX 37 38 4231 2 1XXX 26 1342 1423 1432 2134 2143 2314 2341 24XX 27 28 4 3XXX 11 12 14 31XX 32XX 34XX 29 30 31 32 33 34 13 2413 2431 3124 3142 3214 3241 3412 4XXX 15 16 41XX 42XX 43XX 35 36 37 38 39 40 3421 4123 4132 4212 4231 4312 4321 LIFO Branch and Bound method (all children of a expanding node are generated.) 6 iteration 1 iteration 4 iteration 2 iteration 3 iteration 5 queue 7 iteration 6 iteration 7 iteration 8 iteration 9 iteration 10 iteration 11 iteration 12 8 iteration 1 iteration 2 iteration 3 stack 9 iteration 4 Iteration 7 iteration 5 iteration 8 iteration 6 (Node 11 is bounded.) iteration 9 iteration 10 10 FIFO, LIFO: search direction is independent of problem instance. Least-cost search: search direction is dependent on problem instance. 11 (ii) Elimination techniques: (feasiblity test) Minimize f ( x1, x2, x3, … ,xn ) s.t. constraints (a) For a leaf node X = ( x1, x2, x3, … , xn ) f ( x1 , x 2 , C( X ) , x n ) for any feasible X ( x1, x 2 , , xn ) for each infeasible node X. Usually, we do not know this value before we explore the subtree with root X. X C(X) minmum cost in the subtree of X 12 A 4/3/P/Cmax Flow-Shop: 1 5 2 1XXX 7 6 12XX 17 XXXX 13XX 18 19 14XX 20 21 22 10 8 9 21XX 23XX 23 24 25 3 2XXX 26 12 11 24XX 27 31XX 28 29 4 3XXX 32XX 30 31 34XX 32 15 14 13 33 4XXX 41XX 34 35 16 42XX 36 37 43XX 38 39 40 123X 124X 132X 134X 142X 143X 213X 214X 231X 234X 241X 243X 312X 314X 321X 324X 341X 342X 412X 413X 421X 423X 431X 432X 1234 1243 1324 1342 1423 1432 2134 2143 2314 2341 2413 2431 3124 3142 3214 3241 3412 3421 4123 4132 4213 4231 4312 4321 (i) Tree organization: (a) Each solution is represented by an n-tupe (x1, x2, …, xn ) such that xi = k if job k is scheduled at the i-th position. 13 14 15 For example: at node (1 , 2, X, X ) Assume that the processing on machine 1 is continuous. Assume that the processing on machine 2 is continuous. Assume that the processing on machine 3 is continuous. Refer the following 3 pages. 16 (i) The possibility that the processing on machine 1 is continuous for unassigned jobs set U: In this case, Cmax i ( K ) ai (bi ( n ) ci ( n ) ) J i in U i(K) a min { b c } i J i in U Suppose ( J1 J2 X X) U = { J3, J4 } M1 J i in U (1 + 2) 6+3 (1 + 2) 6+3 i i M2 M3 M1 M2 min { 2 + 8, 9 + 2 } = 2 + 8 M3 2 8 (ii) The possibility that the processing on machine 2 is continuous for unassigned jobs set U: In this case, Cmax i(K ) b c i i (n) J i in U i(K) Suppose ( J1 J2 X X) U = { J3, J4 } M1 b min { c } i J i in U J i in U 8 4 8 4 i 1 2 M2 2+9 M3 M1 M2 min { 8, 2 } = 2 M3 1 2 2+9 2 (iii) The possibility that the processing on machine 3 is continuous for unassigned jobs set U: In this case, Cmax i ( K ) c i J i in U Suppose ( J1 J2 X X) U = { J3, J4 } M1 1 2 88 M2 4 M3 M1 M2 M3 4 5 1 2 88 4 4 5 8+2 For example: at node (1 , 2, X, X ) (1+2 ) + 9 + 10 = 21 M1 (1 + 2) Assume that the processing on machine 1 is continuous. 3+6 M2 M3 (1+2) + 3 + 6 + min { b3 + c3, b4 + c4 } = (1+2) + 3 + 6 + min { 2 + 8, 9 + 2 } M1 M2 M3 (1 + 2) 3+6 2 8 20 For example: : at node (1 , 2, X, X ) 13 + 11 + 2 = 26 M1 Assume that the processing on machine 2 is continuous. 1 2 8 M2 4 2+9 M3 (1 + 8 + 4) + 2 + 6 + min { c3, c4 } = 21 + min { 8, 2 } = 21 + 2 = 23 M1 M2 M3 1 2 8 4 2+9 2 21 For example: : at node (1 , 2, X, X ) 18 + 10 = 28 M1 Assume that the processing on machine 3 is continuous. 1 2 88 M2 4 4 M3 5 (1+8+4+5) + 8 + 2 = 18 + 8 + 2 = 28 M1 M2 M3 1 2 88 4 4 5 8+2 22 ( i ) Depth-first search (LIFO branch and bound) ( X, X, X, X ) stack M1 processing is continuous. 1+ (2+ 6+3) + min{4+5, 2+8,9+2} M2 processing is continuous. 1+ 8+ (4+ 2+9) + min{5, 8, 2} M3 processing is continuous. 1+ 8+ 4 +(4+ 2+9) + (5+8+2) XXXX 1 1XXX 2 2XXX 3 3XXX 4 4XXX 28 23 XXXX 28 1 28 5 12XX 2 1XXX 2XXX 3 3XXX 4 4XXX 7 6 13XX 14XX 24 28 XXXX 28 1 5 28 1234 U= 28 13XX 1243 2XXX 3 3XXX 4 4XXX 7 6 12XX 2 1XXX 14XX killed 25 XXXX 1 5 1234 7 6 12XX 17 2 1XXX 18 1243 13XX 19 1324 14XX 21 20 1342 1423 2XXX 8 9 21XX 23XX 27 3 3XXX 4 4XXX 10 24XX 22 1432 26 XXXX 1 5 2 1XXX 7 6 12XX 13XX 14XX 3 2XXX 8 9 21XX 23XX 3XXX 4 4XXX 10 24XX 28 17 1234 18 1243 19 1324 21 20 1342 1423 22 killed 1432 27 XXXX 1 5 2 1XXX 7 6 12XX 13XX 14XX 3 2XXX 8 9 21XX 23XX 3XXX 4 4XXX 10 24XX 29 17 1234 18 1243 19 1324 21 20 1342 1423 22 1432 killed 28 XXXX 1 5 2 1XXX 7 6 12XX 13XX 14XX 3 2XXX 8 9 21XX 23XX 3XXX 4 4XXX 10 24XX 29 17 1234 18 1243 19 1324 21 20 1342 1423 22 killed 1432 29 XXXX 1 2 1XXX 3 2XXX 3XXX 31 4 4XXX killed 5 12XX 17 1234 7 6 18 1243 13XX 19 1324 14XX 21 20 1342 1423 22 1432 10 8 9 21XX 23XX 23 2134 24 2143 25 2314 24XX 26 2341 27 2413 28 2431 30 Stack = stop XXXX 31 1 2 1XXX 3 2XXX 4 3XXX 4XXX killed 5 12XX 17 1234 7 6 18 1243 13XX 19 1324 14XX 21 20 1342 1423 22 1432 10 8 9 21XX 23XX 23 2134 24 2143 25 2314 24XX 26 2341 12 11 27 2413 31XX 28 29 2431 3124 30 3142 13 32XX 31 3214 34XX 32 3241 33 3412 34 3421 31 Live nodes are stored in the stack data structure. XXXX 1 5 2 1XXX 7 6 9 23XX 13XX 14XX 21XX 17 18 19 20 21 22 23 24 1234 1324 1243 10 8 12XX 25 1342 1423 1432 2134 2143 2314 3 2XXX 11 12 31XX 32XX 34XX 30 31 32 33 34 24XX 26 2341 27 28 4 3XXX 29 2413 2431 3124 3142 3214 14 13 3241 3412 4XXX 15 16 41XX 42XX 43XX 35 36 37 38 39 40 3421 4123 4132 4212 32 4231 4312 4321 heap XXXX XXXX 27 28 1 1XXX 2 2XXX 31 3 31 4 3XXX 33 4XXX heap 34 XXXX 28 1 27 2 1XXX 28 8 21XX 31 3 2XXX 29 9 23XX 10 31 4 3XXX 29 24XX 35 4XXX heap 36 XXXX 28 1 1XXX upper bound 2134 2 3 2XXX 9 23XX 21XX 23 31 29 28 8 28 28 27 24 10 31 4 3XXX 29 24XX 33 2143 37 4XXX 38 Live nodes are stored in the stack data structure. 27 (2XXX) 28 31 (1XXX) (3XXX) 31 (4XXX) 28 (1XXX) 28 29 (21XX) 31 (4XXX) (24XX) 29 31 (23XX) (3XXX) All live nodes are killed. Heap = stop 39 40 Dynamic Programming as a search method on tree ( 4/1// T problem, refer the last 6 pages) Stage 1: { 1XXX, 2XXX, 3XXX, 4XXX } : live nodes 1 5 1234 2 1XXX 7 6 12XX 17 18 1243 XXXX 13XX 19 1324 14XX 21 20 1342 1423 22 1432 10 8 9 21XX 23XX 23 2134 24 2143 25 2314 3 2XXX 26 2341 12 11 24XX 27 2413 31XX 28 29 2431 3124 4 3XXX 30 3142 32XX 31 3214 34XX 32 3241 15 14 13 33 3412 4XXX 41XX 34 35 3421 4123 16 42XX 36 4132 37 4212 43XX 38 4231 39 4312 40 4321 41 Stage 2: { 21XX, 13XXX, 14XX, 23XX, 24XX, 34XX, 43XX } : nodes to be eliminated. XXXX : live nodes 1 5 1234 7 6 12XX 17 2 1XXX 18 1243 13XX 19 1324 14XX 21 20 1342 1423 22 1432 10 8 9 21XX 23XX 23 2134 24 2143 25 2314 3 2XXX 26 2341 12 11 24XX 27 2413 31XX 28 29 2431 3124 4 3XXX 30 3142 32XX 31 3214 34XX 32 3241 15 14 13 33 3412 4XXX 41XX 34 35 3421 4123 16 42XX 36 4132 37 4212 43XX 38 4231 39 4312 40 4321 42 Stage 3: { 213X, 214X, 143X, 234X, 243X } : nodes to be eliminated. : live nodes XXXX 1 5 1234 7 6 12XX 17 2 1XXX 18 1243 13XX 19 1324 14XX 21 20 1342 1423 22 1432 10 8 9 21XX 23XX 23 2134 24 2143 25 2314 3 2XXX 26 2341 12 11 24XX 27 2413 31XX 28 29 2431 3124 4 3XXX 30 3142 32XX 31 3214 34XX 32 3241 15 14 13 33 3412 4XXX 41XX 34 35 3421 4123 16 42XX 36 4132 37 4212 43XX 38 4231 39 4312 40 4321 43 Stage 4: : nodes to be eliminated. : live nodes XXXX 1 5 1234 7 6 12XX 17 2 1XXX 18 1243 13XX 19 1324 14XX 21 20 1342 1423 22 1432 10 8 9 21XX 23XX 23 2134 24 2143 3 2XXX 25 26 2314 2341 12 11 24XX 27 2413 31XX 28 29 2431 3124 4 3XXX 30 3142 32XX 31 3214 34XX 32 3241 15 14 13 33 3412 4XXX 41XX 34 35 3421 4123 16 42XX 36 4132 37 4212 43XX 38 4231 39 4312 40 4321 44 Optimal solution Depth-first Traversal search ( LIFO) method on tree ( 4/1// T problem ) First 3 nodes searched (explicitly or implicitly): : live nodes 1 5 1234 2 1XXX 7 6 12XX 17 18 1243 XXXX 13XX 19 1324 14XX 21 20 1342 1423 22 1432 10 8 9 21XX 23XX 23 2134 24 2143 25 2314 3 2XXX 26 2341 12 11 24XX 27 2413 31XX 28 29 2431 3124 4 3XXX 30 3142 32XX 31 3214 34XX 32 3241 15 14 13 33 3412 4XXX 41XX 34 35 3421 4123 16 42XX 36 4132 37 4212 43XX 38 4231 39 4312 40 4321 45 First 10 nodes searched (explicitly or implicitly): : live nodes XXXX 1 5 1234 7 6 12XX 17 2 1XXX 18 1243 13XX 19 1324 14XX 21 20 1342 1423 22 1432 10 8 9 21XX 23XX 23 2134 24 2143 25 2314 3 2XXX 26 2341 12 11 24XX 27 2413 31XX 28 29 2431 3124 4 3XXX 30 3142 32XX 31 3214 34XX 32 3241 15 14 13 33 3412 4XXX 41XX 34 35 3421 4123 16 42XX 36 4132 37 4212 43XX 38 4231 39 4312 40 4321 46 First 15 nodes searched (explicitly or implicitly): : live nodes XXXX 1 5 1234 7 6 12XX 17 2 1XXX 18 1243 13XX 19 1324 14XX 21 20 1342 1423 22 1432 10 8 9 21XX 23XX 23 2134 24 2143 25 2314 3 2XXX 26 2341 12 11 24XX 27 2413 31XX 28 29 2431 3124 4 3XXX 30 3142 32XX 31 3214 34XX 32 3241 15 14 13 33 3412 4XXX 41XX 34 35 3421 4123 16 42XX 36 4132 37 4212 43XX 38 4231 39 4312 40 4321 47 First 23 nodes searched (explicitly or implicitly): : live nodes XXXX 1 5 1234 7 6 12XX 17 2 1XXX 18 1243 13XX 19 1324 14XX 21 20 1342 1423 22 1432 10 8 9 21XX 23XX 23 2134 24 2143 25 2314 3 2XXX 26 2341 12 11 24XX 27 2413 31XX 28 29 2431 3124 4 3XXX 30 3142 32XX 31 3214 34XX 32 3241 15 14 13 33 3412 4XXX 41XX 34 35 3421 4123 16 42XX 36 4132 37 4212 43XX 38 4231 39 4312 40 4321 48 Depth-first traversal (stack): Breadth-first Traversal search ( FIFO) method on tree ( 4/1// T problem ) First 4 nodes searched (explicitly or implicitly): XXXX 1 5 1234 7 6 12XX 17 2 1XXX 18 1243 13XX 19 1324 14XX 21 20 1342 1423 22 1432 10 8 9 21XX 23XX 23 2134 24 2143 25 2314 3 2XXX 26 2341 12 11 24XX 27 2413 31XX 28 29 2431 3124 4 3XXX 30 3142 32XX 31 3214 34XX 32 3241 15 14 13 33 3412 4XXX 41XX 34 35 3421 4123 16 42XX 36 4132 37 4212 43XX 38 4231 39 4312 40 4321 52 Breadth-first Traversal search ( FIFO) method on tree ( 4/1// T problem ) First 8 nodes searched (explicitly or implicitly): XXXX 1 5 1234 7 6 12XX 17 2 1XXX 18 1243 13XX 19 1324 14XX 21 20 1342 1423 22 1432 10 8 9 21XX 23XX 23 2134 24 2143 25 2314 3 2XXX 26 2341 12 11 24XX 27 2413 31XX 28 29 2431 3124 4 3XXX 30 3142 32XX 31 3214 34XX 32 3241 15 14 13 33 3412 4XXX 41XX 34 35 3421 4123 16 42XX 36 4132 37 4212 43XX 38 4231 39 4312 40 4321 53 Least-cost search Branch and Bound method on tree ( 4/1// T problem ) The 1st branching: XXXX 1 5 1234 7 6 12XX 17 2 1XXX 18 1243 13XX 19 1324 14XX 21 20 1342 1423 22 1432 10 8 9 21XX 23XX 23 2134 24 2143 25 2314 3 2XXX 26 2341 12 11 24XX 27 2413 31XX 28 29 2431 3124 4 3XXX 30 3142 32XX 31 3214 34XX 32 3241 15 14 13 33 3412 4XXX 41XX 34 35 3421 4123 16 42XX 36 4132 37 4212 43XX 38 4231 39 4312 40 4321 54 Least-cost Branch and Bound search method on tree ( 4/1// T problem ) The 2nd branching intelligent search XXXX 1 5 1234 7 6 12XX 17 2 1XXX 18 1243 13XX 19 1324 14XX 21 20 1342 1423 22 1432 10 8 9 21XX 23XX 23 2134 24 2143 25 2314 3 2XXX 26 2341 12 11 24XX 27 2413 31XX 28 29 2431 3124 4 3XXX 30 3142 32XX 31 3214 34XX 32 3241 15 14 13 33 3412 4XXX 41XX 34 35 3421 4123 16 42XX 36 4132 37 4212 43XX 38 4231 39 4312 40 4321 55 Least-cost Branch and Bound search method on tree ( 4/1// T problem ) The 3rd branching: XXXX 1 5 1234 7 6 12XX 17 2 1XXX 18 1243 13XX 19 1324 14XX 21 20 1342 1423 22 1432 10 8 9 21XX 23XX 23 2134 24 2143 25 2314 3 2XXX 26 2341 12 11 24XX 27 2413 31XX 28 29 2431 3124 optimal solution 4 3XXX 30 3142 32XX 31 3214 34XX 32 3241 15 14 13 33 3412 4XXX 41XX 34 35 3421 4123 16 42XX 36 4132 37 4212 43XX 38 4231 39 4312 40 4321 56 Job Sequencing Problem with Deadlines: Example: Job j 1 2 3 4 pj 5 10 6 3 dj 1 3 2 1 tj 1 2 1 1 □ : infeasible node An alternate tree organization: x1 = the 1st nondelay job. ... xk = the k-th nondelay job. Initial node Branch node 1 x1 = 1 UB = 24 LB = 0 Job j 1 2 3 4 pj 5 10 6 3 dj 1 3 2 1 tj 1 2 1 1 x1 = 0 UB = 24 LB = 0 UB = 19 LB = 0 x1 = 1 Heap of live nodes: 1 x1 = 0 LB = 0 2 UB = 24 LB = 5 3 LB = 5 3 2 1 Iteration 3 – Branch node 2 ( x1 = 1 ) node 4: x2 = 1 LB(4) = 0, u(4) = 6+3 = 9, U = 9 (updated), best sol. ( 1, 1, 0, 0) node 5: x2 = 0 LB(5) = 10, u(5) = 10+6+3 = 19, U = 9 live nodes: {3, 4, 5 } branch node 4 x1 = 1 2 x2 = 1 UB = 9 LB = 0 4 x2 = 0 UB = 19 LB =10 1 Job j 1 2 3 4 pj 5 10 6 3 dj 1 3 2 1 tj 1 2 1 1 Heap of live nodes: x1 = 0 UB = 24 LB =5 3 LB = 0 4 5 LB = 5 3 5 LB = 10 Iteration 4 – Branch node 4 ( x1 = 1, x2 = 1 ) Job j 1 2 3 4 pj 5 10 6 3 node 9: x3 = 0 dj 1 3 2 1 LB(9) = 6, u(9) = 6+3 = 9, U = 9 tj 1 2 1 1 node 8: x3 = 1 x1 = x2 = x3 = 1 infeasible live nodes: { 3, 5, 9 } branch node 3 x1 = 1 2 x2 = 1 x2 = 0 1 Heap of live nodes: x1 = 0 UB = 24 LB =5 3 LB = 5 UB = 9 LB = 0 x3 = 1 8 infeasible UB = 19 4 LB =10 3 5 x3 = 0 9 UB = 9 LB = 6 LB = 10 5 9 LB = 6 Iteration 5 – Branch node 3 ( x1 = 0 ) node 6: x2 = 1 LB(6) = 5, u(6) = 5+6+3 = 14, U = 9 node 7: x2 = 0 LB(7) = 5+10=15, u(7) = 5+10+6+3 = 24, U = 9 Job j 1 2 3 4 pj 5 10 6 3 dj 1 3 2 1 tj 1 2 1 1 live nodes: {5, 9, 6, 7 } branch node 6 Heap of live nodes: x1 = 1 1 x1 = 0 2 x2 = 1 UB = 9 LB = 0 x3 = 1 LB =10 5 UB = 14 LB =5 LB =5 LB = 5 x2 = 1 x2 = 0 6 7 UB = 24 LB =15 LB = 10 x3 = 0 9 infeasible 3 x2 = 0 UB = 19 4 UB = 24 UB = 9 LB = 6 LB = 15 7 5 6 9 LB = 6 Iteration 6 – Branch node 6 ( x1 = 0, x2 = 1 ) Job j 1 2 3 4 pj 5 10 6 3 node 13: x3 = 0 dj 1 3 2 1 LB(13) = 5+6= 11, u(13) = 5+6+3 = 14, U = 8 live nodes: {5, 9, 7, 12, 13} branch node 12 tj 1 2 1 1 node 12: x3 = 1 LB(12) = 5, u(12) = 5+3 = 8, U = 8 (updated) x1 = 1 Heap of live nodes: 1 x1 = 0 UB = 24 2 x2 = 1 UB = 9 LB = 0 x3 = 1 LB =10 infeasible x2 = 1 5 UB = 14 LB =5 UB = 9 LB = 6 6 x2 = 0 7 UB = 8 LB =5 12 13 12 UB = 24 LB =15 x3 = 1 x3 = 0 x3 = 0 9 LB =5 LB = 5 x2 = 0 UB = 19 4 3 LB = 6 UB = 14 LB =11 9 7 LB = 14 LB = 10 5 13 LB = 15 Iteration 7 – Branch node 12 ( x1 = 0, x2 = 1, x3 = 1 ) Job j 1 2 3 4 x1 = 0, x2 = x3 = x4 = 1 infeasible pj 5 10 6 3 node 25: x4 = 0 dj 1 3 2 1 LB(25) = 5+3 =8, u(25) = 5+3 = 8, U = 8 tj 1 2 1 1 node 24: x4 = 1 best sol. ( 0, 1, 1, 0) live nodes: {5, 9, 7, 13} branch node 9 x1 = 1 Heap of live nodes: 1 x1 = 0 2 x2 = 1 UB = 9 LB = 0 x3 = 1 8 infeasible x2 = 0 UB = 19 4 UB = 24 LB =5 LB =10 x2 = 1 5 UB = 19 LB =5 UB = 9 LB = 6 6 UB = 19 LB =5 12 13 LB = 6 x2 = 0 7 x3 = 1 x3 = 0 x3 = 0 9 3 UB = 24 LB =15 LB =10 UB = 14 LB =11 LB =14 24 infeasible 25 UB = 8 LB = 8 9 13 5 7 LB = 15 Iteration 8 – Branch node 9 ( x1 = 1, x2 = 1, x3 = 0 ) Job j 1 2 3 4 x1 = x2 = x4 = 1, x3 = 0 infeasible pj 5 10 6 3 node 19: x4 = 0 dj 1 3 2 1 LB(19) = 6+3 = 9, u(19) = 6+3 = 9, U = 8 tj 1 2 1 1 node 18: x4 = 1 live nodes: {5, 7, 13} branch node 5 LB(5)=10 U ( = 8) End of search x1 = 1 Heap of live nodes: 1 x1 = 0 2 x2 = 1 UB = 9 LB = 0 UB = 24 LB =5 x2 = 0 UB = 19 4 LB =10 x2 = 1 5 UB = 19 LB =5 9 8 UB = 9 LB = 6 infeasible 18 infeasible 19 6 x2 = 0 7 UB = 9 LB = 9 UB = 19 LB =5 24 infeasible 12 25 13 UB = 8 LB = 8 LB = 10 5 UB = 24 LB =15 LB =14 x3 = 1 x3 = 0 x3 = 0 x3 = 1 3 UB = 14 LB =11 LB =15 13 7 An improved lower bound calculation: At node X ( x1 , x 2 , , x m , , , ) (1) If anyone of the remaning jobs cannot be added, then let m C ( X ) pi (1 xi ) i 1 n i m 1 pi . (2) If we cannot add all remaning jobs, then let m C ( X ) pi (1 xi ) i 1 min { p }. i m 1, , n i For example, Iteration 3 – Branch node 2 ( x1 = 1 ) Job j 1 2 3 4 pj 5 10 6 3 dj 1 3 2 1 tj 1 2 1 1 node 4: x2 = 1 By EDD rule, we know that partial schedle is (J1, J2, X,X) and it is mposible to add any one of jobs J3 and J4 without violating due date. So, LB(4) = 6 + 3 = 9. node 5: x2 = 0 By EDD rule, we know it is mposible to add job J1, J3 and J4 all together without violating due date. So, LB(5) = 10 + min{ 6, 3} = 13. Heap data structure Iteration Nodes X LB(X) UB(X) Best sol. &U Live nodes Branch node 1 1 0 24* (0,0,0,0), 24 {1} 1 2 2 3 0 5 19* 24 { 2, 3 } (1,0,0,0), 19 2 3 4 5 0 10 9* 19 { 4, 3, 5 } (1,1,0,0), 9 4 4 8 9 infeasible infeasible { 3, 5, 9 } 3 15 24 (1,1,0,0), 9 5 6 7 5 15 19 24 { 6, 5, 7, 9 } (1,1,0,0), 9 6 6 12 13 5 10 19 11 { 5,7,9,12, 13 } (1,1,0,0), 9 12 7 24 25 Infeasible Infeasible { 5, 7, 9 , 13} 9 8 8* 18 19 Infeasible Infeasible { 5, 7, 13 } 5 8 9 9 (0,1,1,0), 8 (0,1,1,0), 8 (0,1,1,0), 8 LB(5)=10 heap = end (1) The 1st lower bound M1 is continuous. M2 is continuous. M3 is continuous. (2) The 2nd lower bound Suppose ( J1 J2 X X), U = { J3, J4 } M1 Job ai bi ci J1 1 8 4 J2 2 4 5 J3 6 2 8 J4 3 9 2 M2 M3 1 2 8 4 2+9 2 = [(1+2) + (8+4)] + (2+9) + 2 = 26 min { 8, 2 } = 2 = max { 13, 3 + min { 6, 3} } = 13 Suppose ( J1 J2 X X), U = { J3, J4 } M1 Job ai bi ci J1 1 8 4 J2 2 4 5 J3 11 2 8 J4 12 9 2 M2 M3 1 2 8 4 2+9 2 = [(1+2) + (8+4)] + (2+9) + 2 = 26 min { 8, 2 } = 2 M1 M2 M3 1 2 = max { 13, 3 + min { 11, 12} } = 14 11 8 4 2+9 = 27 2 27 = 26 q3' max i ( K ) , i ( K ) min bi , i ( K ) min ai bi J i U Ji U c i J i U Suppose ( J1 J2 X X), U = { J3, J4 } Job ai bi ci J1 1 8 4 J2 2 4 5 J3 6 2 8 J4 3 9 2 M1 1 2 M2 M3 88 4 4 5 8+2 = 18 + (8+2) = 28 q3' max i ( K ) , i ( K ) min bi , i ( K ) min ai bi J i U = max { 18, 13 + min{ 2, 9}, 3 + min {6+2, 3+9}} + ( 8+2) = max { 18, 15, 15 } +10 \ = 28 q3' q3 Ji U c J i U i q3' max i ( K ) , i ( K ) min bi , i ( K ) min ai bi J i U Ji U c i J i U Suppose ( J1 J2 X X), U = { J3, J4 } Job ai bi ci J1 1 8 4 J2 2 4 5 J3 6 6 8 J4 3 9 2 M1 1 2 M2 88 4 4 M3 5 8+2 = 18 + (8+2) = 28 q3' max i ( K ) , i ( K ) min bi , i ( K ) min ai bi J i U Ji U c J i U = max { 18, 13 + min{ 6, 9}, 3 + min {6+6, 3+9}} + ( 8+2) = max { 18, 19, 15 } +10 \ M1 1 2 = 29 q3' q3 M2 M3 88 4 6 8+2 29 i lb( A) i ( K ) max ai bi ci min{a j , c j } J i in U J j in U J J j i Suppose ( J1 J2 X X) U = { J3, J4 } M1 1 2 6 2 M2 8 M3 M1 M2 M3 2 21 1 2 3 9 2 6 22