[Scip] Misusing a SCIP instance as a separation oracle

Matthias Walter xammy at xammy.info
Fri Mar 6 14:39:12 CET 2015


Hi Ambros,

first thanks for the detailed reply!

On 03/04/2015 04:51 PM, Ambros Gleixner wrote:
> I am not sure whether you already received some feedback.  Just a
> few comments.  Making integer variables continuous is dangerous if
> they are contained in constraint handlers that allow only specific
> types, like the knapsack constraint handler would only allow binary
> variables.  If all your constraints are linear, for example, then
> this should be ok.

Okay, I see the point.

> Furthermore, if you impose the current solution as lower bounds, the
> LP may be infeasible after separation, so you have to be aware of
> that possibility.

Yes - I hope to be able to intercept SCIP at this point before it
returns "infeasible" in order to see the rows of the LP.

> Also, I am not sure whether you can forbid constraint handlers to 
> perform propagation during enforcement, so in general you may have
> to convert bound changes to singleton cuts.

But am I right here in that this (since I only solve the root node) can
only result in bound changes? Since I know the original bounds, I can
easily observe changes. And if some constraint sets a new bound, then
mathematically I would say this inequality belongs to the LP relaxation
associated to this constraint (or the set of constraints, since I don't
care which one is guilty) and so I'm fine with it being added.

> Adding locks to all variables is probably a good idea to be sure to 
> avoid anybody performing dual reductions using the artificial
> objective function.

Good point, thank you.

> I am not sure how you would go about inspecting the new cuts most 
> efficiently/conveniently.

I will go and find out!

Best,

Matthias

> Am 18.02.2015 um 10:49 schrieb Matthias Walter:
>> Dear list,
>> 
>> I want to use a given SCIP instance (for a MIP) as a separation
>> oracle for the linear relaxation, i.e., given some point x I want
>> to find (if it exists) an inequality valid for the LP relaxation
>> but not for x. I don't know the SCIP instance very well, except
>> that I assume that all constraints can be enforced using linear
>> inequalities. By LP relaxation I mean the intersection of all
>> inequalities coming from constraints, e.g. for the TSP example the
>> bounds, degree constraints, but also all subtour inequalities. I
>> suppose that I can't just call the CONSENFOLP callback of every
>> constraint outside of a SCIPsolve call since they might require
>> other data to be set up, like a transformed problem, or they could
>> even be deactivated, etc.
>> 
>> So my idea was to do the following and I would be happy to get
>> some feedback or hints on whether this sounds like a stupid one:
>> 
>> - Turn off presolve, cuts, conflict propagation. and heuristics. -
>> Make integer variables continuous. - Fix lower bounds to x and
>> change objective to minimize the sum of all variables to make x the
>> unique basic solution. - Run SCIP and inspect the LP whether x is
>> cut off and which row(s) do it.


More information about the Scip mailing list