[BCP] pruning node after integral feasible solution is found ?

Changhyeok Lee changhyeoklee at gmail.com
Mon Dec 10 19:43:42 EST 2012


Hello,  

I'm trying to solve an MILP using BCP package. Currently my problem has only core variable and constraints (no indexed cuts or variables to add).  

I'm using Clp solver and I have implemented the Gomory cuts using CglGomory library within "generate_cut_in_lp" and "cut_to_row" function.

For my current test problem, the output log contains the following messages.

LP: **** Processing NODE 0 on LEVEL 0 (from TM) ****

….

LP: **** Processing NODE 1 on LEVEL 1 (dived) ****

….

LP: **** Processing NODE 3 on LEVEL 2 (dived) ****

In the first iteration of the last NODE 3, the Clp finds an integral solution and it prints the following output.

LP: Default test_feasibility() executed.
LP: Default test_full() executed.
LP: Default pack_feasible_solution() executed.
TM: Default unpack_feasible_solution() executed.
TM: Solution found at 1.793 sec.
TM 5.885: Sol from proc: 1 val: -3.320268 (prev best: infinity) tree size/procd: 5/2 cand list ins/size: 3/4



Then, it continues the LP process and finally I see the following error message.

LP: Default select_branching_candidates() executed.
BM: Couldn't branch!



Here is my question. How do we prune the node after I find an integral solution?  

My understanding is that in the branch and bound process, if we find an integral solution, then we just update the best incumbent solution and prune the node. However, it seems that my code continues to work on the node and even try to branch. Obviously, there's nothing to branch (all integral solution) and the BCP package generates the error message.

Am I missing something? What do I need to do to have my BCP code to prune the integral node?

Thank you in advance for your help!

----
Changhyeok






More information about the BCP mailing list