optimal-br
optimal-br

Reputation: 59

Constraint handler implementation

Consider that we are solving a mixed integer linear program. We know that constraint handlers with negative checking priorities only have to deal with integral solution. (from documentation, last line of CONSHDLR_CHECKPRIORITY.

If we have such a constraint handler, then in the conscheck callback, we check if any constraint in the constraint handler is violated or not. If a constraint is violated, we return that the solution is infeasible. But, how is this infeasibility resolved? Will consenfolp always be called after conscheck in this case?

If SCIP has started branching, then the constraint handler can only be called on the nodes which have integer feasible LP relaxation solutions. If a constraint in the constraint handler is violated in this case, will consenfolp be called to resolve the infeasibility in this case?

Also, what is the meaning of this boolean parameter - misc/allowstrongdualreds? (definition - should strong dual reductions be allowed in propagation and presolving?)

Thanks!

Upvotes: 0

Views: 135

Answers (1)

Leon
Leon

Reputation: 1688

The conscheck callback does not get called for lp solutions, but rather for heuristic ones (that why it will only determine feasibility but not resolve any infeasibilities).

The consenfolp callback ALSO checks feasibility (but only for solutions coming from the lp solve) and then attempt to resolve infeasibility, e.g., by branching. I also talk about the difference between checking and enforcing a bit in this talk, around the 25 min mark.

A strong dual reduction is one that might cut off optimal solutions but leaves at least one optimal solution in the reduced feasible region (symmetry breaking is the obvious example here). In contrast a weak dual reduction might prune feasible solutions but never optimal ones.

Upvotes: 2

Related Questions