## AThe Matlab Interface Routines - Main Routines

### A.1cplex

Purpose
CPLEX solves mixed-integer linear and quadratic programming (MILP, MIQP) and linear and quadratic programming (LP, QP) interface. For users with a full license for the optimizer, the solver also handles problems with quadratic constraints (MIQQ). CPLEX solves problems of the form
 min x
f(x) =
1
2
xT F x + cT x
s/t xL x xU
bL Ax bU
xT Q(i) x + a(i)T x rU(i), i=1,…,nqc
xi integer   i I
where c, x, xL, xU, a(i) Rn, F, Q(i) Rn× n, A Rm× n and bL,bU Rm. rU(i) is a scalar. The variables x I, the index subset of 1,...,n, are restricted to be integers.

If F is empty and no quadratic constraints are given, an LP or MILP problem is solved.

An additional set of logical constraints can also be defined. See the help for input parameter logcon.
Calling Syntax
[x, slack, v, rc, f_k, ninf, sinf, Inform, basis, lpiter, glnodes, confstat, iconfstat, sa] = cplex(c, A, x_L, x_U, b_L, b_U, cpxControl, callback, PriLev, Prob, IntVars, PI, SC, SI, sos1, sos2, F, logfile, savefile, savemode, qc, confgrps, conflictFile, saRequest, basis, xIP, logcon);
Description of Inputs
The following fields are used:

c Linear objective function cost coefficients, vector n × 1.

A Linear constraint matrix for linear constraints, dense or sparse matrix m × n.

x_L Lower bounds on design parameters x. If empty assumed to be zero.
x_U Upper bounds on design parameters x.

b_L Lower bounds on the linear constraints.

The following parameters are optional:

b_U Upper bounds on the linear constraints. If empty, then b_U=b_L is assumed, i.e. equality constraints.

cpxControl Structure, where the fields are set to the CPLEX control parameters that the user wants to specify values for.
callback 0−1 vector defining which callbacks to use in CPLEX. If the ith entry of the logical vector callback is set, the corresponding callback is defined. The callback calls the m-file specified in Table A.1 below. The user may edit this file, or make a new copy, which is put in a directory that is searched before the cplex directory in the Matlab path.

PriLev Printing level in the cplex m-file and the CPLEX C-interface.
= 0 Silent
= 1 Summary information
= 2 More detailed information

Prob A structure. If cplex.m is called through cplexTL.m, for example when the user has used the TOMLAB driver routine tomRun, then Prob is the standard TOMLAB problem structure.

Otherwise the user optionally may set: Prob.P = ProblemNumber;   , where ProblemNumber is some integer. If any callback is defined then problem arrays are set as fields in Prob, and the Prob structure is always passed to the callback routines as the last parameter. The defined fields are Prob.c, Prob.x_L, Prob.x_U, Prob.A, Prob.b_L, Prob.b_U and Prob.QP.F. If the input structure is empty ([ ]), then Prob.P=1 is set.

IntVars Defines which variables are integers, of the general type I or binary B. Variable indices should be in the range [1,...,n]. If IntVars is a logical vector then all variables xi where IntVars(i) > 0 are defined to be integers. If IntVars is determined to be a vector of indices then x(IntVars) are defined as integers. If the input is empty ([ ]), then no integers of type I or B are defined. The interface routine cplex checks which of the integer variables have lower bound xL=0 and upper bound xU=1, i.e. are binary 0/1 variables.

PI Integer variables of type Partially Integer (PI), i.e. takes an integer value up to a specified limit, and any real value above that limit. PI must be a structure array where:
PI.var is a vector of variable indices in the range [1,...,n].
PI.lim is a vector of limit values for each of the variables specified in PI.var, i.e. for variable i, that is the PI variable with index j in PI.var, then x(i) takes integer values in [xL(i),PI.lim(j)] and values in [PI.lim(j),xU(i)].

