|
TOMLAB OPTIMIZATION ENVIRONMENT: mipSolve |
![]() |
mipSolve
Purpose
For solving mixed integer linear programming problems (MIP).
Description
Branch & Bound algorithm for Mixed-Integer Programming (MIP)
using LP relaxation (Formulated as min-IP)
Problem
Solving MIP on the LP standard form with generalized lower and upper bounds:
min c' * x. x in R^n, b_L <= A x <= b_U, x_L <= x <= x_U
Any of the x could be set as integer valued
Note that the TOMLAB routine cpTransf.m can be used to rewrite an LP problem on another form to this standard form
Input Parameters
Fields in Prob:
c: The vector c in c'x.
A: The linear constraint matrix
b_L: Lower bounds on linear constraints.
If empty, assumed to be == b_U
b_U: The upper bounds for the linear constraints
x_L: Lower bounds on x. If empty assumed to be 0.
x_U: Upper bounds on x. If empty assumed to be Inf.
x_0: Starting point x (If EMPTY, the LP solver solves a Phase I LP
to find a feasible point. Some LP solvers chooses own x_0).
PriLevOpt Printing level (in lpSolve and DualSolve):
=0 No output; >0 Convergence results;
>1 Output every iteration >2 Output each step in the simplex alg
For other LP solvers, see the documentation for the solver
QP.B: Active set B_0 at start.
1 = Include variable x(i) is in basic set.
0 = Variable x(i) is set on its lower bound
-1 = Variable x(i) is set on its upper bound. NOT USED
If EMPTY, lpSolve finds active set.
SolverLP Name of the solver used for initial LP subproblem. If empty,
the default solver is used. See GetSolver.m and tomSolve.m
SolverDLP Name of the solver used for dual LP subproblems. If empty,
the default solver is used. See GetSolver.m and tomSolve.m
SOL.optPar Parameters for the SOL solvers. If this field is set it is
sent to the SOL solvers (if they are used as solvers)
See help for minosTL.m, lpoptTL.m for how to set these parameters
SOL.PrintFile Print file name for the SOL solvers. If this field is set it is
sent to the SOL solvers (if they are used as solvers)
----------------------------------------------------------------------
Special fields for MIP in Prob.MIP
IntVars: If IntVars is a scalar, then variables 1,...,IntVars are
assumed to be integers.
If empty, all variables are assumed non-integer (LP problem)
If length(IntVars) > 1 ==> length(IntVars) == length(c) should hold,
Then IntVars(i) ==1 ==> x(i) integer. IntVars(i) ==0 ==> x(i) real.
If length(IntVars) < n, IntVars is assumed to be a set of indices.
VarWeight:Weight for each variable in the variable selection phase.
A lower value gives higher priority. Setting
Prob.MIP.VarWeight = c; for knapsack problems improve convergence.
DualGap mipSolve stops if the duality gap is less than DualGap
DualGap = 1, stop at first integer solution
e.g. DualGap = 0.01, stop if solution < 1% from optimal solution
fIP An upper bound on the IP value wanted. Makes it possible to
cut branches and avoid node computations.
xIP The x-values giving the fIP value.
KNAPSACK True if a knapsack problem is to be solved,
then a knapsack heuristic is used.
----------------------------------------------------------------------
Prob.Solver.Alg Node selection method
= 0 Depth First (default)
= 1 Breadth First
= 2 Depth First. When integer solution found, use Breadth selection
Prob.Solver.Method Rule to select new variables in DualSolve/lpSolve:
Note - this option is not used for other LP solvers.
= 0 Minimum Reduced Cost, sort variables increasing. (DEFAULT)
= 1 Bland's Anti-cycling Rule
= 2 Minimum Reduced Cost, Dantzig's rule
PriLev Print level in mipSolve
Fields used in Prob.optParam, in lpSolve and DualSolve
IterPrint Print one line each iteration
MaxIter Maximal number of iterations. max(10*dim(x),100) is DEFAULT.
wait Wait flag, pause each iteration if set true
eps_f Tolerance used for function value tests
eps_Rank Rank tolerance
Output Parameters
Structure Result. Fields used:
Iter Number of iterations
ExitFlag Exit flag
== 0 => Global optimal solution found, or integer solution with
duality gap less than user tolerance
== 1 => Maximal number of iterations reached.
== 2 => Empty feasible set, no integer solution found.
== 3 => Rank problems (not used)
== 4 => No feasible point found running LP relaxation
== 5 => Illegal x_0 found in LP relaxation
ExitTest Text string giving ExitFlag and Inform information
Inform If ExitFlag > 0, Inform=ExitFlag, except if
duality gap less than given tolerance (Inform = 6)
x_k Solution
v_k Lagrange parameters. Constraints + lower + upper bounds
QP.B B Optimal set. B(i)==0, include variable x(i) in basic set.
sum(B==1)==length(b) holds. See QP.B as input.
QP.y Dual parameters y (also part of v_k)
p_dx Search steps in x
alphaV Step lengths for each search step
f_k Function value c'*x
g_k Gradient c
Solver mipSolve
SolverAlgorithm Description of method used
x_0 Starting point x_0
xState State variable: Free==0; On lower == 1; On upper == 2; Fixed == 3;
![]() |
lsei | nlpSolve | ![]() |