[Scip] Misusing a SCIP instance as a separation oracle

Ambros Gleixner gleixner at zib.de
Wed Mar 4 16:51:13 CET 2015


Hi Matthias,

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.

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.

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.

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

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

Good luck,
Ambros



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.
>
> Best,
>
> Matthias
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> http://listserv.zib.de/mailman/listinfo/scip
>

-- 
______________________________________________________________
Ambros M. Gleixner
Zuse Institute Berlin - TU Berlin - Berlin Mathematical School
http://www.zib.de/gleixner


More information about the Scip mailing list