SC A vector with indices for the integer variables of type Semi-continuous (SC), i.e. that takes either the value 0 or a real value in the range [xL(i),xU(i)], assuming for some j, that i = SC(j), where i is an variable number in the range [1,...,n].

SI A vector with indices for the integer variables of type Semi-integer (SI), i.e. that takes either the value 0 or an integer value in the range [xL(i),xU(i)], assuming for some j, that i = SIe(j), where i is an variable number in the range [1,...,n].

sos1 A structure defining the Special Ordered Sets of Type One (sos1). Assume there are k sets of type sos1, then sos1(k).var is a vector of indices for variables of type sos1 in set k. sos1(k).row is the row number for the reference row identifying the ordering information for the sos1 set, i.e. A(sos1(k).row,sos1(k).var) identifies this information. As ordering information, also the objective function coefficients c could be used. Then as row number, 0 is instead given in sos1(k).row.

sos2 A structure defining the Special Ordered Sets of Type Two (sos2). Specified in the same way as sos1 sets; see sos1 input variable description.

F Quadratic coefficient matrix. Dense or sparse Matlab matrix, size n × n. The matrix is always converted to Matlab sparse format before ILOG CPLEX is invoked on the problem.

logfile Name of file to write the CPLEX log information to. If empty, no log is written.

savefile Name of a file to save the CPLEX problem object. This is useful for sending problems to ILOG for analysis. The format of the file is controlled by the following parameters, savemode. If empty, no file is written.

savemode The format of the file given in savefile is possible to choose by setting savemode to one of the following values:

 1 SAV Binary SAV format 2 MPS MPS format (ASCII) 3 LP CPLEX LP format (ASCII) 4 RMP MPS file with generic names 5 REW MPS file with generic names 6 RLP LP file with generic names

Modes 4-6 are of limited interest, since the TOMLAB interface does not provide a way to change the default row names in the first place.

qc Structure array defining quadratic constraints ("qc").

Please note that CPLEX 9.1 only handles single-sided bounds on quadratic constraints. An arbitrary number of qc's is set using the Prob.QP.qc structure array:

qc(1).Q = sparse( <quadratic coefficient nxn matrix> );
qc(1).a = full ( <linear coefficient nx1 vector > );
qc(1).r_U = <scalar upper bound>;

And similarly for qc(2), ... , qc(n_qc).

The standard interpretation is x'*Q*x + c'*x <= rU, but it is possible to define an alternative sense x'*Q*x + c'*x >= rL by setting qc(i).sense to a nonzero value and specifying a lower bound in qc(i).rL.

Observe that the Q matrix must be sparse, non-empty and positive semi-definite for all qc's. The linear coefficient vector qc(i).a may be omitted or set empty, in which case all zeros are assumed.

Likewise, if a bound r_U or r_L is empty or not present, it is assumed to be 0.0. Note that this is contrary to the usual TOMLAB standard, where an empty or omitted bound is assumed to be +/- Inf. The reason is that a single-sided constraint with an infinite bound would have no meaning.

confgrps Conflict groups descriptor (cpxBuildConflict can be used to generate the input). Set this if conflict refinement is desired in the case that infeasibility is detected by CPLEX.
A conflict group consists of lists of indices describing which of the following entities are part of a group:

confgrps(i).lowercol Column (variable) lower bounds
confgrps(i).uppercol Column (variable) upper bounds
confgrps(i).linear Linear rows
confgrps(i).sos Special ordered sets
confgrps(i).indicator Indicator constraints

Additionally, the group's priority value may be assigned in
confgrps(i).priority

Please refer to the TOMLAB /CPLEX User's Guide for an example of Conflict Refinement.

conflictFile Name of a file to write the conflict refinement to. No file is written if this input parameter is empty or if no conflict refinement is done.

saRequest Structure telling whether and how you want CPLEX to perform a sensitivity analysis (SA). You can complete an SA on the objective function, right hand side vector, lower and upper bounds. The saRequest structure contains four sub structures:

