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
Binary variables Introducing constraints where w 1 and w 2 are binary
Stepwise linear objective function A) B) C)
Branch and bound algorithm - idea Three decision variables x1 (integer-valued) and two binary variables x2 and x3. Constraints: 1 ≤ x 1 ≤ 3, 0 ≤ x2 ≤ 1, 0 ≤ x 3 ≤ 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 Variable selection policy Bud prunning rules Algoritym termination rules
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 =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 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??? Prunned nodes have broken edges Feasible nodes have bold edges Prunned feasible nodes have broken and bold edges
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
L 3 ignored since it is not feasible
We continue until we get an integer solution We can stop the procedure at L 5 if we want to be at most 10% from the minimum (second best)
Cutting planes
Gomory cuts