[SCIP] Accessing final simplex tableau for strong branching children nodes

Marc Pfetsch pfetsch at mathematik.tu-darmstadt.de
Fri Jun 18 18:35:51 CEST 2021



Dear Prateek!

> Is it possible to extract the final solution, i.e., values of the 
> decision variables, in each of the strong branching children nodes?
 >
> I came to this function in|lp.c|​, `SCIPcolGetStrongbranch`. I don't see 
> a way to extract the final solution (values of the decision variables) 
> of each of the children nodes from this function. |sbup|​ and |sbdown|​ 
> probably refer to the objective value. Can I also get the final 
> solution? If so, what should I use?

This does not seem to be easy, since the behavior probably depends on 
the LP solver. What you can do, is to modify the function 
SCIPlpiStrongbranchFrac() in lpi_XYZ.c, where XYZ is your used LP 
solver. You can then get the solution, if the particular LP-solver 
allows you to (SoPlex for instance will, since we use the ordinary solve 
routines internally).

Note, however, that strong branching is usually run with an iteration 
limit. If the dual simplex is used (which is advisable due to hot 
start), you will not necessarily get a feasible solution.

> If the above is doable, is it also possible to read the final simplex 
> tableau for each of the children nodes? Specifically, shadow prices and 
> reduced costs?

If you modify the LP-interface then usually yes. Note, however, that 
this might depend on the LP-solver. For instance, I am not sure whether 
the CPLEX function CPXstrongbranch() allows you to extract this 
information after it has been called. Again for SoPlex this should be 
possible.

> I am aware that all of the above relies on solving the children nodes 
> exactly, which might not be the case with strong branching. Can you also 
> confirm if the default settings allow for exact solving for the strong 
> branching children?

This again will depend on the LP-solver, for instance, if special 
functions are called like for CPLEX. For most solvers, the solution 
should be "exact" (i.e., up to numerical tolerances) if the iteration 
limit is large enough.

Best

Marc


More information about the Scip mailing list