.obj, .rhs, .xl, .xu

Each one of these contain the field:

.index

.index contain indices to variables or constraints of which to return possible value ranges.

The .index array has to be sorted, ascending.

To get an SA of objective function on the four variables 120 to 123 (included) and variable 19, the saRequest structure would look like this:

saRequest.obj.index = [19 120 121 122 123];

The result is returned through the output parameter 'sa'.

basis Vector with CPLEX starting basis. If re-solving a similar problem several times, this can be set to the 'basis' output argument of an earlier call to cplex.m. The length of this vector must be equal to the sum of the number of rows (m) and columns (n).

The first m elements contain row basis information, with the following possible values for non-ranged rows:

0 associated slack/surplus/artificial variable nonbasic at value 0.0
1 associated slack/surplus/artificial variable basic

and for ranged rows (both upper and lower bounded)

0 associated slack/surplus/artificial variable nonbasic at its lower bound
1 associated slack/surplus/artificial variable basic
2 associated slack/surplus/artificial variable nonbasic at its upper bound

The last n elements, i.e. basis(m+1:m+n) contain column basis information:

0 variable at lower bound
1 variable is basic
2 variable at upper bound
3 variable free and nonbasic

xIP Vector with MIP starting solution, if known. Missing values may be set to NaN. Length should be equal to number of columns in problem.

logcon Logical constraints, i.e. an additional set of single-sided linear constraints that are controlled by a binary variable (switch) in the problem.

The following fields need to be set:

ind(1).row = [ a row, sparse or dense ];
ind(1).rhs = The right hand side value.
ind(1).var = Index for the binary variable that enables or disables this constraint.

The following fields are optional:

ind(1).sense = 0(default), 1, 2 or 'lt', 'eq', 'gt', i.e. if the constraint is <=, ==, >=.
ind(1).comp, if 0 (default) the constraint will be active if the binary variable is 1, and vice versa if ind(1).comp is set to 1.
ind(1).name, the name used in a save file.

Description of Outputs
The following fields are used:

x Solution vector x with decision variable values (n × 1 vector).
slack Slack variables (m × 1 vector).
v Lagrangian multipliers (dual solution vector) (m × 1 vector).
rc Reduced costs. Lagrangian multipliers for simple bounds on x.
f_k Objective function value at optimum.

ninf Number of infeasibilities.
sinf Sum of infeasibilities.

Inform Result of CPLEX run. (S=Simplex, B=Barrier)

 1 (S,B) Optimal solution is available 2 (S,B) Model has an unbounded ray 3 (S,B) Model has been proved infeasible 4 (S,B) Model has been proved either infeasible or unbounded 5 (S,B) Optimal solution is available, but with infeasibilities after unscaling 6 (S,B) Solution is available, but not proved optimal, due to numeric difficulties 10 (S,B) Stopped due to limit on number of iterations 11 (S,B) Stopped due to a time limit 12 (S,B) Stopped due to an objective limit 13 (S,B) Stopped due to a request from the user

 20 (B) Model has an unbounded optimal face 21 (B) Stopped due to a limit on the primal objective 22 (B) Stopped due to a limit on the dual objective

 32 Converged, dual feasible, primal infeasible 33 Converged, primal feasible, dual infeasible 34 Converged, primal and dual infeasible 35 Primal objective limit reached 36 Dual objective limit reached 37 Primal has unbounded optimal face 38 Non-optimal solution found, primal-dual feasible 39 Non-optimal solution found, primal infeasible 40 Non-optimal solution found, dual infeasible 41 Non-optimal solution found, primal-dual infeasible 42 Non-optimal solution found, numerical difficulties 43 Barrier found inconsistent constraints

 101 Optimal integer solution found 102 Optimal sol. within epgap or epagap tolerance found 103 Solution is integer infeasible 104 The limit on mixed integer solutions has been reached 105 Node limit exceeded, integer solution exists 106 Node limit exceeded, no integer solution 107 Time limit exceeded, integer solution exists 108 Time limit exceeded, no integer solution 109 Terminated because of an error, but integer solution exists 110 Terminated because of an error, no integer solution 111 Limit on tree memory has been reached, but an integer solution exists 112 Limit on tree memory has been reached; no integer solution 113 Stopped, but an integer solution exists 114 Stopped; no integer solution 115 Problem is optimal with unscaled infeasibilities 116 Out of memory, no tree available, integer solution exists 117 Out of memory, no tree available, no integer solution 118 Model has an unbounded ray 119 Model has been proved either infeasible or unbounded

