[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