[Scip] free transform problem

James Cussens james.cussens at york.ac.uk
Fri Jul 13 12:45:52 MEST 2012


Dear Stefan,

I didn't use any of my own plugins in the subscip but what you
identify as a possible cause seems likely.

I've now switched to a different subscip to find my separators - a
fresh new subscip is created on each separation round. This is working
better and is much cleaner than the recycling approach - and so the
problem has gone away.

Thanks for your help,

James

On 6 July 2012 13:38, Stefan Vigerske <stefan at math.hu-berlin.de> wrote:
> Hi,
>
> a possible cause for this assert is that not all variables in the
> transformed problem in your subscip were released when the constraints were
> deleted.
> Do you use some own plugins in the subscip?
>
> Stefan
>
> On 07/06/2012 11:43 AM, James Cussens wrote:
>>
>> I'm using a subscip in a separator routine. Rather than using
>> createProb to create a brand new subscip on each separator call, I've
>> been 'recycling' the same one and using a call to freeTransform to
>> make the necessary changes before solving.
>>
>> Although this has worked OK in some past versions of my project, I'm
>> now getting problems. My call to  SCIPfreeTransform
>> is failing when SCIP tries to reset bounds (see below).
>>
>> Should I just create a new problem on each call? (I notice that the
>> SCIP separators do this.)
>> This would mean creating and adding the same variables (and many
>> constraints) over and over again.
>>
>> James
>>
>>
>> gobnilp: src/scip/var.c:8082: SCIPvarResetBounds: Assertion
>> `SCIPvarGetTransVar(var) == ((void *)0)' failed.
>>
>> Program received signal SIGABRT, Aborted.
>> 0x00007ffff679c035 in raise () from /lib64/libc.so.6
>> (gdb) backtrace
>> #0  0x00007ffff679c035 in raise () from /lib64/libc.so.6
>> #1  0x00007ffff679d9e6 in abort () from /lib64/libc.so.6
>> #2  0x00007ffff67948e5 in __assert_fail () from /lib64/libc.so.6
>> #3  0x0000000000673549 in SCIPvarResetBounds (var=0x16f6b90,
>> blkmem=0x1511a50, set=0x1513a70, stat=0x16f1310) at
>> src/scip/var.c:8082
>> #4  0x00000000005ab999 in SCIPprobResetBounds (prob=0x16f1d60,
>> blkmem=0x1511a50, set=0x1513a70, stat=0x16f1310) at
>> src/scip/prob.c:514
>> #5  0x00000000005cd4c3 in freeTransform (scip=0x150f8b0) at
>> src/scip/scip.c:7322
>> #6  0x00000000005cebaf in SCIPfreeTransform (scip=0x150f8b0) at
>> src/scip/scip.c:7764
>> #7  0x000000000040ab5b in DagClusterSeparate (scip=0x140c010,
>> consdata=0x15058a0, sol=0x175f018, nGen=0x7fffffffce90, ub=0,
>> add_cutting_planes=0) at src/cons_dagcluster.c:176
>>
>> the comment in var.c says:
>>    /* resetting of bounds on original variables which have a
>> transformed counterpart easily fails if, e.g.,
>>      * the transformed variable has been fixed */
>>     assert(SCIPvarGetTransVar(var) == NULL);
>>
>
>



-- 
James Cussens
Dept of Computer Science &
York Centre for Complex Systems Analysis
Room 326, The Hub, Deramore Lane            Tel    +44 (0)1904 325371
University of York                                        Fax  +44
(0)1904 500159
York YO10 5GE, UK                               http://www.cs.york.ac.uk/~jc


More information about the Scip mailing list