basis Basis status of constraints and variables, ((m+n)× 1 vector). See inputs for more information.
lpiter Number of simplex iterations.
glnodes Number of nodes visited.

confstat Structure with extended conflict status information. This output is a replica of the Prob.CPLEX.confgrps input argument with the added fields 'status' and 'istat'. confstat(k).status gives a text description of the status of conflict group k; the corresponding istat field is the numeric value also available in iconfstat(k).

iconfstat Conflict status information. For an infeasible problem where at least one conflict group have been supplied in the confgrps input argument, this output argument contains the status of each conflict group, in the same order as given in the confgrps input.

The following values are possible:

-1 Excluded
0 Possible member
1 Possible LB
2 Possible UB
3 Member
4 Upper bound
5 Lower bound

If confstat is empty even though Conflict Refinement has been requested, there was a problem in the refinement process.

sa Structure with information about the requested SA, if requested. The fields:

obj Ranges for the variables in the objective function.

rhs Ranges for the right hand side values.

xl Ranges for the lower bound values.

xu Ranges for the upper bound values.

These fields are structures themselves. All four structures have identical field names:

status Status of the SA operation. Possible values:

1 = Successful.
0 = SA not requested.
-1 = Error: begin is greater than end.
-2 = Error: The selected range (begin...end) stretches out of available variables or constraints.
-3 = Error: No SA available.

lower The lower range.

upper The upper range.

Description
The interface routine cplex calls CPLEX to solve LP, QP, MILP, MIQP and MIQQ problems. The matrices A and F are transformed in cplex.m to the CPLEX sparse matrix format.

Error checking is made on the lengths of the vectors and matrices.
Callback functions.
Index m-file Description

(1) cpxcb_PRIM From primal simplex
(2) cpxcb_DUAL From dual simplex
(3) cpxcb_PRIMCROSS From primal crossover
(4) cpxcb_DUALCROSS From dual crossover
(5) cpxcb_BARRIER From barrier
(6) cpxcb_PRESOLVE From presolve
(7) cpxcb_MIP From mipopt
(8) cpxcb_MIPPROBE From probing or clique merging
(9) cpxcb_FRACCUT From Gomory fractional cuts
(10) cpxcb_DISJCUT From disjunctive cuts
(11) cpxcb_FLOWMIR From Mixed Integer Rounding cuts

### A.2cplexTL

Purpose
The TOMLAB /CPLEX MILP, MIQP, LP and QP solver. It solves linear programming (LP), quadratic programming (QP) , mixed integer linear programming (MILP) and mixed integer quadratic programming problems (MIQP). The solver also handles problems with quadratic constraints (MIQQ). cplexTL solves problems of the form
 min x
f(x) =
1
2
xT F x + cT x
s/t xL x xU
bL Ax bU
xT Q(i) x + a(i)T x rU(i), i=1,…,nqc
xi integer   i I
where c, x, xL, xU, a(i) Rn, F, Q(i) Rn× n, A Rm× n and bL,bU Rm. rU(i) is a scalar. The variables x I, the index subset of 1,...,n, are restricted to be integers.

An additional set of logical constraints can also be defined. See the help for input parameter CPLEX.logcon.
Calling Syntax
Prob = ProbCheck(Prob, 'cplex');
Result = cplexTL(Prob); or
Result = tomRun('cplex', Prob, 1);
Description of Inputs
Problem description structure. The following fields are used:

