NO FRAMES

CPXrefineconflictext

public int CPXrefineconflictext(CPXCENVptr env, CPXLPptr lp, int grpcnt, int concnt, const double * grppref, const int * grpbeg, const int * grpind, const char * grptype)
Definition file: cplex.h

The routine CPXrefineconflictext extends CPXrefineconflict to problems with indicator constraints, quadratic constraints, or special ordered sets (SOSs) and to situations where groups of constraints should be considered as a single constraint. The routine CPXrefineconflictext identifies a minimal conflict for the infeasibility of the current model or a subset of constraints of the current model. Since the conflict is minimal, removal of any group of constraints that is a member of the conflict will remove that particular source of infeasibility. However, there may be other conflicts in the model; consequently, that repair of one conflict does not guarantee feasibility of the solution of the remaining model.

Constraints are considered in groups in this routine. 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 CPXrefineconflictext, call the routine CPXgetconflictext.

Table 1: Possible values for elements of grptype
CPX_CON_LOWER_BOUND1variable lower bound
CPX_CON_UPPER_BOUND2variable upper bound
CPX_CON_LINEAR3linear constraint
CPX_CON_QUADRATIC4quadratic constraint
CPX_CON_SOS5special ordered set
CPX_CON_INDICATOR6indicator constraint

See Also:

Parameters:

env

A pointer to the CPLEX environment as returned by the routine CPXopenCPLEX.

lp

A pointer to a CPLEX problem object as returned by CPXcreateprob.

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 indicates 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 model. 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 indicating 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 as they appear in groups, by type as specified for the constraint in grptype. 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 == grpcn-1t. 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 Table 1.

Returns:

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