<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Hi Eddie,<br>
<br>
in general, the heuristics within SCIP are not specifically designed
for branch-and-price, so switching them to aggressive might not be
wat you want to do in terms of performance. But of course, nothing
should break, anyway.<br>
<br>
Your pricer should not be called within sub-SCIP heuristics. The
output message that you got can also happen if there are some
variables not present in the LP that the SCIP internal pricer may
price later. Did you check whether your pricer is actually called in
the sub-SCIP?<br>
<br>
The assertion about the lazy bounds is strange and something we
should definitely look into. Based on the backtrack alone, it is
hard to pin down, can you perhaps share (parts of) your code that
allows to reproduce this? If so, please send it to me directly.<br>
<br>
Finally, it is right now not possible to alternate between pricing
and cutting in the way you suggest. I guess the original idea was
that you would normally like to cut off the optimal LP solution with
cuts and not some intermediate one (when not finishing pricing
first). You might experiment with the following, though: check
within your pricer if there is a cut that you would like to apply;
in that case, just return SCIP_DIDNOTRUN. SCIP will then not use the
LP value as a dual bound and should call separation next. If there
is no (good enough) cut, you probably just want to continue pricing
until the master problem is solved to optimality.<br>
<br>
Best,<br>
Gerald<br>
<br>
<div class="moz-cite-prefix">Am 04.11.19 um 11:00 schrieb Edward
Lam:<br>
</div>
<blockquote type="cite"
cite="mid:C17D4F03-A393-4893-ADA5-72F8017A46A4@ed-lam.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Hi all,
<div class=""><br class="">
</div>
<div class="">I’m doing branch-and-cut-and-price in SCIP 6.0.2 and
I’m having problems with the heuristics. I turned on aggressive
heuristics:</div>
<div class=""><br class="">
</div>
<div class="">SCIP_CALL(SCIPsetHeuristics(scip, SCIP_PARAMSETTING_AGGRESSIVE,
TRUE));</div>
<div class=""><br class="">
</div>
<div class="">I’m getting:</div>
<div class=""><br class="">
</div>
<div class="">WARNING: pricing has been interrupted -- LP of
current node is invalid</div>
<div class="">
<div class=""><br class="webkit-block-placeholder">
</div>
<div class="">at this backtrace:</div>
<div class=""><img apple-inline="yes"
id="314D495C-416E-42B0-8B21-1B45015803C2"
src="cid:part1.36797D36.2D7221D9@zib.de" class=""></div>
<div class="">The warning seems to suggest the proximity
heuristic is calling my pricer. I think I don't want that?
Nevertheless, the final solution is correct.</div>
<div class=""><br class="">
</div>
<div class="">I’m also having a problem with the twoopt
heuristic, and the final solution is NOT correct. I get this
error:</div>
<div class="">SCIP Status : problem is solved [optimal
solution found]<br class="">
Solving Time (sec) : 14.09<br class="">
Solving Nodes : 162<br class="">
Primal Bound : +1.57000000000000e+03 (7 solutions, 3
respecting the objective limit)<br class="">
Dual Bound : +1.57000000000000e+03<br class="">
Gap : 0.00 %<br class="">
violation: integrality condition of variable <> =
0.666666666666667<br class="">
best solution is not feasible in original problem</div>
<div class=""><br class="">
</div>
<div class="">Using SCIPgetBestSol(scip), I have verified that
the solution twoopt finds is fractional. The integer optimal
solution should be 1572. This problem occurs in the release
build. In the debug build, I’m getting an assertion error:</div>
<div class=""><br class="">
</div>
<div class="">scipoptsuite-6.0.2/scip/src/scip/lp.c:12181:
updateLazyBounds: Assertion `lp->divinglazyapplied ||
SCIPsetIsLT(set, col->ub, col->lazyub) ||
(col->flushedub == SCIPlpiInfinity(lp->lpi))' failed.</div>
<div class=""><br class="">
</div>
<div class="">with this backtrace:</div>
<div class=""><br class="">
</div>
<div class="">#0 0x00002aaaadfb0fd7 in __GI_raise
(sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:55<br
class="">
#1 0x00002aaaadfb23aa in __GI_abort () at abort.c:78<br
class="">
#2 0x00002aaaadfa9dc6 in __assert_fail_base
(fmt=0x2aaaae0e8ee0 "%s%s%s:%u: %s%sAssertion `%s'
failed.\n%n", <br class="">
assertion=assertion@entry=0x2aaaad130530
"lp->divinglazyapplied || SCIPsetIsLT(set, col->ub,
col->lazyub) || (col->flushedub ==
SCIPlpiInfinity(lp->lpi))", file=file@entry=0x2aaaad12ad00
"/tmp/scipoptsuite-6.0.2/scip/src/scip/lp.c",
line=line@entry=12181, <br class="">
function=function@entry=0x2aaaad133c40
<__PRETTY_FUNCTION__.22154> "updateLazyBounds") at
assert.c:92<br class="">
#3 0x00002aaaadfa9e72 in __GI___assert_fail (<br class="">
assertion=0x2aaaad130530 "lp->divinglazyapplied ||
SCIPsetIsLT(set, col->ub, col->lazyub) ||
(col->flushedub == SCIPlpiInfinity(lp->lpi))", <br
class="">
file=0x2aaaad12ad00
"/tmp/scipoptsuite-6.0.2/scip/src/scip/lp.c", line=12181, <br
class="">
function=0x2aaaad133c40 <__PRETTY_FUNCTION__.22154>
"updateLazyBounds") at assert.c:101<br class="">
#4 0x00002aaaab64afe9 in updateLazyBounds (lp=0x96ff10,
set=0x743520)<br class="">
at /tmp/scipoptsuite-6.0.2/scip/src/scip/lp.c:12181<br
class="">
#5 0x00002aaaab64b493 in SCIPlpSolveAndEval (lp=0x96ff10,
set=0x743520, messagehdlr=0x73ea20, blkmem=0x7414e0,
stat=0x883290, <br class="">
eventqueue=0x87f550, eventfilter=0x812ec0, prob=0x974c80,
itlim=-1, limitresolveiters=0, aging=0, keepsol=0,
lperror=0x7fffffffbb90)<br class="">
at /tmp/scipoptsuite-6.0.2/scip/src/scip/lp.c:12274<br
class="">
#6 0x00002aaaab803b05 in SCIPsolveDiveLP (scip=0x73b4e0,
itlim=-1, lperror=0x7fffffffbb90, cutoff=0x0)<br class="">
at /tmp/scipoptsuite-6.0.2/scip/src/scip/scip_lp.c:2519<br
class="">
#7 0x00002aaaab3b8f51 in heurExecTwoopt (scip=0x73b4e0,
heur=0x85e5c0, heurtiming=8, nodeinfeasible=0,
result=0x7fffffffbd40)<br class="">
at
/tmp/scipoptsuite-6.0.2/scip/src/scip/heur_twoopt.c:1709<br
class="">
#8 0x00002aaaab5fb9b9 in SCIPheurExec (heur=0x85e5c0,
set=0x743520, primal=0x9745f0, depth=20, lpstateforkdepth=19,
heurtiming=8, <br class="">
nodeinfeasible=0, ndelayedheurs=0x7fffffffbd3c,
result=0x7fffffffbd40)<br class="">
at /tmp/scipoptsuite-6.0.2/scip/src/scip/heur.c:1116<br
class="">
#9 0x00002aaaab8ab63d in SCIPprimalHeuristics (set=0x743520,
stat=0x883290, prob=0x974c80, primal=0x9745f0, tree=0x974670,
lp=0x96ff10, <br class="">
nextnode=0xe5b1d8, heurtiming=8, nodeinfeasible=0,
foundsol=0x7fffffffbe3c, unbounded=0x7fffffffbe44)<br class="">
at /tmp/scipoptsuite-6.0.2/scip/src/scip/solve.c:353<br
class="">
#10 0x00002aaaab8be320 in SCIPsolveCIP (blkmem=0x7414e0,
set=0x743520, messagehdlr=0x73ea20, stat=0x883290,
mem=0x73ac90, origprob=0x87f850, <br class="">
transprob=0x974c80, primal=0x9745f0, tree=0x974670,
reopt=0x0, lp=0x96ff10, relaxation=0x974820,
pricestore=0x880e90, sepastore=0xb1a870, <br class="">
cutpool=0xb1a8f0, delayedcutpool=0xb29150,
branchcand=0x7d3210, conflict=0x974840,
conflictstore=0x880bb0, eventfilter=0x812ec0, <br class="">
eventqueue=0x87f550, cliquetable=0x974c20,
restart=0x7fffffffc0a4)<br class="">
at /tmp/scipoptsuite-6.0.2/scip/src/scip/solve.c:5159<br
class="">
#11 0x00002aaaab84aeb7 in SCIPsolve (scip=0x73b4e0) at
/tmp/scipoptsuite-6.0.2/scip/src/scip/scip_solve.c:2648<br
class="">
<br class="">
</div>
<div class="">Another question while I’m here. As I understand,
the pricing loop is inside the cutting loop. Is there a way to
run them both in the same loop level, i.e. price, cut, price,
cut? Instead of ((price, price, price), cut), ((price, price,
price), cut).</div>
<div class=""><br class="">
</div>
<div class="">
Cheers<br class="">
Eddie
</div>
<br class="">
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
Scip mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Scip@zib.de">Scip@zib.de</a>
<a class="moz-txt-link-freetext" href="https://listserv.zib.de/mailman/listinfo/scip">https://listserv.zib.de/mailman/listinfo/scip</a>
</pre>
</blockquote>
<br>
</body>
</html>