[Scip] 'redundant' constraints and variable deletion

James Cussens james.cussens at york.ac.uk
Thu Jul 5 13:19:03 MEST 2012


I have a problem with two sets of Boolean variables. Set1 encodes a
directed graph. Set2 encodes a linear order for the nodes of the
graph.

I have a constraint "cons_dagcluster" which applies exclusively to
variables in Set1 and which rules out cyclic graphs.

I was experimenting and applied the cons_linearordering constraint
(from the SCIP examples) to Set2 and also made an approriate (set
packing) constraint linking Set1 and Set2 variables.

Since I just wanted access to the cons_linearordering propagation, I
decided to set enforce and check to FALSE on the the
cons_linearordering constraint. Upon doing this, SCIP presolving
proceeds to delete all my variables (after 241 rounds), including all
the Set1 variables (which are constrained by the cons_dagcluster
constraint).

You could argue that it was "wrong" to declare cons_linearordering as
effectively redundant, but I can't see how it should lead to all
variables being deleted.

I have got round the problem by (1) setting  enforce and check to TRUE
when creating the linearordering constraint (2) adding the following
lines at the top of the CONSCHECK and CONSENFOLP callbacks in
cons_linearordering.c

 *result = SCIP_FEASIBLE;
   return SCIP_OKAY;

This is hardly an elegant solution but on the other hand I'm getting
great performance!

Does anyone know what's going on here?

James

-- 
James Cussens
Dept of Computer Science &
York Centre for Complex Systems Analysis
Room 326, The Hub, Deramore Lane            Tel    +44 (0)1904 325371
University of York                                        Fax  +44
(0)1904 500159
York YO10 5GE, UK                               http://www.cs.york.ac.uk/~jc


More information about the Scip mailing list