[BCP] BCP 1.2.0 question, BCP_vg_user vs. BCP_tm_user::generate_vars_in_lp

Laszlo Ladanyi ladanyi at us.ibm.com
Wed Oct 22 17:08:59 EDT 2008


Hi Sebastian,

On Wed, 22 Oct 2008, Sebastian Nowozin wrote:

>
> Hello Laszlo and the others,
>
> first I would like to thank you all for Bcp 1.2.0, it compiles and does
> the tests like a charm.
>
> I am using Bcp for a large set-packing like column generation model with
> fixed number of rows, a few core variables but the rest being
> algorithmic binary variables.
>
> For column generation, I derived from the BCP_vg_user class and return
> an object of the same in my derived USER_initalize::vg_init.  However,
> this vg_init function is never called.  Where can I enable the use of
> BCP_vg_user and vg_init?
>

You need to create a variable generator class only if you want to use separate 
processes to generate variables. In that case you have to specify in the 
parameter file that you are going to use a separate process by adding a 
line "BCP_VgProcessNum <number>".

> I have tried another road: I overwrite BCP_lp_user::generate_vars_in_lp
> and BCP_tm_user::init_new_phase and set colgen=BCP_GenerateColumns in
> the latter.  Then my generate_vars_in_lp is called and my empty test
> does not return new variables, so the output is:

This is the way to generate the variables within the LP process.

>
>  LinearProgram::generate_vars_in_lp, fathom 0
>  LP:   Number of vars received from VG: 0
>  LP:   Total number of vars in local pool: 0
>  LP:   In iteration 1 BCP generated 0 cuts , 0 vars before calling branch()
>
> then Bcp continues, and fails with:
>  LP: Default select_branching_candidates() executed.
>  BM: Couldn't branch!
>
> Which could be legit but is still strange as the core variables/columns
> I added ensure feasibility and the root node solution is integral.
> (Hence without added columns it should be recognized as optimal solution.)

Hmmm..., this is odd. Is there any output beforehand that indicates that a 
feasible solution is found? You should get the "Couldn't branch" message 
only if the current node is not integral feasible, no vars/cuts are added 
and yet every var that's declared integer has an integer value. One 
possibility is that feasibility checking has a different zero tolerance 
than the branching (hence a solution might not be found feasible but then 
later no branching var can be selected), but I think I have rooted out all 
such problems. Can you share the code with me? I could try to look into what's 
going on.

>
> Thanks a lot,
> Sebastian
>
> PS: The .hpp documentation of Bcp is quite detailed and understandable,
> I am positively surprised!

Hey! I'm positively surprised that someone finds the docs understandable! :-)

> _______________________________________________
> BCP mailing list
> BCP at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/bcp
>

Thanks,
--Laci


More information about the BCP mailing list