[Scip] Assertion fails in RENS heuristic

Stefan Vigerske stefan at math.hu-berlin.de
Thu Dec 15 16:04:30 MET 2011


Hi,

the heuristic is not new, but the default of the uselprows parameter 
changed to FALSE, so that it now works as LNS heuristic on the CIP 
instead of the MIP relaxation. That is, it copies the problem itself 
into a new SCIP instance, fixes variables there, presolves and searches, 
instead of creating a SCIP instance from the current LP.

My guess for the assert is, that some solution (SCIP_SOL) was created in 
the subscip but not freed before the transformed subscip is freed.
Are you using any plugins that do not come with SCIP (e.g., a 
fsg-reader) and implement the copy callbacks? Maybe you can check if 
they create solutions but not always free them.

With gdb you should also be able to inspect the solutions in the 
primal->existingsols array. E.g., primal->existingsols[0]->heur should 
be a pointer to the heuristic that found the solution, if created by 
one. primal->existingsols[0]->solorigin may also be helpful.

Stefan

> Hello everyone,
>
> I just updated from SCIP 2.0.1 to 2.1.0 and unfortunately it introduced
> some problems.
> Some of them I could work around, they all seem to be triggered by the RENS
> heuristic (is it new?).
>
> More precisely, the assertion gets thrown in primal.c:
>
>    time | node  | left  |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols
> |rows |cuts |confs|strbr|  dualbound   | primalbound  |  gap
> K13.3s|     1 |     0 |     0 |     - |  12M|   0 |   - | 723 |1372 |   0 |
>    0 |   0 |   0 |   0 |      --      | 1.519167e+00 |    Inf
>   13.4s|     1 |     0 |   571 |     - |  13M|   0 | 280 | 723 |1372 | 723
> |1364 |   0 |   0 |   0 | 8.287500e-01 | 1.519167e+00 |  83.31%
>   13.4s|     1 |     0 |   571 |     - |  13M|   0 | 280 | 723 |1372 | 723
> |1364 |   0 |   0 |   0 | 8.287500e-01 | 1.519167e+00 |  83.31%
>   14.7s|     1 |     0 |   615 |     - |  13M|   0 | 172 | 723 |1372 | 723
> |1492 | 128 |   0 |   0 | 8.287500e-01 | 1.519167e+00 |  83.31%
>   15.4s|     1 |     0 |   628 |     - |  13M|   0 | 164 | 723 |1372 | 723
> |1496 | 132 |   0 |   0 | 8.287500e-01 | 1.519167e+00 |  83.31%
>   16.0s|     1 |     0 |   634 |     - |  13M|   0 | 158 | 723 |1372 | 723
> |1497 | 133 |   0 |   0 | 8.287500e-01 | 1.519167e+00 |  83.31%
>   16.6s|     1 |     0 |   650 |     - |  13M|   0 | 164 | 723 |1372 | 723
> |1498 | 134 |   0 |   0 | 8.287500e-01 | 1.519167e+00 |  83.31%
>   17.2s|     1 |     0 |   677 |     - |  13M|   0 | 186 | 723 |1372 | 723
> |1501 | 137 |   0 |   0 | 8.287500e-01 | 1.519167e+00 |  83.31%
>   17.9s|     1 |     0 |   679 |     - |  13M|   0 | 182 | 723 |1372 | 723
> |1503 | 139 |   0 |   0 | 8.287500e-01 | 1.519167e+00 |  83.31%
> E18.2s|     1 |     0 |  1219 |     - |  13M|   0 | 182 | 723 |1372 | 723
> |1503 | 139 |   0 |   0 | 8.287500e-01 | 9.525000e-01 |  14.93%
> scipmincon.linux.x86_64.gnu.dbg.cpx: src/scip/primal.c:143: SCIPprimalFree:
> Assertion `(*primal)->nexistingsols == 0' failed.
>
> The stack trace is:
>
> #0  0x00002aaaabf9e9d5 in raise () from /lib64/libc.so.6
> #1  0x00002aaaabf9fed6 in abort () from /lib64/libc.so.6
> #2  0x00002aaaabf97235 in __assert_fail () from /lib64/libc.so.6
> #3  0x00000000005c0ec5 in SCIPprimalFree (primal=0x2238fb0,
> blkmem=0x1ac8730) at src/scip/primal.c:143
> #4  0x00000000005e76ab in freeTransform (scip=0x2238f40) at
> src/scip/scip.c:7282
> #5  0x00000000005e8fc3 in SCIPfreeTransform (scip=0x2238f40) at
> src/scip/scip.c:7744
> #6  0x00000000005dc124 in SCIPfreeProb (scip=0x2238f40) at
> src/scip/scip.c:4357
> #7  0x00000000005ce67f in SCIPfree (scip=0x7fffffffd018) at
> src/scip/scip.c:586
> #8  0x000000000080c5e3 in SCIPapplyRens (scip=0x1464010, heur=0x1537bd0,
> result=0x7fffffffd260, minfixingrate=0.5, minimprove=0.01, maxnodes=5000,
> nstallnodes=500, startsol=108 'l', binarybounds=1, uselprows=0) at
> src/scip/heur_rens.c:567
> #9  0x000000000080cafd in heurExecRens (scip=0x1464010, heur=0x1537bd0,
> heurtiming=44, result=0x7fffffffd260) at src/scip/heur_rens.c:695
> #10 0x000000000050d36d in SCIPheurExec (heur=0x1537bd0, set=0x14681d0,
> primal=0x163fc90, depth=0, lpstateforkdepth=-1, heurtiming=44,
> ndelayedheurs=0x7fffffffd25c, result=0x7fffffffd260) at src/scip/heur.c:398
> #11 0x0000000000649729 in SCIPprimalHeuristics (set=0x14681d0,
> stat=0x156bb20, primal=0x163fc90, tree=0x1774cf0, lp=0x17b0810,
> nextnode=0x0, heurtiming=44, foundsol=0x7fffffffd418) at
> src/scip/solve.c:241
> #12 0x0000000000654e37 in solveNode (blkmem=0x14661b0, set=0x14681d0,
> stat=0x156bb20, origprob=0x156c570, transprob=0x1797030, primal=0x163fc90,
> tree=0x1774cf0, lp=0x17b0810, relaxation=0x163f710, pricestore=0x186f7d0,
> sepastore=0x186f860, branchcand=0x17cc0f0, cutpool=0x186f8e0,
> conflict=0x1774ec0, eventfilter=0x16a03c0, eventqueue=0x165bdc0,
> cutoff=0x7fffffffd5bc, unbounded=0x7fffffffd5b8, infeasible=0x7fffffffd5b4,
> restart=0x7fffffffd748, afternodeheur=0x7fffffffd5ac) at
> src/scip/solve.c:3327
> #13 0x0000000000657623 in SCIPsolveCIP (blkmem=0x14661b0, set=0x14681d0,
> stat=0x156bb20, mem=0x1464120, origprob=0x156c570, transprob=0x1797030,
> primal=0x163fc90, tree=0x1774cf0, lp=0x17b0810, relaxation=0x163f710,
> pricestore=0x186f7d0, sepastore=0x186f860, cutpool=0x186f8e0,
> branchcand=0x17cc0f0, conflict=0x1774ec0, eventfilter=0x16a03c0,
> eventqueue=0x165bdc0, restart=0x7fffffffd748) at src/scip/solve.c:3878
> #14 0x00000000005e8628 in SCIPsolve (scip=0x1464010) at src/scip/scip.c:7541
> #15 0x000000000062dd9b in fromCommandLine (scip=0x1464010,
> filename=0x7fffffffe29d "../fsg/polska.fsg") at src/scip/scipshell.c:135
> #16 0x000000000062e5cd in SCIPprocessShellArguments (scip=0x1464010,
> argc=3, argv=0x7fffffffde38, defaultsetname=0xfd751e "scipmincon.set") at
> src/scip/scipshell.c:341
> #17 0x00000000004088f4 in runSCIP (argc=3, argv=0x7fffffffde38) at
> src/cppmain.cpp:82
> #18 0x0000000000408abd in main (argc=3, argv=0x7fffffffde38) at
> src/cppmain.cpp:120
>
> This is hard to debug for me, since I can't deduce which part of my code is
> responsible for the error, although I suspect that it has to do with the
> scip_trans method in my problem data class.
>
> Does anyone know what this error means and how I can prevent it? It occurs
> only in debugging.
>
> Thanks in advance,
>
>    Daniel Karch
>
>
>
>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> http://listserv.zib.de/mailman/listinfo/scip


-- 
Stefan Vigerske
Humboldt University Berlin, Numerical Mathematics
http://www.math.hu-berlin.de/~stefan


More information about the Scip mailing list