[Scip] Informing SCIP there is an integer solution in a branching node

Tobias Achterberg achterberg at zib.de
Tue Dec 2 19:32:17 MET 2008


Hi Egbert,

you just need to give SCIP the feasible primal solution vector. You can create a primal 
solution with SCIPcreateSol() and populate it with SCIPsetSolVal() or SCIPsetSolVals(). 
Then, use SCIPaddSol(), SCIPaddSolFree(), SCIPtrySol(), or SCIPtrySolFree() to pass the 
solution to SCIP. Just read the docs to understand the difference between the four methods.

If, for whatever reason, you do not want to tell SCIP about the solution vector but only 
install an objective limit, you can just call SCIPsetObjlimit(). This is a global limit, 
i.e., it will affect all nodes in the search tree. But usually, also providing the 
solution vector is a good idea, as this can help to find better incumbents by means of 
improvement heuristics.


Best,

Tobias

E. van der Veen wrote:
> Hi all,
> 
> Currently I'm trying to find a way to inform SCIP that 
> there IS an integer solution in some particular branching 
> node(s) during solving
> 
> By the definition of my branching procedure, with my 
> Branch-and-Price solution approach, it can happen that 
> when the branching tree is at full depth (by which I mean 
> that there are no branching decisions left for the 
> branching to take; everything that can be branched on is 
> branched on) SCIP does not find an integer solution among 
> the columns found (because there is none).
> However, when all relevant branching decisions have been 
> made the problem I left with is a 'simple' b-matching 
> problem which can be solved simply, because it has a 
> totally unimodular matrix. This is something I do via 
> solving a (small) ILP.
> However, what I'm searching for is a way to 'inform' SCIP 
> during run-time that in the current node there IS an 
> integer solution (with some value), although SCIP might 
> not be able to find it. I would like to do this, such that 
> SCIP can use this to fathom other parts of the branching 
> tree.
> 
> Things I'm thinking about are:
> - Setting the primal bound, however there are no 
> procedures for this in SCIP, which is probably for a 
> reason ;-), also I do not know whether this will only 
> influence the primal bound in this node, or whether this 
> is done on a more global scale;
> - Using a procedure like SCIPprobSetObjIntegral() however, 
> this is a procedure in prob.h (and not in scip.h), which 
> also probably won't be what I need, and also not what I 
> should use.
> 
> So, if there is a way, there is probably a much 
> better/smarter way then the things I suggested. However, 
> I'm unable to find this.
> 
> Does anyone has a suggestion how I should approach this?
> 
> Thanks in advance!
> 
> Best regards,
> Egbert van der Veen
> 
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> http://listserv.zib.de/mailman/listinfo/scip


More information about the Scip mailing list