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
.
is a scalar. The
variables
, are restricted to
be integers.
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
.
[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);
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).quad Quadratic constraints |
|
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. |
|
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. |
|
to the
CPLEX sparse matrix format.
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).
.
is a scalar. The
variables
, are restricted to
be integers.
An additional set of logical constraints can also be defined. See
the help for input parameter
.
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).quad Quadratic constraints |
|
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. |
|
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. |
|
-vector is set to the zero-vector.