[Scip] How to get last best result of the simplex algorithm after iterlimit is reached?

Norbert Fabritius n.fabritius at stud.tu-darmstadt.de
Wed Nov 20 21:18:35 CET 2013


Dear SCIP developers,

I currently try to add strong branching to the indicator constraint handler.
(in the function enforceIndicators in cons_indicator.c)
My first attempt is to do a dive of depth one like this:

SCIP_CALL( SCIPstartDive(scip) );
SCIP_CALL( SCIPchgVarLbDive(scip, binvar, 1.0) );
SCIP_CALL( SCIPchgVarUbDive(scip, slackvar, 0.0) );
SCIP_CALL( SCIPsolveDiveLP(scip, 50, &lperror, &cutoff) );

[… handle errors …]

node1objdiff = REALABS( SCIPgetLPObjval(scip) - parentobjval );
SCIP_CALL( SCIPendDive(scip) );

[… similar code for node 2…]

However, when the iteration limit (50 in this case) is reached, SCIPgetLPObjval will return -SCIPsetInfinity(set). It traced this behavior down to this line:

http://scip.zib.de/doc/html_devel/lp_8c_source.shtml#l13009
Is there a way to get the last best value of the simplex algorithm instead of -infinity?
Or is there perhaps a better way to implement strong branching in a constraint handler instead of doing a dive of depth one?

Best regards,
Norbert Fabritius


More information about the Scip mailing list