[SCIP] Propagating constraints, rows and variables

Marc Pfetsch pfetsch at mathematik.tu-darmstadt.de
Mon May 10 18:27:56 CEST 2021



Hi Rolf,

I will try to answer your questions inline ...

> In the coloring application, in order to 'remove' a (non-negative)
> variable x from the formulation,  the upper bound is simply changed to
> 0.0 in propagation (see cons_storeGraph.c, ~line 706). Does calling
> SCIPchgVarUB(scip,x,0.0) also ensure that the variable is removed from
> the internal representation of the LP solver? Additionally, when calling
> this in the B&B tree, is the variable enabled again after leaving the
> subtree of the node that deactivated it?

The behavior of SCIPchgVarUb depends on the stage in which it is called:

- Before or during presolving, the variable gets fixed and removed from
the problem.

- During solving, the variable is only fixed in the current node. Thus,
the variable is not fixed in other nodes of the tree (non-descendants of
the current node).

> SCIPdelConsNode() seems to work well for constraints, however I run into
> some issues when trying to propagate cutting planes.
> I also have a separator, where I add cuts using SCIPcreateEmptyRowSepa()
> and SCIPaddRow(). How can I propagate these cuts? There is no interface
> as there is for normal constraints.

Rows are added to the LP and cannot be propagated by themselves.
Propagation can only be performed by constraint handlers and
propagators. Thus, if you need a particular propagation method, you need
to write a constraint handler (or propagator) that will produce the rows
and perform propagation.

> I have 'local' set to FALSE and
> 'removable' set to TRUE in SCIPcreateEmptyRowSepa();  If, due to domain
> propagation of the variables, a cut no longer cuts off part of the
> relevant problem, is the cut then automatically removed from the LP?

The cut is automatically removed if it has been inactive for a while
(this is called aging). Moreover, inactive rows are removed from the LP
at the end of the processing of a node (parameters lp/cleanuprows(root)).

Best

Marc


More information about the Scip mailing list