Products & Services Solutions Academia Support User Community Company

Learn more about Optimization Toolbox   

Binary Integer Programming

Definition

Binary integer programming is the problem of finding a binary vector x that minimizes a linear function fTx subject to linear constraints:

such that A·x ≤ b, Aeq·x = beq, x binary.

bintprog Algorithm

bintprog uses a linear programming (LP)-based branch-and-bound algorithm to solve binary integer programming problems. The algorithm searches for an optimal solution to the binary integer programming problem by solving a series of LP-relaxation problems, in which the binary integer requirement on the variables is replaced by the weaker constraint 0 ≤ x ≤ 1. The algorithm

The following sections describe the branch-and-bound method in greater detail.

Branching

The algorithm creates a search tree by repeatedly adding constraints to the problem, that is, "branching." At a branching step, the algorithm chooses a variable xj whose current value is not an integer and adds the constraint xj = 0 to form one branch and the constraint xj = 1 to form the other branch. This process can be represented by a binary tree, in which the nodes represent the added constraints. The following picture illustrates a complete binary tree for a problem that has three variables, x1, x2, and x3. Note that, in general, the order of the variables going down the levels in the tree is not the usual order of their subscripts

Deciding Whether to Branch

At each node, the algorithm solves an LP-relaxation problem using the constraints at that node and decides whether to branch or to move to another node depending on the outcome. There are three possibilities:

See Options for a description of the NodeSearchStrategy and BranchStrategy options.

Bounds

The solution to the LP-relaxation problem provides a lower bound for the binary integer programming problem. If the solution to the LP-relaxation problem is already a binary integer vector, it provides an upper bound for the binary integer programming problem.

As the search tree grows more nodes, the algorithm updates the lower and upper bounds on the objective function, using the bounds obtained in the bounding step. The bound on the objective value serves as the threshold to cut off unnecessary branches.

Limits for the Algorithm

The algorithm for bintprog could potentially search all 2n binary integer vectors, where n is the number of variables. As a complete search might take a very long time, you can limit the search using the following options

See Options for more information.

  


Recommended Products

Includes the most popular MATLAB recorded presentations with Q&A sessions led by MATLAB experts.

 © 1984-2009- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS