[Scip] How to update separators in a branch-price-and-cut?

Gerald Gamrath gamrath at zib.de
Mon Aug 30 17:15:53 MEST 2010


Hi Nikolaj,
> If I use SCIPaddCut with the flag forcecut set to TRUE, is it guaranteed
> that SCIP will add the SCIP_ROW? Or will it perform some (hidden) tests
> before and only add the cut if these tests are successfully passed?
>   
No, SCIP should not perform hidden tests and should always add this cut
to the LP.
> If I don't want SCIP to remove the SCIP_ROW I added, I guess that I need
> to set the flag removable in SCIPcreateRow to FALSE. Is this enough to
> have a guarantee the SCIP_ROW will stay in the LP?
>   
Yes, that should be enough.
> How do I do to delete from the LP (and the cutpool) some of the added
> SCIP_ROWs (I don't touch the initial model contraints)?
>   
I'm afraid that this is not possible. There is no method in SCIP that
allows you to remove a row from the LP, because that is only allowed
under some conditions and is normally done automatically by SCIP. Why
don't you want to allow SCIP to remove cuts from the LP if they were not
tight for some time? Do they really help with the numerics in that case?
> The LPs I have to solve are numerically very unstable and I need to be
> able to add some cuts even if they are "poor". At the same time, the LPs
> are huge, so I need to be able to reduce them as much as possible as soon
> as possible.
>
>   
Well I don't know what you mean with "poor" in this context, but if you
just want to add cuts even if they don't cut off much of the polyhedron,
you could as well set the parameters "separating/minefficacyroot" and
"separating/minefficacy" to a smaller value. You could do the same with
the parameters for orthogonality, but not allowing nearly parallel cuts
(like it is done per default in SCIP) normally helps to preserve the
numerical stability. So you could try some different values for this
parameters, if you want. However, these parameters are only of interest
if you don't set the forcecut parameter to TRUE.

Also, if cuts should be removed from the LP as fast as possible, you
could just decrease the parameter "lp/rowagelimit", so that rows are
removed faster from the LP. And just take a look at the other advanced
lp-parametes, perhaps there are some more that can help you.

Best, Gerald


More information about the Scip mailing list