[SCIP] lp error when adding locally constraint
Ambros Gleixner
gleixner at zib.de
Tue May 5 16:12:43 CEST 2020
Hi Yunzhuang,
Am 05.05.20 um 08:55 schrieb Yunzhuang Shen:
> Hi Ambros,
>
> I see. Achterberg's thesis does helps me know deeper about scip.
>
> My current task is to introduce some locally valid cuts to split a
> search space.
> For instance, I need to split the root node into multiple nodes where
> the union of them is the original search space. And I need to solve the
> whole subtree rooted at a node once at a time in a certain order.
> _
> It likes doing local branching. I read the implementation of local
> branching in the given examples, which is done by copy the problem to
> subscip and solve it.
Yes, the reason is that we implemented local branching as a primal
heuristic, not as a branching scheme.
> However in my case, it adds too much additional cost since I need to
> solve lots of such subscip.
> I am currently implementing my own node selector for doing this but it
> is complicated.
> Is there a feasible approch for doing local branching within the scip?
There is no available implementation of local branching as branching
scheme, but the binpacking example contains and implementation of
Ryan-Foster-Branching, this should show you software-wise how to create
a branching by adding locally valid constraints:
https://scip.zib.de/doc-7.0.0/html/branch__ryanfoster_8c.php
Best,
Ambros
>
> Thanks,
> yunzhuang
> _
> ------------------------------------------------------------------------
> *From:* Ambros Gleixner <gleixner at zib.de>
> *Sent:* Wednesday, April 29, 2020 1:01 AM
> *To:* Yunzhuang Shen <s3640365 at student.rmit.edu.au>; scip at zib.de
> <scip at zib.de>
> *Subject:* Re: [SCIP] lp error when adding locally constraint
> Hi Yunzhuang,
>
>
> Am 23.04.20 um 16:36 schrieb Yunzhuang Shen:
>> Hi Ambros,
>>
>> Thanks for your quick response.
>>
>> After I compiled SCIP and SOPLEX to under debug mode, I cannot reproduce
>> the error because the problem did not pass an assertion in the SCIP. The
>> backtrace is the following: >
>> CO: /home/joey/Downloads/scip-6.0.1/src/scip/tree.c:2403:
>> SCIPnodeSetEstimate: Assertion `SCIPsetIsRelGE(set, newestimate,
>> node->lowerbound)' failed.
>> ==15345==
>> ==15345== Process terminating with default action of signal 6 (SIGABRT)
>> ==15345== at 0x69BAE97: raise (raise.c:51)
>> ==15345== by 0x69BC800: abort (abort.c:79)
>> ==15345== by 0x69AC399: __assert_fail_base (assert.c:92)
>> ==15345== by 0x69AC411: __assert_fail (assert.c:101)
>> ==15345== by 0x587623D: SCIPnodeSetEstimate (tree.c:2403)
>> ==15345== by 0x5870E9C: SCIPnodeCreateChild (tree.c:1016)
>> ==15345== by 0x1984F9:
>> COML::Branching::split_space_ml_symetric(Scip*, bool)
>> (branching_policy.cpp:499)
>> ==15345== by 0x19665B: COML::Branching::scip_execlp(Scip*,
>> SCIP_Branchrule*, unsigned int, SCIP_Result*) (branching_policy.cpp:233)
>> ==15345== by 0x199E5F: branchExeclpDynamicBranching
>> (branching_policy.cpp:804)
>> ==15345== by 0x54FE318: SCIPbranchruleExecLPSol (branch.c:1589)
>> ==15345== by 0x5500D06: SCIPbranchExecLP (branch.c:2538)
>> ==15345== by 0x578FD2C: SCIPbranchLP (scip_branch.c:1183)
>>
>> I think I did not pass the correct estimate value when I create the
>> child node.
>
> Good. The assert tells you that the estimate you give should be at
> least as large as the lower bound of the current node, on which you
> created the branching. You can query the lower bound with
> SCIPnodeGetLowerbound.
>
>
>> One other thing I need to ask is that the meaning of several
>> boolean parameters when create a local constraint. Specifically, do I
>> need to change them to other values when I create locally valid
>> constraint? (my observation from binpack and tsp example is that some of
>> the boolean paramters are different comparing to creating the global
>> constraint). My application senario is as the following: right after the
>> root node is solved, I create two chlid nodes splited by local
>> constraints.
>
> The local flag of SCIPcreateCons (or more specialized ones like
> SCIPcreateConsLinear) must be changed. The other flags are independent,
> the usual values should be fine.
>
>
>> Then I want to put an order on solving those two nodes.
>
> This could mean many things. Maybe the parameter
> "nodeselection/childsel" helps you, see also Chapter 6 of Tobias
> Achterberg's thesis
>
> https://aus01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fnbn-resolving.de%2Furn%3Anbn%3Ade%3A0297-zib-11129&data=02%7C01%7C%7Ce6bf1ce4b93a42a0553f08d7eb852096%7Cd1323671cdbe4417b4d4bdb24b51316b%7C0%7C0%7C637236829377421172&sdata=Gfy88YOosDIvTxCBvQMGJWCkkyG6UM668YZqV33Sw0o%3D&reserved=0
>
> If you want to fully force your own node processing order in SCIP, then
> it might be necessary to implement your own node selector, see
>
> https://aus01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fscip.zib.de%2Fdoc-7.0.0%2Fhtml%2FNODESEL.php&data=02%7C01%7C%7Ce6bf1ce4b93a42a0553f08d7eb852096%7Cd1323671cdbe4417b4d4bdb24b51316b%7C0%7C0%7C637236829377421172&sdata=PZNO4XzG%2BClVerOD127N2ExoIGbn9L3QY9df%2FZt%2Blus%3D&reserved=0
>
> Best,
> Ambros
>
>
>>
>> Thank you,
>> yunzhuang
>> ------------------------------------------------------------------------
>> *From:* Scip <scip-bounces at zib.de> on behalf of Ambros Gleixner
>> <gleixner at zib.de>
>> *Sent:* Thursday, April 23, 2020 11:30 PM
>> *To:* scip at zib.de <scip at zib.de>
>> *Subject:* Re: [SCIP] lp error when adding locally constraint
>> Dear Yunzhuang,
>>
>> We would need more details in order to help you with this issue.
>> Ideally, you
>>
>> - compile both SoPlex and SCIP in debug mode and provide us with a
>> backtrace, and
>>
>> - run your code through valgrind to check whether there is any memory
>> corruption.
>>
>> I assume you are developing under linux. It is much easier for us to
>> support debugging on linux than on other operating systems.
>>
>> Best,
>> Ambros
>>
>>
>>
>>
>> Am 23.04.20 um 10:51 schrieb Yunzhuang Shen:
>>> Hi there,
>>>
>>> I am using scip-6.0.1 for my research work. After creating local
>>> constraints by setting paramter <local> to true and adding them to
>>> nodes, the SCIP terminates after processing a number of nodes. The error
>>> is "corrupted size vs. prev_size" and is in inside the soplex solver. My
>>> workaround is setting the parameter initial to false so that the
>>> constraint is not added to lp. It works but I don't know whether that
>>> local constraint is still effective (prune all nodes that is invalid
>>> under this local constraint by propagation or other checks). I need to
>>> make sure the local contraint is fully effective over the tree whose
>>> root is added that local constraint.
>>>
>>> Thanks,
>>> yunzhuang
>>>
>>> _______________________________________________
>>> Scip mailing list
>>> Scip at zib.de
>>> https://aus01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flistserv.zib.de%2Fmailman%2Flistinfo%2Fscip&data=02%7C01%7C%7Ce6bf1ce4b93a42a0553f08d7eb852096%7Cd1323671cdbe4417b4d4bdb24b51316b%7C0%7C0%7C637236829377421172&sdata=I%2FGbdFyYS1lydZNnLngJCLoyS3FI5uN8eiCXOM%2F%2BdZ0%3D&reserved=0
>>>
>>
>> --
>> Ambros Gleixner, Research Group Mathematical Optimization Methods at
>> Zuse Institute Berlin,
>> https://aus01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.zib.de%2Fgleixner&data=02%7C01%7C%7Ce6bf1ce4b93a42a0553f08d7eb852096%7Cd1323671cdbe4417b4d4bdb24b51316b%7C0%7C0%7C637236829377431168&sdata=Ukf37Mpd6sm7cjNJdDFbRdtm%2FordHsfYmvn381e1tJk%3D&reserved=0
>> _______________________________________________
>> Scip mailing list
>> Scip at zib.de
>> https://aus01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flistserv.zib.de%2Fmailman%2Flistinfo%2Fscip&data=02%7C01%7C%7Ce6bf1ce4b93a42a0553f08d7eb852096%7Cd1323671cdbe4417b4d4bdb24b51316b%7C0%7C0%7C637236829377431168&sdata=r7QVmBjPR0Pu9UVE1u0BdGBAbmXSWqu5ms%2FGxnAdG8U%3D&reserved=0
>>
>
> --
> Ambros Gleixner, Research Group Mathematical Optimization Methods at
> Zuse Institute Berlin,
> https://aus01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.zib.de%2Fgleixner&data=02%7C01%7C%7Ce6bf1ce4b93a42a0553f08d7eb852096%7Cd1323671cdbe4417b4d4bdb24b51316b%7C0%7C0%7C637236829377431168&sdata=Ukf37Mpd6sm7cjNJdDFbRdtm%2FordHsfYmvn381e1tJk%3D&reserved=0
>
--
Ambros Gleixner, Research Group Mathematical Optimization Methods at
Zuse Institute Berlin, http://www.zib.de/gleixner
More information about the Scip
mailing list