[Scip] Fwd: getting column coefficients and realloc error

michael.winkler@zib.de michael.winkler at zib.de
Thu May 20 02:47:15 MEST 2010


Hi Mattia,

> You're right: I committed a mistake when copying the code. Now I change
> SCIPgetLowerbound() with SCIPgetNodeLowerbound(), but things don't change.
> I
> try to explain my idea. My problem is essentially a Multicommodity Flow
> Problem, where a variable describe a path of a commodity on a net.
> In my current B&B tree, I am determining on which variable perform branch.
> A
> solution could be to select the most fractional variable, or the variable
> associated with the longest path. I would instead select the variable
> giving
> the best bound. Citing the article where I read this strategy: "[...]
> choosing a candidate set of variables for branching and selecting the best
> among them by LP testing, i.e., by solving both linear programs induced by
> the two possible values of the variable. The best variable is then chosen
> as
> the one for which the minimum of the two objective function values is the
> largest."
> So I would like to perform this, solving, at each node, an LP problem for
> each fractional variable, one if it is included in the problem, and if
> not.
> Finally select the variable that give the best value.
> Including a variable in the problem for me is equivalent to set his LB and
> UB to 1. Exclude it setting LB and UB to 0. But this seems to be
> irrilevant:
> the Lowerbound is the same for each variable even after having set them to
> 1
> or 0. It changes only after having perform the branch (when the pricing
> routine is called). Any ideas?
>

Your strategy looks ok. Maybe there is still an error inside your diving
code, can you please send a new code excerpt.
An addition you should always use the macro SCIP_CALL( ... ); for all
methods which return a SCIP_RETCODE for example
 SCIP_CALL( SCIPstartDive(scip) );
and you should check the "lperror" after calling SCIPsolveDiveLP.

> Yes, this is already like this in my project. Another question: do
> variables
> which are fixed to 0 be ignored (removed) by the presolving routine, at
> *each
> node* LP? (not only on the presolving done at root node)
>

Yes, the current LP will be informed about the bound change.

Best, Michael





More information about the Scip mailing list