<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Dear Gerald (and others)</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Thank you for the clarification (months ago). I've been implementing it in the way you suggested, everything seems ok, but then I encountered some weird behaviour.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">I compile the code in normal mode -> seems to work fine<br>I compile the code in DBG=opt mode -> seems to work fine<br><br>In my program I also have some upper bounds that use plain CPLEX, so I decided to use the flag -DNDEBUG while compiling, which is (as far as I know) disabling CPLEX debug mode<br><br>When I now compile my code in DBG=opt mode with the -DNDEBUG flag, I catch an assert somewhere within scip:</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:monospace"><span style="color:rgb(0,0,0)">JRP: src/scip/tree.c:1214: SCIPnodePropagateAgain: Assertion `node != NULL' failed.</span><br><br>Do you maybe know if this flag is the cause of any unspecified behavior? Of course, it is a bit weird to use debug mode and to tell at the same time to not debug (via the flag), but I want to make sure things are correct.</span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:monospace"><br></span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:monospace"><br></span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:monospace">Kind regards,</span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:monospace">Albert<br></span><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jan 9, 2020 at 12:46 PM Gerald Gamrath <<a href="mailto:gamrath@zib.de" target="_blank">gamrath@zib.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
Dear Albert,<br>
<br>
changing the upper bound to 0 to enforce your decision is correct.
However, your consactive method should only mark the constraint to
be repropagated; afterwards, propagation will be called where you
should adjust the bounds. Since the bound is only changed at the
current node, SCIP will automatically undo this when the current
subtree is left and re-install the bound when it is re-entered. In
the latter case, you thus only need to propagate variables added in
the meantime.<br>
<br>
For more details, see
<a href="https://scip.zib.de/doc-6.0.2/html/FAQ.php#pricerandnodedata" target="_blank">https://scip.zib.de/doc-6.0.2/html/FAQ.php#pricerandnodedata</a> or have
a look at the binpacking example.<br>
<br>
Best,<br>
Gerald<br>
<br>
<div>Am 09.01.20 um 10:45 schrieb
Schrotenboer, Albert:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Dear SCIP
Community,</div>
<div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br>
</div>
<div class="gmail_default" style="font-family:arial,helvetica,sans-serif">I am solving a
basic VRP with branch & price, and have a question
regarding a branching rule I've implemented (Actually, I
forgot how to do it...) I branch on x_{ij} arcs, which I
identify with my branchrule object. To handle this information
down the b&b tree, I use a constraint handler with the
following virtual methods implemented:<br>
</div>
<div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br>
</div>
<div class="gmail_default" style="font-family:arial,helvetica,sans-serif">SCIP_DECL_CONSTRANS(ObjConshdlrOwn::scip_trans)
<br>
</div>
<div><span class="gmail_default" style="font-family:arial,helvetica,sans-serif">Â Â Â Â Â To
transform the info, nothing special</span></div>
<div><span class="gmail_default" style="font-family:arial,helvetica,sans-serif"></span><span class="gmail_default" style="font-family:arial,helvetica,sans-serif"></span></div>
<div><span class="gmail_default" style="font-family:arial,helvetica,sans-serif">SCIP_DECL_CONSACTIVE(ObjConshdlrOwn::scip_active)</span></div>
<div><span class="gmail_default" style="font-family:arial,helvetica,sans-serif">Â Â Â Â Â Here I
search which of my generated routes should be fixed to zero
corresponding to my branching information. (I also do the
appropriate adaptations in my pricing based on the
branching). I fix my variables by the following routines:</span></div>
<div><span class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br>
</span></div>
<div><span class="gmail_default" style="font-family:arial,helvetica,sans-serif">if
(SCIPvarGetUbLocal(var) > 0.01)<br>
   SCIP_CALL(SCIPchgVarUb(scip,
(*d_varConsInfo).v_path[r].d_var, 0.0) );Â <br>
</span></div>
<div><span class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br>
</span></div>
<div><span class="gmail_default" style="font-family:arial,helvetica,sans-serif">This all
works nicely (when I do not run in debug mode). When I run
in Debug mode, however, an assert is collapsing when SCIP
alters the path of the tree (when it backtracks a few
nodes), saying that:</span></div>
<div><span class="gmail_default" style="font-family:arial,helvetica,sans-serif">JRP:
src/scip/tree.c:1803: SCIPnodeAddBoundinfer: Assertion
`(SCIP_NODETYPE)node->nodetype == SCIP_NODETYPE_FOCUSNODE
|| (SCIP_NODETYPE)node->nodetype ==
SCIP_NODETYPE_PROBINGNODE ||
(SCIP_NODETYPE)node->nodetype == SCIP_NODETYPE_CHILD ||
(SCIP_NODETYPE)node->nodetype ==
SCIP_NODETYPE_REFOCUSNODE || node->depth == 0' failed.<br>
</span></div>
<div><span class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br>
</span></div>
<div><span class="gmail_default" style="font-family:arial,helvetica,sans-serif">My question
is, therefore, the following: Is changing the UB to enforce
variables to 0 the correct way to go? In addition, am I
required to implement the deactive virtual method as well,
to change the upper bounds back to what they were? <br>
</span></div>
<div><span class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br>
</span></div>
<div><span class="gmail_default" style="font-family:arial,helvetica,sans-serif">Kind regards,</span></div>
<div><span class="gmail_default" style="font-family:arial,helvetica,sans-serif">Albert<br>
</span></div>
<div><span class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br>
</span></div>
<div>
<div>-- <br>
<div dir="ltr">
<div dir="ltr">
<div>
<div dir="ltr">
<div>
<div dir="ltr">
<div>
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div style="color:rgb(0,0,0);font-size:10pt;letter-spacing:normal;line-height:12pt;margin-bottom:0px;margin-top:0px">
<p class="MsoNormal"><span style="color:rgb(102,102,102)">Albert
Schrotenboer</span></p>
<p class="MsoNormal"><span style="color:rgb(102,102,102)">Postdoctoral
Researcher<br>
</span></p>
<p class="MsoNormal"><span style="color:rgb(102,102,102)">Faculty
of Economics and Business</span></p>
<p class="MsoNormal"><span style="color:rgb(102,102,102)"></span><font color="rgb(34, 34, 34)"><span style="color:rgb(102,102,102)">University
of Groningen</span></font><font color="rgb(34, 34, 34)"><span style="color:rgb(102,102,102)"><br>
</span></font></p>
<p class="MsoNormal"><font color="rgb(34, 34, 34)"><span style="color:rgb(102,102,102)">P.O.
Box 800, 9700 AV Groningen</span>
</font></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<br>
<fieldset></fieldset>
<pre>_______________________________________________
Scip mailing list
<a href="mailto:Scip@zib.de" target="_blank">Scip@zib.de</a>
<a href="https://listserv.zib.de/mailman/listinfo/scip" target="_blank">https://listserv.zib.de/mailman/listinfo/scip</a>
</pre>
</blockquote>
<br>
</div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div style="color:rgb(0,0,0);font-size:10pt;letter-spacing:normal;line-height:12pt;margin-bottom:0px;margin-top:0px"><p class="MsoNormal"><span style="color:rgb(102,102,102)">dr. Albert Schrotenboer</span></p><p class="MsoNormal"><span style="color:rgb(102,102,102)">Postdoctoral Researcher<br></span></p><p class="MsoNormal"><span style="color:rgb(102,102,102)">Faculty of Economics and Business</span></p><p class="MsoNormal"><span style="color:rgb(102,102,102)"></span><font color="rgb(34, 34, 34)"><span style="color:rgb(102,102,102)">University of Groningen</span></font><font color="rgb(34, 34, 34)"><span style="color:rgb(102,102,102)"><br></span></font></p><p class="MsoNormal"><font color="rgb(34, 34, 34)"><span style="color:rgb(102,102,102)">P.O. Box 800, 9700 AV Groningen</span> </font></p></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>