# 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

$\begin{array}{cccccc} \min\limits_{x} & f(x) \\s/t & x_{L} & \leq & x & \leq & x_{U} \\& b_{L} & \leq & Ax & \leq & b_{U} \\& c_{L} & \leq & c(x) & \leq & c_{U} \\& & & {x_{j} \in \mathbb{N} \ \ \forall j \in I} \\ \end{array}$

where $x,x_{L},x_{U}\in \mathbb{R}^{n}$ , $c(x),c_{L},c_{U}\in \mathbb{R}^{m_{1}}$ , $A\in \mathbb{R}^{m_{2}\times n}$ and $b_{L},b_{U}\in \mathbb{R}^{m_{2}}$. The variables $x \in I$ , the index subset of 1,...,n 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
FieldDescription
x_LLower bounds on x.
x_UUpper bounds on x.
AThe linear constraint matrix.
b_LLower bounds on linear constraints.
b_UUpper bounds on linear constraints.
c_LLower bounds on nonlinear constraints.
c_UUpper bounds on nonlinear constraints.
f_LowLower bound on solution.
x_0Starting point.
MaxCPUMaximal CPU Time (in seconds) to be used by ecpMINLP, stops with best point found
PriLevPrint level in ecpMINLP (default 1). Also see optParam.IterPrint
valueoutput
=0Silent.
>0Initial information and convergence results.
>1Output a line whenever the solution has improved, containing:

nIterations, nCuts, nCuts with criteria fulfilled, nLinearizations, nSpecialCuts, best solution.

>2Output a line every iteration with the following information:
labeldescription
It Iterations
nECP Number of extended cutting planes (ECP)
nAlpha>=limNumber of ECP with criteria fulfilled
nL Number of linearizations
nSECP Number of special case ECP
(created from constraint on bound)
fIPMin Objective of best solution at current iteration
>3Output a description of each step in the MINLP algorithm
>4Output additional numerical information in some algorithm steps
>5Output information in substeps (preprocessing, line search)
PriLevOptMIPPrint level in MIP sub-solvers, (CPLEX and others, see the documentation for the solver used).

Usually:
=0 No output
>0 Convergence results
>1 Output every iteration
>2 Output each step in the algorithm

PriLevOptNLPPrint level in NLP sub-solvers, (SNOPT and others, see the documentation for the solver used).

Usually:
=0 No output
>0 Convergence results
>1 Output every iteration
>2 Output each step in the algorithm

SolverMIPName 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);

SolverLPName of the solver used for LP subproblems when SolverMIP == mipSolve
MIPStructure with parameters specific to mixed integer optimization. See the table below describing the fields used in the MIP structure.
ECPMINLPStructure with parameters specific to the ecpMINLP solver. See the table below describing the fields used in the ECPMINLP structure.
optParamStructure 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:
FieldDescription
IntVarsIf 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.
fIPAn upper bound on the IP value wanted. Makes it possible to cut branches and avoid node computations. Used even if xIP not given.
xIPThe x-values giving the fIP value, if a solution (xIP,fIP) is known.
DualGapecpMINLP 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.
The lower bound Prob.f_Low is used, (default -1.0e300), which can also be set by the user. If f_Low has not been changed from default the lower bound is obtained from the initial solution of a relaxed problem, but only when ECPMINLP.INIT_BND is 1 or 2 (default).
Default DualGap is -1, not used.

PPPPre-processing and probing, default is 0.

0 Not used. Default.
1 Apply initially on MINLP problem.
2 Apply each iteration before solving MILP sub-problem.

ROUNDHIf nonzero, a rounding heuristics will be used on the initial NLP solution in order to obtain an initial integer solution. Requires ECPMINLP.InitBndType enabled. Default is 1, enabled.

### ECPMINLP structure

Substructure in Prob with solver-specific options.

fields used in Prob.ECPMINLP
FieldDescription
betaMultiplier when increasing alpha after an infeasible MILP solution.

Alpha is a parameter individually adjusting each cutting plane, starting at 1.0 and increasing until meeting a certain criterion.
Default value for beta is 1.3.

gammaMultiplier when increasing alpha when MILP solution does not violate any nonlinear contraints, but still does not decrease the upper bound of the objective.

Alpha is a parameter individually adjusting each cutting plane, starting at 1.0 and increasing until meeting a certain criterion.
Default value for gamma is 2.0.

PREALLOCFlag enabling preallocation of memory for cutting planes and linearizations.

0 No preallocation, dynamic growth of arrays. Current default.
1 Preallocate arrays.

InitBndTypeSelects method for setting lower bound when f_Low not changed from default.
valuemethod
0 No extra initial lower bound.
1 Use default TOMLAB NLP solver on problem with relaxed integer constraints. Add a linearization if a feasible MINLP solution was found.
2 Add an initial linearization as long as a feasible NLP solution was found. The linearization is a simple lower bound on the MILP objective. Default.
SET_TOLFlag enabling changing tolerances, described below under optParam.eps_x, optParam.eps_x and optParam.eps_f.

