[SCIP] Branch price cut algorithm -> price again after adding cuts

Schrotenboer, A.H. a.h.schrotenboer at rug.nl
Mon Jan 16 10:54:31 CET 2017


Dear Jakob,

Thank you for your quick response.

First on the LP error messages: I made a small mistake in the formulation
of the added constraints, so this is solved. It however does not solve the
strange behaviour of not entering a pricing round again after adding
constraints/cuts.

On the constraints adding: Actually I use the constraint handler to handle
constraints belonging to branching decisions. So i actually 'misuse'  the
sepalp call to add additional valid inequalities to the problem. I set the
initial flag to true as you mentioned, so that could not cause the strange
behaviour.

I implemented it now by adding rows instead of constraints, and added them
by    SCIP_CALL( SCIPaddCut(scip_, NULL, row, FALSE, &infeasible) );
This gives me a segfault:

==25272== Process terminating with default action of signal 11 (SIGSEGV)
==25272==  Access not within mapped region at address 0x40
==25272==    at 0x4F6760: SCIPconshdlrIncNAppliedCuts (in
/home/p267375/Github/bpc/SCIP_project/bin/vrp.linux.x86_64.gnu.opt.cpx)
==25272==    by 0x5ED1E0: sepastoreApplyCut (in
/home/p267375/Github/bpc/SCIP_project/bin/vrp.linux.x86_64.gnu.opt.cpx)
==25272==    by 0x5EE751: SCIPsepastoreApplyCuts (in
/home/p267375/Github/bpc/SCIP_project/bin/vrp.linux.x86_64.gnu.opt.cpx)
==25272==    by 0x60C283: priceAndCutLoop.isra.14 (in
/home/p267375/Github/bpc/SCIP_project/bin/vrp.linux.x86_64.gnu.opt.cpx)
==25272==    by 0x60ED50: propAndSolve.isra.16 (in
/home/p267375/Github/bpc/SCIP_project/bin/vrp.linux.x86_64.gnu.opt.cpx)
==25272==    by 0x60F9F9: SCIPsolveCIP (in
/home/p267375/Github/bpc/SCIP_project/bin/vrp.linux.x86_64.gnu.opt.cpx)
==25272==    by 0x5E2DE2: SCIPsolve (in
/home/p267375/Github/bpc/SCIP_project/bin/vrp.linux.x86_64.gnu.opt.cpx)


So I thought it is better to create an Sepa Class and implement the
execlp method to do the same thing. I add them as constraints and this
seems to work :))
I by the way intended to use constraints instead of cuts since I need the
dual values of the added inequalities for my pricing process.

Cheers,

Albert








On Mon, Jan 16, 2017 at 9:09 AM, Jakob Witzig <witzig at zib.de> wrote:

> Hi Albert,
>
> when you implement the SCIP_DECL_CONSSEPA callback for your
> branch-price-and-cut approach you could think about adding a cut (SCIP_ROW)
> instead of a constraint (SCIP_CONS). Within SCIP there is are slight
> differences between both types, e.g., a constraint can be propagated and a
> cut not. When you decide to add cuts instead of constraints, the result
> pointer needs to be set to SCIP_SEPARATED.
>
> Moreover, you should make sure that your constraints (in your current
> implementation) enter the LP, i.e., set initial flag to TRUE.
>
> The warnings are printed by SCIP (see lp.c) and just say that your LP is
> numerically unstable and the LP solver struggles with solving them. You
> should have a look at your formulation and the constraints/cuts you
> generate.
>
> Cheers,
> Jakob
>
>
> Am 14.01.2017 um 22:06 schrieb Schrotenboer, A.H.:
>
>> Hello all,
>>
>> I'm using the c++ wrapper classes of scip to implement a branch & price
>> & cut algorithm. So in each node of the branch and bound tree i do
>> column generation. After that is finished, i want to add cuts (valid
>> inequalities actually). I did that by implementing the function of my
>> constraint handler: SCIP_DECL_CONSSEPALP(ObjConshdlrMSPRP::scip_sepalp),
>> where ObjConshdlrMSPRP denotes my own Constraint Handler class.
>>
>> After it has added constraints to the LP via multiple calls of
>> SCIP_CALL(SCIPaddCons(scip_, cons)), where 'cons' is a simple linear
>> constraint, it  sets ' *result = SCIP_CONSADDED'.
>>
>> After the cuts are added, it should redo the column generation process,
>> since there are possibly new columns of negative reduced costs that
>> should enter the LP relaxation. This however does not happen. I get the
>> following strange calls of (i think cplex)
>>
>> (node 2) numerical troubles in LP 21 -- solve again with dual simplex
>> without scaling
>> (node 2) numerical troubles in LP 22 -- solve again with dual simplex
>> without presolving
>> (node 2) numerical troubles in LP 23 -- solve again with dual simplex
>> with tighter primal and dual feasibility tolerance
>> (node 2) numerical troubles in LP 24 -- solve again from scratch with
>> dual simplex
>>
>> Does someone know why this happens and/or why my pricing problem is not
>> entered again at the same node?
>>
>> Thanks in advance,
>>
>> Albert Schrotenboer
>>
>>
>>
>> _______________________________________________
>> Scip mailing list
>> Scip at zib.de
>> http://listserv.zib.de/mailman/listinfo/scip
>>
>>
>
> --
> Jakob Witzig
>
> Zuse Institute Berlin (ZIB)
>
> Division Mathematical Optimization and Scientific Information
> Research Group Mathematical Optimization Methods
>
> Takustrasse 7
> 14195 Berlin
>
> Tel. : +49 (0)30 84185-416
> Fax  : +49 (0)30 84185-269
> email: witzig at zib.de
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.zib.de/pipermail/scip/attachments/20170116/62a57be0/attachment.html>


More information about the Scip mailing list