[SCIP] pseudo-solution objectives in the presence of pricers
James Cussens
james.cussens at bristol.ac.uk
Thu Jan 14 10:24:42 CET 2021
Hi folks,
I am using a heuristic that is a variant of fixandinfer in a problem that also has an active pricer.
fixandinfer (and my variant) work by creating a pseudo-solution in a probing node.
When this pseudo-solution is proposed as a new primal solution we get (unless I am mistaken) the following sequence of calls:
SCIPtryCurrentSol ->
SCIPprimalTryCurrentSol ->
SCIPprimalLinkCurrentSol ->
SCIPsolLinkCurrentSol ->
SCIPsolLinkPseudoSol ->
SCIPlpGetPseudoObjval
When we get to SCIPlpGetPseudoObjVal the following is executed
if( lp->pseudoobjvalinf > 0 || set->nactivepricers > 0 )
return -SCIPsetInfinity(set);
Presumably the idea here is that because there are active pricers then more variables might come along and so (since we are in the transformed problem) it makes sense to return -infinity as a bound. The problem is that we can have, restricted to the currently existing variables, a feasible solution which SCIP indeed judges to be feasible.
So what happens is that SCIP informs me that the problem is unbounded since it has found a solution that is (1) feasible and (2) with unbounded objective.
I am currently getting round this problem by just copying over solution values to a brand new solution:
/* have to copy pseudo solution since there are active pricers */
SCIP_CALL( SCIPallocBufferArray(scip, &vals, nvars) );
SCIP_CALL( SCIPgetSolVals(scip, NULL, nvars, vars, vals) );
SCIP_CALL( SCIPcreateSol(scip, &sol, heur) );
SCIP_CALL( SCIPsetSolVals(scip, sol, nvars, vars, vals) );
SCIPfreeBufferArray(scip, &vals);
SCIP_CALL( SCIPtrySolFree(scip, &sol, FALSE, FALSE, FALSE, FALSE, FALSE, &success) );
Is there a better workaround?
Btw, my variant differs from fixandinfer only in that the best variable to fix is that one whose pseudo-value (ie best with respect to objective) is closest to its current LP solution value. This actually works pretty well for my problem (each variable is binary, with negative objective and there is a collection of set packing constraints; each variable is in exactly one of these, so there are lots of easy propagations).
James
James Cussens
Dept of Computer Science, University of Bristol
https://jcussens.github.io/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.zib.de/pipermail/scip/attachments/20210114/b3e54a75/attachment.html>
More information about the Scip
mailing list