<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>