QP.c Linear objective function cost coefficients, vector n × 1.

QP.F Square n × n dense or sparse matrix. Empty if non-quadratic problem.

A Linear constraint matrix for linear constraints, dense or sparse m × n matrix.
b_L Lower bounds on the linear constraints.
b_U Upper bounds on the linear constraints.

x_L Lower bounds on design parameters x. If empty assumed to be −Inf.
x_U Upper bounds on design parameters x. If empty assumed to be Inf.

PriLevOpt Printing level in cplex.m file and the CPLEX C-interface.
= 0 Silent
= 1 Warnings and Errors
= 2 Summary information
= 3 More detailed information
> 10 Pause statements, and maximal printing (debug mode)

optParam Structure with optimization parameters. The following fields are used:
MaxIter Limit of iterations. If a value is given here, it is set as cpxControl.ITLIM. Note that a value given directly in Prob.MIP.cpxControl.ITLIM takes precedence.

MIP Structure holding information about mixed integer optimization. Also found here is the cpxControl structure in which CPLEX parameter settings can be made. The fields used are:

cpxControl Structure, where fields are set to the CPLEXcontrol parameters that the user wants to specify values for. Please refer to Section G for more information on how to set the fields.

IntVars Defines which variables are integers, of the general type I or binary B. Variable indices should be in the range [1,...,n]. If IntVars is a logical vector then all variables i where IntVars(i) > 0 are defined to be integers. If IntVars is determined to be a vector of indices then x(IntVars) are defined as integers. If the input is empty ([ ]), then no integers of type I or B are defined. The interface routine cplex.m checks which of the integer variables have lower bound xL=0 and upper bound xU=1, i.e. are binary 0/1 variables.

PI Integer variables of type Partially Integer (PI), i.e. takes an integer value up to a specified limit, and any real value above that limit. PI must be a structure array where:
PI.var is a vector of variable indices in the range [1,...,n].
PI.lim is a vector of limit values for each of the variables specified in PI.var, i.e. for variable i, that is the PI variable with index j in PI.var, then x(i) takes integer values in [xL(i),PI.lim(j)] and continuous values in [PI.lim(j),xU(i)].

SC A vector with indices for the integer variables of type Semi-continuous (SC), i.e. that takes either the value 0 or a real value in the range [xL(i),xU(i)], assuming for some j, that i = SC(j), where i is an variable number in the range [1,...,n].

SI A vector with indices for the integer variables of type Semi-integer (SI), i.e. that takes either the value 0 or an integer value in the range [xL(i),xU(i)], assuming for some j, that i = SI(j), where i is an variable number in the range [1,...,n].

sos1 A structure defining the Special Ordered Sets of Type One (sos1). Assume there are k sets of type sos1, then sos1(k).var is a vector of indices for variables of type sos1 in set k. sos1(k).row is the row number for the reference row identifying the ordering information for the sos1 set, i.e. A(sos1(k).row,sos1(k).var) identifies this information. As ordering information, also the objective function coefficients c could be used. Then as row number, 0 is instead given in sos1(k).row.

sos2 A structure defining the Special Ordered Sets of Type Two (sos2). Specified exactly as sos1 sets, see MIP.sos1 input variable description.

basis Basis for warm start of solution process. See Section A.1 and F.4 for more information.

xIP Vector with MIP starting solution, if known. NaN can be used to indicate missing values. Length should be equal to number of columns in problem. Values of continuous variables are ignored.

callback Logical vector defining which callbacks to use in CPLEX. If the ith entry of the logical vector callback is set, the corresponding callback is defined. The callback calls the m-file specified in Table A.2 below. The user may edit this file, or make a new copy, which is put in a directory that is searched before the cplex directory in the Matlab path.

CPLEX Structure with solver specific parameters for logging and saving problems. The following fields are used:

LogFile Name of file to write the CPLEX log information to. If empty, no log is written.

