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.

For documentation of those parameters, see the Parameters Reference Manual:

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.

Table 1. Table 1: Possible values for elements of grptype
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 grpind and grptype, or, equivalently, the end of the last group in grpind.
grppref
An array of preferences for the groups. The value grppref[i] specifies the preference for the group designated by the index i. 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 least grpcnt.
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 i contains the constraints with the indices grpind[grpbeg[i]], ..., grpind[grpbeg[i+1]-1] for i less than grpcnt-1, and grpind[grpbeg[i]], ..., grpind[concnt-1] for i == grpcnt-1. Its length must be at least concnt. 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 i are specified in grptype[grpbeg[i]], ..., grptype[grpbeg[i+1]-1] for i less than grpcnt-1 and grptype[grpbeg[i]], ..., grptype[concnt-1] for i == grpcnt-1. Its length must be at least concnt, and every constraint must appear at most once in this array. Possible values appear in the table.

Return

The routine returns 0 (zero) if successful and nonzero if an error occurs.