MIPNLP ecpMINLP
This page is part of the MIPNLP Manual. See MIPNLP Manual. |
Purpose
ecpMINLP solves convex mixed-integer nonlinear programming problems (MINLP).
ecpMINLP solves problems of the form
where , , and
. The variables , the
index subset of are restricted to be integers but can be either continuously differentiable or not. An initalization routine will detect strict integer variables in the problem.
Calling Syntax
Driver call, including printing with level 2:
Result = tomRun('ecpMINLP',Prob,2);
Direct solver call:
Result = ecpMINLP(Prob);
PrintResult(Result);
Result = tomRun('ecpMINLP',Prob,...)
Warm Start
Warm start is currently not supported, but might be included in a future release.
Inputs
Prob structure
The TOMLAB problem structure
The following fields are used in the problem description structure Prob | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Field | Description | ||||||||||||||||||||||||||||||
x_L | Lower bounds on x. | ||||||||||||||||||||||||||||||
x_U | Upper bounds on x. | ||||||||||||||||||||||||||||||
A | The linear constraint matrix. | ||||||||||||||||||||||||||||||
b_L | Lower bounds on linear constraints. | ||||||||||||||||||||||||||||||
b_U | Upper bounds on linear constraints. | ||||||||||||||||||||||||||||||
c_L | Lower bounds on nonlinear constraints. | ||||||||||||||||||||||||||||||
c_U | Upper bounds on nonlinear constraints. | ||||||||||||||||||||||||||||||
f_Low | Lower bound on solution. | ||||||||||||||||||||||||||||||
x_0 | Starting point. | ||||||||||||||||||||||||||||||
MaxCPU | Maximal CPU Time (in seconds) to be used by ecpMINLP, stops with best point found | ||||||||||||||||||||||||||||||
PriLev | Print level in ecpMINLP (default 1). Also see optParam.IterPrint
| ||||||||||||||||||||||||||||||
PriLevOptMIP | Print level in MIP sub-solvers, (CPLEX and others, see the documentation for the solver used). Usually: | ||||||||||||||||||||||||||||||
PriLevOptNLP | Print level in NLP sub-solvers, (SNOPT and others, see the documentation for the solver used). Usually: | ||||||||||||||||||||||||||||||
SolverMIP | Name of the solver used for MIP subproblems. If TOMLAB /gurobi is installed, gurobi is the default solver. If TOMLAB /CPLEX is installed, CPLEX is second choice as default. Otherwise the default solver is found calling GetSolver('mip',1); Supported as subsolvers are gurobi, CPLEX, mipSolve, milpSolve and cutplane. | ||||||||||||||||||||||||||||||
SolverNLP |
Name of the solver used for NLP subproblems. If packages /SOL or /SNOTP is installed, snopt is the default solver. Otherwise the default solver is found calling GetSolver('con',1); | ||||||||||||||||||||||||||||||
SolverLP | Name of the solver used for LP subproblems when SolverMIP == mipSolve | ||||||||||||||||||||||||||||||
MIP | Structure with parameters specific to mixed integer optimization. See the table below describing the fields used in the MIP structure. | ||||||||||||||||||||||||||||||
ECPMINLP | Structure with parameters specific to the ecpMINLP solver. See the table below describing the fields used in the ECPMINLP structure. | ||||||||||||||||||||||||||||||
optParam | Structure with general optimization parameters. See the table below describing the fields used in the optParam structure. |
MIP structure
Substructure in Prob with parameters related to mixed integer programming.
fields used in Prob.MIP: | |
---|---|
Field | Description |
IntVars | If empty, all variables are assumed non-integer. If islogical(IntVars) (=all elements are 0/1), then 1 = integer variable, 0 = continuous variable. If any element >1, IntVars is the indices for integer variables. |
fIP | An upper bound on the IP value wanted. Makes it possible to cut branches and avoid node computations. Used even if xIP not given. |
xIP | The x-values giving the fIP value, if a solution (xIP,fIP) is known. |
DualGap | ecpMINLP 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.
|
PPP | Pre-processing and probing, default is 0. 0 Not used. Default. |
ROUNDH | If nonzero, a rounding heuristics will be used on the initial NLP solution in order to obtain an initial integer solution. Requires ECPMINLP.INIT_BND enabled. Default is 1, enabled. |
ECPMINLP structure
Substructure in Prob with solver-specific options.
fields used in Prob.ECPMINLP | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Field | Description | ||||||||||
beta | Multiplier when increasing alpha after an infeasible MILP solution.
| ||||||||||
gamma | Multiplier when increasing alpha when MILP solution does not violate any nonlinear contraints, but still does not decrease the upper bound of the objective.
| ||||||||||
PREALLOC | Flag enabling preallocation of memory for cutting planes and linearizations.
| ||||||||||
INIT_BND | Selects method for setting lower bound when f_Low not changed from default.
| ||||||||||
SETTOL | Flag enabling changing tolerances, described below under optParam.eps_x, optParam.eps_x and optParam.eps_f.
| ||||||||||
INTSOLLIM_INCR | Integer option when using CPLEX as MIP subsolver.
| ||||||||||
USECUTPOOL | Set nonzero to use a pool for the alpha-regulated extended cutting planes.
| ||||||||||
CUTDELBND | The number of consecutive times an extended cutting plane can be inactive before it gets removed and put into the inactive pool, if the option USECUTPOOL is set nonzero.
| ||||||||||
MAXITNOIMP | Limit on the number of successive iterations allowed without any improvements at all to neither objective nor solution point before the solver terminates
| ||||||||||
USENLP | Set nonzero to use an NLP sub-solver on the original problem with the integer variables fixed at values from the latest MILP solution. Default is 1, enabled. | ||||||||||
USERESELECT | Set nonzero to enable cut reselection heuristics. Default is 1, enabled. | ||||||||||
SCALECUTS | Set nonzero to scale cuts before they are added to the MILP problem. Scaling is done by dividing the cut with its norm. Default is 1, enabled. |
optParam Structure
Substructure in Prob with general optimization parameters.
fields used in Prob.optParam | |
---|---|
Field | Value |
MaxIter | Maximal number of iterations, default 10000 |
IterPrint | Print short information each iteration. Setting PriLev > 1 also enables IterPrint, setting it to 1. |
eps_x | Linear constraint violation convergence tolerance. Default is 2.0e-6 |
eps_g | Constraint violation convergence tolerance. Default is 1.0e-7 |
eps_f | Optimality tolerance. Default is 1.0e-8 |
NOTE: For the solver to use these tolerances, the flag ECPMINLP.SETTOL must be set to nonzero.
Outputs
Result | Structure with result from optimization. The following fields are changed: | |
---|---|---|
Iter | Number of iterations. | |
ExitFlag | Exit flag.
| |
Inform | Inform for ExitFlag != 3
| |
ExitText | Text string giving ExitFlag and Inform information. | |
DualGap | Relative duality gap, max(0,fIPMin-fLB)/-fIPMin-, if fIPMin =0; max(0,fIPMin-fLB) if fIPMin == 0. If fIPMin =0: Scale with 100, 100*Dual- Gap, to get the percentage duality gap. For absolute value duality gap: scale with fIPMin, fIPMin * DualGap | |
x_k | Solution. | |
f_k | Function value at optimum. | |
g_k | Gradient vector at optimum. | |
c_k | Constraint values at optimum. | |
cJac | Constraint derivative values at optimum. | |
xState | State of each variable, described in TOMLAB Appendix B. | |
bState | State of each constraint, described in TOMLAB Appendix B. | |
cState | State of each general constraint, described in TOMLAB Appendix B. | |
x_0 | Starting point x_0. | |
Solver | Solver used ('ecpMINLP'). | |
SolverAlgorithm | Description of method used. | |
Prob | Problem structure used. |
Algorithm
ecpMINLP Solves convex or pseudo-convex mixed-integer nonlinear programming problems using an extended cutting plane algorithm with cuts regulated by a parameter-vector alpha. Cuts and linearizations are added to MIP subproblem which is then solved by a subsolver in each iteration.
The solver algorithm is mainly based on the paper 'Solving Pseudo-Convex Mixed Integer Optimization Problems by Cutting Plane Techniques' by Tapio Westerlund and Ray Pörn, published in Optimization and Engineering 3, 253-280, 2002, with some modifications.
Most prominent features in addition to the ones described in the main reference above are
- Solving the relaxed NLP problem initially to obtain a lower bound on the solution.
- A rounding heuristics performed on the initial NLP solution in order to obtain an initial upper bound on the initial solutions.
- Optional use of a cutpool for the alpha-regulated extended cutting planes.