CPXXrefinemipstartconflictext and CPXrefinemipstartconflictext
The routine CPXXrefinemipstartconflictext/CPXrefinemipstartconflictext
refines a conflict of a model inferred from a MIP start, where
a MIP start consists of pairs of variables and values and where
the model may include
quadratic constraints, indicator constraints, or special ordered sets,
as well as linear constraints and bounds.
int CPXXrefinemipstartconflictext( CPXCENVptr env, CPXLPptr lp, int mipstartindex, CPXNNZ grpcnt, CPXNNZ concnt, double const * grppref, CPXNNZ const * grpbeg, CPXDIM const * grpind, char const * grptype )
int CPXrefinemipstartconflictext( CPXCENVptr env, CPXLPptr lp, int mipstartindex, int grpcnt, int concnt, double const * grppref, int const * grpbeg, int const * grpind, char const * grptype )
Description
The routine CPXXrefinemipstartconflictext/CPXrefinemipstartconflictext
refines a conflict of a model inferred from a MIP start, where
a MIP start consists of pairs of variables and values and where
the model may include
quadratic constraints, indicator constraints, or special ordered sets,
as well as linear constraints and bounds. In other words, this routine
extends CPXXrefinemipstartconflict/CPXrefinemipstartconflict
to MIP starts applied to models with indicator constraints,
quadratic constraints, or special ordered sets (SOSs) and to
situations where groups of constraints should be considered
as a single constraint. That is, this routine identifies a minimal
conflict for the infeasibility of the
MIP start or a subset of the constraints in the model.
Like the routine CPXXrefineconflictext/CPXrefineconflictext,
this routine considers constraints in groups.
If any constraint in a group
participates in the conflict, the entire group is determined to do so.
No further detail about the constraints within that group is returned.
A group may consist of a single constraint.
A group may be assigned a preference; that is, a value specifying how much the user wants the group to be part of a conflict. A group with a higher preference is more likely to be included in the conflict. However, no guarantee is made when a minimal conflict is returned that other conflicts containing groups with a greater preference do not exist.
To retrieve information about the conflict computed by
CPXXrefinemipstartconflictext/CPXrefinemipstartconflictext, call the routine
CPXXgetconflictext/CPXgetconflictext.
To write the conflict to a file,
use the routine CPXXclpwrite/CPXclpwrite.
This conflict is a submodel of the original model with the property that CPLEX cannot generate a solution from the chosen MIP start using the given level of effort and that removal of any constraint or bound in the conflict invalidates that property.
If grpcnt == 0, concnt == 0,
grppref == NULL, grpbeg == NULL,
grpind == NULL, and grptype == NULL then constraint groups will be automatically created.
To retrieve information about the constraint groups that were
automatically created as a result of this routine, call the routines
CPXXgetconflictnumgroups/CPXgetconflictnumgroups
and
CPXXgetconflictgroups/CPXgetconflictgroups.
The parameters CPXPARAM_MIP_Tolerances_UpperCutoff,
CPXPARAM_MIP_Tolerances_LowerCutoff,
CPXPARAM_Simplex_Limits_UpperObj,
CPXPARAM_Simplex_Limits_LowerObj
do not influence this routine.
If you want to study infeasibilities introduced by those parameters,
consider adding an objective function constraint to your model to
enforce their effect before you invoke this routine.
When the MIP start was added to the current model, an effort level may have been associated with it to specify to CPLEX how much effort to expend in transforming the MIP start into a feasible solution. This routine respects effort levels except level 1 (one): check feasibility. It does not check feasibility.
CPX_CON_LOWER_BOUND |
1 |
variable lower bound |
CPX_CON_UPPER_BOUND |
2 |
variable upper bound |
CPX_CON_LINEAR |
3 |
linear constraint |
CPX_CON_QUADRATIC |
4 |
quadratic constraint |
CPX_CON_SOS |
5 |
special ordered set |
CPX_CON_INDICATOR |
6 |
indicator constraint |
Arguments
- env
-
A pointer to the CPLEX environment as returned by the routine
CPXXopenCPLEX/CPXopenCPLEX. - lp
-
A pointer to a CPLEX problem object as returned by
CPXXcreateprob/CPXcreateprob. - mipstartindex
- The index of the MIP start among all the MIP starts associated with the problem.
- grpcnt
- The number of constraint groups to be considered.
- concnt
-
An integer specifying the total number of elements passed in the arrays
grpindandgrptype, or, equivalently, the end of the last group ingrpind. - grppref
-
An array of preferences for the groups. The value
grppref[i]specifies the preference for the group designated by the indexi. A negative value specifies that the corresponding group should not be considered in the computation of a conflict. In other words, such groups are not considered part of the MIP start. Groups with a preference of 0 (zero) are always considered to be part of the conflict. No further checking is performed on such groups. - grpbeg
-
An array of integers specifying where the constraint indices for each group begin in the array
grpind. Its length must be at leastgrpcnt. - grpind
-
An array of integers containing the indices for the constraints in each group. For each of the various types of constraints listed in the table, the constraint indices range from 0 (zero) to the number of constraints of that type minus one. Group
icontains the constraints with the indicesgrpind[grpbeg[i]], ..., grpind[grpbeg[i+1]-1]foriless thangrpcnt-1, andgrpind[grpbeg[i]], ..., grpind[concnt-1]fori == grpcnt-1. Its length must be at leastconcnt. A constraint must not be referenced more than once in this array. For any constraint in the problem that is not a member of a group and thus does not appear in this array, the constraint is assigned a default preference of 0 (zero). Thus such constraints are included in the conflict without any analysis. - grptype
-
An array of characters containing the constraint types for the constraints as they appear in groups. The types of the constraints in group
iare specified ingrptype[grpbeg[i]], ..., grptype[grpbeg[i+1]-1]foriless thangrpcnt-1andgrptype[grpbeg[i]], ..., grptype[concnt-1]fori == grpcnt-1. Its length must be at leastconcnt, and every constraint must appear at most once in this array. Possible values appear in the table.