MIT1_204S10_lec16

# MIT1_204S10_lec16 - 1.204 Lecture 16 Branch and bound:...

This preview shows pages 1–4. Sign up to view the full content.

1.204 Lecture 16 Branch and bound: Method knapsack problem Method, knapsack problem Branch and bound Technique for solving mixed (or pure) integer programming problems, based on tree search Yes/no or 0/1 decision variables, designated x i Problem may have continuous, usually linear, variables O(2 n ) complexity Relies on upper and lower bounds to limit the number of combinations examined while looking for a solution Dominance at a distance Solutions in one part of tree can dominate other parts of tree DP only has local dominance: states in same stage dominate Handles master/subproblem framework better than DP Same problem size as dynamic programming, perhaps a little larger: data specific, a few hundred 0/1 variables Branch-and-cut is a more sophisticated, related method May solve problems with a few thousand 0/1 variables Its code and math are complex If you need branch-and-cut, use a commercial solver 1

This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document
Branch and bound tree 0 2 1 x 0 =1 x 0 =0 4 3 6 5 x 1 =1 x 1 =0 x 1 =1 x 1 =0 x 2 =0 x 2 =1 x 2 =0 x 2 =1 x 2 =0 x 2 =1 x 2 =0 x 2 =1 Every tree node is a problem state It is generally associated with one 0-1 variable, sometimes a group Other 0-1 variables are implicitly defined by the path from the root to this node We sometimes store all {x} at each node rather than tracing back Still other 0-1 variables associated with nodes below the current node in the tree have unknown values, since the path to those nodes has not been built yet Generating tree nodes Tree nodes are generated dynamically as the Tree nodes are generated dynamically as the program progresses Live node is node that has been generated but not all of its children have been generated yet E-node is a live node currently being explored. Its children are being generated Dead node is a node either: Not to be explored further or All of whose children have already been explored 2
3 Managing live tree nodes Branch and bound keeps a list of live nodes. Four strategies are used to manage the list: p Depth first search: As soon as child of current E-node is generated, the child becomes the new E-node Parent becomes E-node only after child’s subtree is explored Horowitz and Sahni call this ‘backtracking’ In the other 3 strategies, the E-node remains the E-node until it is dead. Its children are managed by: Breadth first search: Children are put in queue D h Child t t k D-search: Children are put on stack Least cost search: Children are put on heap

This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document
This is the end of the preview. Sign up to access the rest of the document.

## This note was uploaded on 12/04/2011 for the course ESD 1.204 taught by Professor Georgekocur during the Spring '10 term at MIT.

### Page1 / 10

MIT1_204S10_lec16 - 1.204 Lecture 16 Branch and bound:...

This preview shows document pages 1 - 4. Sign up to view the full document.

View Full Document
Ask a homework question - tutors are online