0 Default. Using the recommended solver default values, 1.0e-3.
1 Tolerances can be changed, taken from Prob.optParam.

IntSolLimIncrInteger option when using CPLEX as MIP subsolver.

Define how much the CPLEX parameter IntSolLimIncr increases when a feasible solution is not optimal and all alpha values have met their criteria.
When set to zero, the optimal strategy will instead be used immediately, without any gradual increase of INTSOLLIM.
Default is 1.

USE_CUTPOOLSet nonzero to use a pool for the alpha-regulated extended cutting planes.

Cuts not active in the MILP-solution for CutDelBound iterations in a row will be inactivated (removed from the MILP-problem) until they are violated in a new solution.
Default is 0, not used.

CutDelBoundThe number of consecutive times an extended cutting plane can be inactive before it gets removed and put into the inactive pool, if the option USE_CUTPOOL is set nonzero.

Default is 15 times.

MaxIterWoImprLimit on the number of successive iterations allowed without any improvements at all to neither objective nor solution point before the solver terminates

Default is 2.

USE_NLP=1 User and NLP sub-solver on the initial integer-relaxed original problem, as well as the NLP problem with fixed integer values during the main iteration.

=2 Use a global sub-solver on the initial integer-relaxed problem, as well as the NLP problem with fixed integer values during the main iterations. Setting UseNLP = can increase the likelihood of finding a global optimal solution for nonconvex problems.
Default is 1

If UseNLP is set to 2, the following parameters in the Prob-struct are used:
FieldDescription
Prob.RandStateSee help rngset for how to initialize the random generator.

Default randState = -1
If Convex == 0 and globalSolver == 'multiMin', RandState is sent to multiMin to initialize the random generator.

Prob.xInitParameter sent to the solver multiMin which is used to solve relaxed sub-problems for nonconvex problems (with Prob.Convex set to false).

xInit determines the way initial points are generated and is set as follows:

Either
1x1 number
If > 0, the number of random initial points, default min(3000,30*n);
If < 0, generate |xInit| points with Latin Hypercube design

d x m matrix - Every column is an initial point (of length d = Prob.N)

Default value for xInit is min(3000,max(60,N*6)) except for the initial problem.

Prob.xInit0Parameter sent to the solver multiMin when solving the initial relaxed NLP problem. Default value for xInit0 is min(3000,max(100,N*10)).

Prob.globalSolverUsed to solve the NLP subproblem for nonconvex problems (when Prob.Convex set to false). Default is multiMin.

multiMin is using SolverNLP and SolverNLP0 as the NLP sub-solver.

RESELECT_CUTSSet nonzero to enable cut reselection heuristics. Default is 1, enabled.
SCALE_CUTSSet 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
FieldValue
MaxIterMaximal number of iterations, default 10000
IterPrintPrint short information each iteration. Setting PriLev > 2 also enables IterPrint, setting it to 1.
eps_xLinear constraint violation convergence tolerance. Default is 2.0e-6
eps_gConstraint violation convergence tolerance. Default is 1.0e-7
eps_fOptimality tolerance. Default is 1.0e-8

NOTE: For the solver to use these tolerances, the flag ECPMINLP.SET_TOL must be set to nonzero.

## Outputs

ResultStructure with result from optimization. The following fields are used:
Iter Number of iterations.
ExitFlag Exit flag.

0: 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: Problem in subsolver, see Inform value.
99: Maximal CPU Time used (cputime > Prob.maxCPU

InformInform for ExitFlag != 3

0: Global solution found.
1: Local solution found.
2: No solution found.
>2: Inform value from subsolver.

ExitTextText string giving ExitFlag and Inform information.
DualGapRelative duality gap, set as follows:
Condition fulfilledDualGap value set
fIPMin ~= 0fIPMin|
fIPMin == 0max(0,fIPMin-fLB)

To get the percentage duality gap, scale with 100.
PercentageGap = 100*Dual- Gap.
To get the absolute value duality gap, scale with fIPMin.
AbsoluteGap = fIPMin * DualGap

x_kSolution.
xVector of solution points, sorted on ascending order based on the correcsponding objective values returned in f. x(:,1) is always equal to x_k.
f_kFunction value at optimum.
fThe objective vales at all encountered solution points in x. Sorted in ascending order.
g_kGradient vector at optimum.
c_kConstraint values at optimum.
cJacConstraint derivative values at optimum.
xStateState of each variable, described in TOMLAB Appendix B.
bStateState of each constraint, described in TOMLAB Appendix B.
cStateState of each general constraint, described in TOMLAB Appendix B.
x_0Starting point x_0.
SolverSolver used ('ecpMINLP').
SolverAlgorithmDescription of method used.
ProbProblem 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.
• Special treatment of problems with integer variables which are not continuously differentiable.