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

Gerald Gamrath gamrath at zib.de
Tue Apr 12 19:04:43 MEST 2011


Hi Sebastian,

this message means that pricing was interrupted, so the LP is no valid 
relaxation (there might still be variables that could improve the LP value).
This should not happen unless you press CTRL-C during the solving or 
your pricer does not set the result pointer to SCIP_SUCCESS.
Are you sure that your pricer works correctly and sets this pointer? As 
far as I can see, you start with 159 variables in the LP right? But the 
number of variables stays the same, so your pricer did not add variables.
Anyway, the assertion at the end should not fail, could you send me the 
call stack?

Best,
Gerald

Am 07.04.2011 11:42, schrieb Sebastian Ruther:
>    Hello,
>
> I went back to an early version of my code to see if this indeed has
> something to do with the branching rule and the constraint handler. So
> this version does not include them at all, instead uses the default
> plugins. When I set the node limit to 1 I get the following error after
> the first round of pricing. Note it should have executed 110 iterations
> in the root node. So this is the output for the master problem after
> iteration 1:
>
>    time | node  | left  |LP iter|LP it/n| mem |mdpt |frac |vars |cons
> |cols |rows |cuts |confs|strbr|  dualbound   | primalbound  |  gap
> t 2.9s|     1 |     0 |     6 |     - | 652k|   0 |   0 | 159 | 259 |
> 159 | 259 |   0 |   0 |   0 |      --      |1.500000e+004 |    Inf
> [src\scip\solve.c:1312] Warning: pricing has been interrupted -- LP of
> current node is invalid
>     2.9s|     1 |     0 |     6 |     - | 652k|   0 |   0 | 159 | 259 |
> 159 | 259 |   0 |   0 |   0 |      --      |1.500000e+004 |    Inf
> * 2.9s|     1 |     0 |     6 |     - | 654k|   0 |   - | 159 | 259 |
> 159 | 259 |   0 |   0 |   0 |      --      |1.270000e+004 |    Inf
> Assertion failed: SCIPlpGetSolstat(lp) == SCIP_LPSOLSTAT_OPTIMAL ||
> SCIPlpGetSolstat(lp) == SCIP_LPSOLSTAT_UNBOUNDEDRAY, file
> src\scip\branch.c, line 200
>
> I don't know if this is a different problem or if whatever causes the
> other problem causes this one as well. Why is the LP invalid? I don't
> have Valgrind as I run Windows 7. Is there anything else I can do before
> trying to set up something for Valgrind? What other information do you need?
>
> Thanks
> Sebastian
>
> On 6/04/2011 10:57 PM, Stefan Vigerske wrote:
>> Hi,
>>
>>> 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.
>> If there is no transformed problem, then SCIPchgVarUbNode is not the
>> function to call. Probably you want to use SCIPchgVarUb.
>>
>> Also try running your code through valgrind.
>>
>> Stefan
>>
>>> 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
>>>
>> .
>>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> http://listserv.zib.de/mailman/listinfo/scip



More information about the Scip mailing list