[Coin-bcpdiscuss] Default select_branching_candidates bug?
Francois Margot
fmargot at andrew.cmu.edu
Tue Mar 21 13:05:45 EST 2006
Lasse:
On Mon, 20 Mar 2006, Lasse Nisted wrote:
> Hello
>
> Is there a reason why the default select_branching_candidates
> function in BCP_lp_user throws an exception if no
> branching candidates are found?
> Shouldn't it just return BCP_DoNotBranch_Fathomed ?
>
While this could be defensible, so is the current implementation.
If you go in select_branching_candidates(), it means that the current
LP solution does not satisfy all integrality restrictions, as returned
by test_feasibility(). Then, a branching candidate must logically exist.
The problem is probably numerical accuracy: try to change the parameters
BCP_Granularity 1e-8 // Lower bound on the minimum
// difference between two feasible
// solutions
// Default: 1e-8
BCP_IntegerTolerance 1e-5 // Tolerance for a number to be
// considered integer
// Default: 1e-5
to larger values. If this does not solve your problem, it might be
another previously reported bug: let L be the value of the LP solution
and let B be the current best known feasible solution value.
When test_feasibility() returns that the current solution is feasible,
Bcp recomputes its value V. Due to numerical errors, it has
L < B < V. So Bcp does not update the best solution value and, as
L < B, looks (incorrectly) for a variable to branch on.
This can be fixed in the user code by adding a boolean variable res_test
that stores if test_feasibility() found that the current LP solution is
integer. Then, in select_branching_variables(), always return
BCP_DoNotBranch_Fathomed if res_test == true.
Francois
> Or am I missing something?
>
> I have a IP problem which is solved to integer optimality in the root node,
> and then the select_branching_candidates throws an exception because
> no columns are generated and no fractional values exist.
>
> - Lasse
>
>
>
More information about the Coin-bcpdiscuss
mailing list