[Scip] Assertion failed: branchcand->pseudocands[var->pseudocandindex] == var, file src\scip\branch.c, line 928

Sebastian Ruther sebastian.ruther at uon.edu.au
Mon Apr 4 14:22:54 MEST 2011


The call stack reads
SCIPsolve
SCIPsolveCIP scip.c line 3229
SCIPnodeFocus(...) solve.c line 3229
treeSwitchPath(tree, blkmem, set, stat, prob, primal, lp, branchcand, conflict, eventfilter, eventqueue, fork, *node, cutoff) tree.c line 3984
SCIPeventqueueProcess(eventqueue, blkmem, set, primal, lp, branchcand, eventfilter) tree.c line 2768
SCIPeventProcess(event, set, primal, lp, branchcand, eventfilter) event.c line 2174
SCIPbranchcandUpdateVar(branchcand, set, var) event.c line 1390
SCIPbranchcandRemoveVar(branchcand, var) branch.c line 1053
branchcandRemovePseudoCand(branchcand, var)  branch.c line 1012
assert(branchcand->pseudocands[branchcand->npseudocands-1] != NULL); branch.c line 928

I've isolated the problem somewhat. However, whether these actions cause or just trigger detection of the problem I don't know:
The way I implemented the branching is that the scip_activate of the constraint handler removes some arcs (i.e. variables) from the sub problem. For this it sets the upper bound to 0 by calling SCIPchgVarUbNode. I got an error here before saying ERROR: original variable has no transformed variable attached. I guess that's because no transformed sub problem exists at this point. 
The pricing problems are generated in the Objpricer::init_sol and I only update the cost coefficients in the scip_redcost function. What happens is that the scip_redcost destroys the transformed problem after it's finished. So every time scip_redcost is executed it needs to transform the original problem. Because the constraint handler is called before scip_redcost I call SCIPtransformProb in the constraint handler. Probably not the most elegant implementation but apart from that, is there any problem with calling it here? 

Cheers,
Sebastian
________________________________________
From: Stefan Vigerske [stefan at math.hu-berlin.de]
Sent: 04 April 2011 21:10
To: Sebastian Ruther
Cc: scip at zib.de
Subject: Re: [Scip] Assertion failed: branchcand->pseudocands[var->pseudocandindex] == var, file src\scip\branch.c, line 928

Hi,

>    Hello,
>
> I'm currently implementing a follow-on branching rule and I get the
> following error:
> Assertion failed: branchcand->pseudocands[var->pseudocandindex] == var,
> file src\scip\branch.c, line 928
> What does this error mean? What are these pseudocands?

Die pseudocands are branching candidates for pseudo branching, in
principle the binary or integer variables that are not fixed in the
current node.
If you get this assertion, then I guess some datastructures have been
corrupted.

> The error occurs after i execute the ObjConshdlr::scip_activate.
> I've implemented the ObjBranchrule::scip_execlp. I have not imlemented
> the ObjBranchrule::scip_execps but it looks like it is not entered. I
> think the error is because of something in the constraint handler I
> implemented because when I comment out those calls I don't get any errors.

To give some helpful comments, it would be useful to get more
information about what you are doing and when this problem exactly happens.
Can you provide a backtrace from running in a debugger?
Which SCIP functions does your code call?

Stefan

>
> Thanks
> Sebastian
>
>
> _______________________________________________
> 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