Difference between revisions of "Branch-and-bound algorithm"
(Importing text file) |
Ulf Rehmann (talk | contribs) m (tex encoded by computer) |
||
Line 1: | Line 1: | ||
+ | <!-- | ||
+ | b1108401.png | ||
+ | $#A+1 = 57 n = 0 | ||
+ | $#C+1 = 57 : ~/encyclopedia/old_files/data/B110/B.1100840 Branch\AAhand\AAhbound algorithm | ||
+ | Automatically converted into TeX, above some diagnostics. | ||
+ | Please remove this comment and the {{TEX|auto}} line below, | ||
+ | if TeX found to be correct. | ||
+ | --> | ||
+ | |||
+ | {{TEX|auto}} | ||
+ | {{TEX|done}} | ||
+ | |||
Consider a (mixed) integer [[Linear programming|linear programming]] problem | Consider a (mixed) integer [[Linear programming|linear programming]] problem | ||
− | + | $$ | |
+ | v ( P ) = | ||
+ | $$ | ||
− | + | $$ | |
+ | = | ||
+ | { \mathop{\rm min} } _ {x \geq 0 } \left \{ {c ^ {T} x } : {Ax \geq b, x _ {j} \in \mathbf Z, j \in N ^ \prime \subset \{ 1 \dots n \} } \right \} , | ||
+ | $$ | ||
− | where | + | where $ N ^ \prime $ |
+ | is the set of variables that are required to be integer, $ x,c \in \mathbf R ^ {n} $, | ||
+ | $ b \in \mathbf R ^ {m} $, | ||
+ | and $ A $ | ||
+ | is an $ ( m \times n ) $- | ||
+ | matrix. For convenience and without loss of generality, assume that $ P $ | ||
+ | is bounded. Let $ F ( P ) $ | ||
+ | be the feasible set of $ P $ | ||
+ | and $ F ^ {*} ( P ) $ | ||
+ | the set of optimal solutions, i.e., | ||
− | + | $$ | |
+ | F ( P ) = \left \{ {x \in \mathbf R ^ {n} } : {Ax \geq b, x \geq 0, x _ {j} \in \mathbf Z, j \in N ^ \prime } \right \} , | ||
+ | $$ | ||
− | + | $$ | |
+ | F ^ {*} ( P ) = \left \{ {x ^ {*} \in F ( P ) } : {c ^ {T} x ^ {*} = { \mathop{\rm min} } _ {x \in F ( P ) } c ^ {T} x } \right \} . | ||
+ | $$ | ||
In branch-and-bound methods, the above problem is split up into a number of subproblems by partitioning the feasible set in some way. These subproblems are examined in turn and can be further split up. This is the branching part. Bounds on the optimal values of the subproblems are used to discard certain subproblems as irrelevant, or to perform a further decomposition. | In branch-and-bound methods, the above problem is split up into a number of subproblems by partitioning the feasible set in some way. These subproblems are examined in turn and can be further split up. This is the branching part. Bounds on the optimal values of the subproblems are used to discard certain subproblems as irrelevant, or to perform a further decomposition. | ||
− | In somewhat more detail, let | + | In somewhat more detail, let $ L = \{ P _ {1} \dots P _ {r} \} $ |
+ | be the current list of subproblems, $ v ( P _ {i} ) = { \mathop{\rm min} } \{ {c ^ {T} x } : {A _ {i} x \geq b _ {i} , x \geq 0, x _ {j} \in \mathbf Z, j \in N ^ \prime } \} $. | ||
+ | Let $ x ^ {*} $ | ||
+ | be the currently best point of $ v ( P ) $, | ||
+ | the incumbent, and $ z ^ {*} = c ^ {T} x ^ {*} $ | ||
+ | the currently best value, sometimes called the cutting value. The process is begun from $ z ^ {*} = \infty $, | ||
+ | $ x ^ {*} = \textrm{ unknown } $, | ||
+ | $ L = \{ P \} $. | ||
− | Now take a | + | Now take a $ P _ {i} $ |
+ | and consider its linear programming relaxation $ {\overline{P}\; } _ {i} $: | ||
− | + | $$ | |
+ | v ( {\overline{P}\; } _ {i} ) = { \mathop{\rm min} } \left \{ {c ^ {T} x } : {A _ {i} x \geq b _ {i} ,x \geq 0 } \right \} , | ||
+ | $$ | ||
− | obtained by discarding the integrality constraint. Solve | + | obtained by discarding the integrality constraint. Solve $ {\overline{P}\; } _ {i} $. |
+ | If $ v ( {\overline{P}\; } _ {i} ) \geq z ^ {*} $, | ||
+ | no point of $ F ( P _ {i} ) $ | ||
+ | does better than any already obtained, and $ P _ {i} $ | ||
+ | can be discarded. One says that in this case $ P _ {i} $ | ||
+ | has been fathomed. | ||
− | If < | + | If $ v ( {\overline{P}\; } _ {i} ) < z ^ {*} $, |
+ | there are two subcases: | ||
− | a) | + | a) $ {\overline{x}\; } \in F ^ {*} ( {\overline{P}\; } _ {i} ) $ |
+ | and $ {\overline{x}\; } \in F ( P ) $. | ||
+ | Then $ {\overline{x}\; } $ | ||
+ | is optimal in $ F ( P _ {i} ) $ | ||
+ | and $ P _ {i} $ | ||
+ | has also been fathomed. The new values of $ x ^ {*} $ | ||
+ | and $ z ^ {*} $ | ||
+ | are $ {\overline{x}\; } $ | ||
+ | and $ c ^ {T} {\overline{x}\; } $, | ||
+ | and $ P _ {i} $ | ||
+ | is discarded. | ||
− | b) | + | b) $ {\overline{x}\; } \in F ^ {*} ( {\overline{P}\; } _ {i} ) $ |
+ | and $ {\overline{x}\; } \notin F ( P ) $( | ||
+ | i.e., an integrality constraint is violated). Then $ P _ {i} $ | ||
+ | is split up into certain subproblems, which are added to the list $ L $, | ||
+ | $ P _ {i} $ | ||
+ | is removed and the incumbent and cutting value remain the same. | ||
− | The algorithm ends when | + | The algorithm ends when $ L = \emptyset $. |
− | This description does not yet say anything about how to split up a | + | This description does not yet say anything about how to split up a $ P _ {i} $. |
+ | One method often used is to pick a $ j \in N ^ \prime $ | ||
+ | for which $ {\overline{x}\; } _ {j} $ | ||
+ | is not integral and to split up $ P _ {i} $ | ||
+ | into the two subproblems defined by the respective constraints: | ||
− | + | $$ | |
+ | x _ {j} \geq [ x _ {j} ] + 1, | ||
+ | $$ | ||
− | + | $$ | |
+ | x _ {j} \leq [ x _ {j} ] , | ||
+ | $$ | ||
− | where | + | where $ [ x _ {j} ] $ |
+ | denotes the entier (or [[Integral part|integral part]]) of $ x _ {j} $, | ||
+ | the largest integer less than or equal to $ x _ {j} $. | ||
− | In the above, the linear programming relaxation | + | In the above, the linear programming relaxation $ {\overline{P}\; } _ {i} $ |
+ | has been used to obtain bounds on $ v ( P _ {i} ) $. | ||
+ | This can be replaced with other ideas, e.g., [[Lagrangean relaxation|Lagrangean relaxation]]. | ||
In [[#References|[a5]]], there is a useful flow chart of branch and bound. The branch-and-bound idea was introduced in [[#References|[a1]]] and improved in [[#References|[a2]]]. Some standard references are [[#References|[a3]]], [[#References|[a4]]], [[#References|[a5]]], [[#References|[a6]]]. | In [[#References|[a5]]], there is a useful flow chart of branch and bound. The branch-and-bound idea was introduced in [[#References|[a1]]] and improved in [[#References|[a2]]]. Some standard references are [[#References|[a3]]], [[#References|[a4]]], [[#References|[a5]]], [[#References|[a6]]]. |
Latest revision as of 06:29, 30 May 2020
Consider a (mixed) integer linear programming problem
$$ v ( P ) = $$
$$ = { \mathop{\rm min} } _ {x \geq 0 } \left \{ {c ^ {T} x } : {Ax \geq b, x _ {j} \in \mathbf Z, j \in N ^ \prime \subset \{ 1 \dots n \} } \right \} , $$
where $ N ^ \prime $ is the set of variables that are required to be integer, $ x,c \in \mathbf R ^ {n} $, $ b \in \mathbf R ^ {m} $, and $ A $ is an $ ( m \times n ) $- matrix. For convenience and without loss of generality, assume that $ P $ is bounded. Let $ F ( P ) $ be the feasible set of $ P $ and $ F ^ {*} ( P ) $ the set of optimal solutions, i.e.,
$$ F ( P ) = \left \{ {x \in \mathbf R ^ {n} } : {Ax \geq b, x \geq 0, x _ {j} \in \mathbf Z, j \in N ^ \prime } \right \} , $$
$$ F ^ {*} ( P ) = \left \{ {x ^ {*} \in F ( P ) } : {c ^ {T} x ^ {*} = { \mathop{\rm min} } _ {x \in F ( P ) } c ^ {T} x } \right \} . $$
In branch-and-bound methods, the above problem is split up into a number of subproblems by partitioning the feasible set in some way. These subproblems are examined in turn and can be further split up. This is the branching part. Bounds on the optimal values of the subproblems are used to discard certain subproblems as irrelevant, or to perform a further decomposition.
In somewhat more detail, let $ L = \{ P _ {1} \dots P _ {r} \} $ be the current list of subproblems, $ v ( P _ {i} ) = { \mathop{\rm min} } \{ {c ^ {T} x } : {A _ {i} x \geq b _ {i} , x \geq 0, x _ {j} \in \mathbf Z, j \in N ^ \prime } \} $. Let $ x ^ {*} $ be the currently best point of $ v ( P ) $, the incumbent, and $ z ^ {*} = c ^ {T} x ^ {*} $ the currently best value, sometimes called the cutting value. The process is begun from $ z ^ {*} = \infty $, $ x ^ {*} = \textrm{ unknown } $, $ L = \{ P \} $.
Now take a $ P _ {i} $ and consider its linear programming relaxation $ {\overline{P}\; } _ {i} $:
$$ v ( {\overline{P}\; } _ {i} ) = { \mathop{\rm min} } \left \{ {c ^ {T} x } : {A _ {i} x \geq b _ {i} ,x \geq 0 } \right \} , $$
obtained by discarding the integrality constraint. Solve $ {\overline{P}\; } _ {i} $. If $ v ( {\overline{P}\; } _ {i} ) \geq z ^ {*} $, no point of $ F ( P _ {i} ) $ does better than any already obtained, and $ P _ {i} $ can be discarded. One says that in this case $ P _ {i} $ has been fathomed.
If $ v ( {\overline{P}\; } _ {i} ) < z ^ {*} $, there are two subcases:
a) $ {\overline{x}\; } \in F ^ {*} ( {\overline{P}\; } _ {i} ) $ and $ {\overline{x}\; } \in F ( P ) $. Then $ {\overline{x}\; } $ is optimal in $ F ( P _ {i} ) $ and $ P _ {i} $ has also been fathomed. The new values of $ x ^ {*} $ and $ z ^ {*} $ are $ {\overline{x}\; } $ and $ c ^ {T} {\overline{x}\; } $, and $ P _ {i} $ is discarded.
b) $ {\overline{x}\; } \in F ^ {*} ( {\overline{P}\; } _ {i} ) $ and $ {\overline{x}\; } \notin F ( P ) $( i.e., an integrality constraint is violated). Then $ P _ {i} $ is split up into certain subproblems, which are added to the list $ L $, $ P _ {i} $ is removed and the incumbent and cutting value remain the same.
The algorithm ends when $ L = \emptyset $.
This description does not yet say anything about how to split up a $ P _ {i} $. One method often used is to pick a $ j \in N ^ \prime $ for which $ {\overline{x}\; } _ {j} $ is not integral and to split up $ P _ {i} $ into the two subproblems defined by the respective constraints:
$$ x _ {j} \geq [ x _ {j} ] + 1, $$
$$ x _ {j} \leq [ x _ {j} ] , $$
where $ [ x _ {j} ] $ denotes the entier (or integral part) of $ x _ {j} $, the largest integer less than or equal to $ x _ {j} $.
In the above, the linear programming relaxation $ {\overline{P}\; } _ {i} $ has been used to obtain bounds on $ v ( P _ {i} ) $. This can be replaced with other ideas, e.g., Lagrangean relaxation.
In [a5], there is a useful flow chart of branch and bound. The branch-and-bound idea was introduced in [a1] and improved in [a2]. Some standard references are [a3], [a4], [a5], [a6].
References
[a1] | A.H. Land, A.G. Doig, "An automatic method for solving discrete programming problems" Econometrica , 28 (1960) pp. 497–520 |
[a2] | R.J. Dakin, "A tree-search algorithm for mixed integer programming problems" Comp. J. , 8 (1965) pp. 250–255 |
[a3] | C.H. Papadimitriou, K. Steiglitz, "Combinatorial optimization" , Prentice-Hall (1982) |
[a4] | S. Walukiewicz, "Integer programming" , Kluwer Acad. Publ. (1991) |
[a5] | S. Zionts, "Linear and integer programming" , Prentice-Hall (1974) |
[a6] | G.L. Nemhauser, L.A. Wolsey, "Integer programming" G.L. Nemhauser (ed.) A.H.G. Rinnooy Kan (ed.) M.J. Todd (ed.) , Optimization , North-Holland (1989) pp. 447–528 |
Branch-and-bound algorithm. Encyclopedia of Mathematics. URL: http://encyclopediaofmath.org/index.php?title=Branch-and-bound_algorithm&oldid=17467