SaveFile Name of a file to save the CPLEX problem object. This is useful for sending problems to ILOG for analysis. The format of the file is controlled by the Prob.CPLEX.SaveMode. If empty, no file is written.

SaveMode The format of the file given in SaveFile is possible to choose by setting SaveMode to one of the following values:

 1 SAV Binary SAV format 2 MPS MPS format (ASCII) 3 LP CPLEX LP format (ASCII) 4 RMP MPS file with generic names 5 REW MPS file with generic names 6 RLP LP file with generic names

Modes 4-6 are of limited interest, since the TOMLAB interface does not provide a way to change the default row names.

confgrps Conflict groups descriptor (cpxBuildConflict can be used to generate the input). Set this if conflict refinement is desired in the case that infeasibility is detected by CPLEX.
A conflict group consists of lists of indices describing which of the following entities are part of a group:

confgrps(i).lowercol Column (variable) lower bounds
confgrps(i).uppercol Column (variable) upper bounds
confgrps(i).linear Linear rows
confgrps(i).sos Special ordered sets
confgrps(i).indicator Indicator constraints

Additionally, the group's priority value may be assigned in
confgrps(i).priority

Please refer to the TOMLAB /CPLEX User's Guide for an example of Conflict Refinement.

conflictFile Name of a file to write the conflict refinement to. No file is written if this input parameter is empty or if no conflict refinement is done.

sa Structure telling whether and how you want CPLEX to perform a sensitivity analysis (SA). You can complete an SA on the objective function, right hand side vector, lower and upper bounds. The saRequest structure contains four sub structures:

.obj, .rhs, .xl, .xu

Each one of these contain the field:

.index

.index contain indices to variables or constraints of which to return possible value ranges.

The .index array has to be sorted, ascending.

To get an SA of objective function on the four variables 120 to 123 (included) and variable 19, the saRequest structure would look like this:

saRequest.obj.index = [19 120 121 122 123];

The result is returned through the output parameter 'sa'.

logcon Logical constraints, i.e. an additional set of single-sided linear constraints that are controlled by a binary variable (switch) in the problem.

The following fields need to be set:

ind(1).row = [ a row, sparse or dense ];
ind(1).rhs = The right hand side value.
ind(1).var = Index for the binary variable that enables or disables this constraint.

The following fields are optional:

ind(1).sense = 0(default), 1, 2 or 'lt', 'eq', 'gt', i.e. if the constraint is <=, ==, >=.
ind(1).comp, if 0 (default) the constraint will be active if the binary variable is 1, and vice versa if ind(1).comp is set to 1.
ind(1).name, the name used in a save file.

QP.qc Structure array defining quadratic constraints ("qc").

Please note that CPLEX 9.1 only handles single-sided bounds on qc's. An arbitrary number of qc's is set using the Prob.QP.qc structure array:

qc(1).Q = sparse( <quadratic coefficient nxn matrix> );
qc(1).a = full ( <linear coefficient nx1 vector > );
qc(1).r_U = <scalar upper bound>;

And similarly for qc(2), ... , qc(n_qc).

The standard interpretation is x'*Q*x + c'*x <= rU, but it is possible to define an alternative sense x'*Q*x + c'*x >= rL by setting qc(i).sense to a nonzero value and specifying a lower bound in qc(i).rL.

Observe that the Q matrix must be sparse, non-empty and positive semi-definite for all qc's. The linear coefficient vector qc(i).a may be omitted or set empty, in which case all zeros are assumed.

Likewise, if a bound r_U or r_L is empty or not present, it is assumed to be 0.0. Note that this is contrary to the usual TOMLAB standard, where an empty or omitted bound is assumed to be +/- Inf. The reason is that a single-sided constraint with an infinite bound would have no meaning.

