DMOR Branch and bound Integer programming • Modelling logical constraints and making them linear: – – – – Conjuction Disjunction Implication Logical constraints for binary variables • implication • disjunction • exclusive disjunction – Fixed costs modelling • Question: Is it OK to just round an LP solution to the nearest integer to get the solution of the integer program? – Branch and bound algorithm (Divide and conquer) Stepwise linear objective function Stepwise linear objective function • Binary variables • Introducing constraints where w1 and w2 are binary Stepwise linear objective function • A) if 𝑤1 = 0, then 𝑤2 = 0 • B) if 𝑤1 = 1 and 𝑤2 = 0 • C) if 𝑤1 = 1 and 𝑤2 = 1 Branch and bound algorithm - idea • • • Three decision variables x1 (integer-valued) and two binary variables x2 and x3. Constraints: 1 ≤ x1 ≤ 3, 0 ≤ x2 ≤ 1, 0 ≤ x3 ≤ 1 Full enumeration tree Instead of building the whole tree up front, build it successively starting from the root. Develop only those branches which are most promising at any given step. Most promising is determined by estimating bounds on the best objective function value given current information which can be achieved by developing a given node further. Basic concepts • Branching • Bounding – fathoming • Prunning Concepts: • node – each partial or complete solution • leaf node – complete solution • bud node – partial solution feasible or infeasible • bounding function – estimation method for bud nodes, should be optimistic • branching, growing, expanding nodes – a process of creating child nodes for a bud node • incumbent Node selection policy • Best-first / global-best node selection • Depth-first • Breadth-first Example – an assignment problem • Meaning of the nodes in a tree: – Partial or complete assignement of people to tasks • Node selection policy: global best • Variable selection policy: choose the next task in a natural order 1 to 4 • Bounding function: for unassigned tasks choose the best unassigned person, even if she were to be assigned too more than one tasks • Algorithm termination rule: when the objective function value for an incumbent solution is better or equal to the objective function value for all bud nodes • Fathoming: a solution generated by the bounding function is feasible if each task is assigned to a different person How do the bounding function values come about? • Look at the first stage bud node A • All solutions represented by this node can be denoted by A??? – – – – Actual value of assigning person A to task 1 is equal to 9 The best yet unassigned person for task 2 is C, value = 1 The best yet unassigned person for task 3 is D, value = 2 The best yet unassigned person for task 4 is C, value = 2 • Bounding function solution is ACDC with a total value of 9+1+2+2=14. – The best objective function value of A??? is14. It is not a feasible solution because person C is assigned to 2 tasks. Person A is the only actually assigned person. Creating a tree First stage: root Prunned nodes have broken edges Feasible nodes have bold edges Prunned feasible nodes have broken and bold edges Second stage: • Node C??? is fathomed – the first incumbent feasible solution CBDA=13 • We can then prune node A???, with bounding function value of 14. • Two bud nodes which are hope for improvement: B??? and D??? – global best: we choose D??? Building a tree Third stage: • There are no new feasible solutions, so the incumbent solution does not change. • New nodes cannot be prunned by comparing with the current incumbent solution or fathomed • We choose the global best from among B??? (9), DA?? (12), DB?? (10) oraz DC?? (12) • So B??? it is Building a tree Fourth stage: • We fathom two nodes BA?? and BC?? • A new incumbent feasible solution is BCDA=12 • We prune the previous incumbent CBDA • BA?? Is feasible, but we prune it by comparison with a new incumbent solution • We prune nodes DA?? i DC?? by comparing them with the incumbent solution • If we wanted to find ALL optimal solutions and not only one we can later analyze it further • We are left with only one bud node DB??. Building a tree Fifth stage: • DBAC has better value than the incumbent solution, so we replace it and prune the incumbent • DBCA is pruned by comparing it with the incumbent solution • There are no more bud nodes to expand, so we terminate • We analyzed 13 out of 24 nodes • For bigger problems it gives a real acceleration A good bounding function is a key • Travelling salesman problem: visit each city exactly once and come back to where you started • Assume we have a partial solution (bold) • Smart bounding function: a minimal spanning tree on the starting and the ending node of the current partial solution and the unvisited nodes Branch and bound algorithm for mixed integer problems (Dakin’s algorithm) • The following integer programming problem is given: Solving an LP Divide into two subproblems excluding the current nonfeasible solution. The two subproblems solved as LP Successively divide and solve an LP L3 ignored since it is not feasible We continue until we get an integer solution • We can stop the procedure at L5 if we want to be at most 10% from the minimum (second best) Cutting planes Gomory cuts