Description of Outputs
 Result structure. The following fields are used: Iter Number of iterations, or nodes visited. ExitFlag 0: OK. 1: Maximal number of iterations reached. 2: Unbounded feasible region. 4: No feasible point found. 5: Error of some kind. ExitText Number of iterations, or nodes visited. Inform Result of CPLEX run. See section A.1 for details on the ExitText and possible Inform values. x_0 Initial starting point not known, set as empty. QP.B Optimal active set, basis vector, in TOMLAB QP standard. B(i)=1: Include variable x(i) is in basic set. B(i)=0: Variable x(i) is set on its lower bound. B(i)=−1: Variable x(i) is set on its upper bound. f_k Function value at optimum, f(xk). g_k Gradient value at optimum, c or c + F * x. x_k Optimal solution vector xk. v_k Lagrangian multipliers (for bounds and dual solution vector). Set as vk = [rc;v], where rc is the n-vector of reduced costs and v holds the m dual variables. xState State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3; bState State of linear constraints. Free == 0; Lower == 1; Upper == 2; Equality == 3; Solver Solver used - CPLEX . SolverAlgorithm Solver algorithm used. FuncEv Number of function evaluations. Set to Iter. GradEv Number of gradient evaluations. Set to Iter. ConstrEv Number of constraint evaluations. Set to Iter. Prob Problem structure used. MIP.ninf Number of infeasibilities. MIP.sinf Sum of infeasibilities. MIP.slack Slack variables (m × 1 vector). MIP.lpiter Number of LP iterations. MIP.glnodes Number of nodes visited. MIP.basis Basis status of constraints and variables ( (m + n) × 1 vector) in the CPLEX format, fields xState and bState has the same information in the TOMLAB format. See Section A.1 and F.4 for more information. CPLEX.sa Structure with information about the requested SA, if requested. The fields: obj Ranges for the variables in the objective function. rhs Ranges for the right hand side values. xl Ranges for the lower bound values. xu Ranges for the upper bound values. These fields are structures themselves. All four structures have identical field names: status Status of the SA operation. Possible values: 1 = Successful. 0 = SA not requested. -1 = Error: begin is greater than end. -2 = Error: The selected range (begin...end) stretches out of available variables or constraints. -3 = Error: No SA available. lower The lower range. upper The upper range. CPLEX.confstat Structure with extended conflict status information. This output is a replica of the Prob.CPLEX.confgrps input argument with the added fields 'status' and 'istat'. confstat(k).status gives a text description of the status of conflict group k; the corresponding istat field is the numeric value also available in iconfstat(k). CPLEX.iconfstat Conflict status information. For an infeasible problem where at least one conflict group have been supplied in the Prob.CPLEX.confgrps input argument, this output argument contains the status of each conflict group, in the same order as given in the confgrps input. The following values are possible: -1 Excluded 0 Possible member 1 Possible LB 2 Possible UB 3 Member 4 Upper bound 5 Lower bound If confstat is empty even though Conflict Refinement has been requested, there was a problem in the refinement process.

Global Parameters Used
 cpxCBInfo cpxRetVec

Description
The TOMLAB CPLEX MILP, MIQP, QP and LP interface calls the interface routine cplex.m. Values > 1010 and Inf values are set to 1010, and the opposite for negative numbers. An empty objective coefficient c-vector is set to the zero-vector.
Examples
See mip_prob
M-files Used
cplex.m, mipRun.m
mipSolve
Callback functions.
Index m-file Description

(1) cpxcb_PRIM From primal simplex
(2) cpxcb_DUAL From dual simplex
(3) cpxcb_PRIMCROSS From primal crossover
(4) cpxcb_DUALCROSS From dual crossover
(5) cpxcb_BARRIER From barrier
(6) cpxcb_PRESOLVE From presolve
(7) cpxcb_MIP From mipopt
(8) cpxcb_MIPPROBE From probing or clique merging
(9) cpxcb_FRACCUT From Gomory fractional cuts
(10) cpxcb_DISJCUT From disjunctive cuts
(11) xpcb_FLOWMIR From Mixed Integer Rounding cuts