[Coin-discuss] stabilizing duals in BCP

Eduardo efsilva at pobox.com
Sat Feb 28 02:24:31 EST 2004


Dear COIN Team,

	I need some help again.  I am implementing a branch-and-price
algorithm and in order to speed up the column generation phase I am
trying to apply some dual stabilization.  For this particular problem, I
am using du Merle approach.  In this approach, some elastic variables
are introduced in the restricted master problem (RMP), and at each
iteration, they have their bounds changed together with their objective
function coefficient.
	Initially, I put those elastic variables in the core.  However,
as I need some additional information attached to them, I had to move
them to "algorithm" variables, because I realized that BCP only uses the
pack/unpack methods of the base class instead of  myCoreVars.  Anyway,
this part is solved, and now you now that my elastic variables are
implemented as algorithm vars.        
Now, let me ask some questions:
	1) After solving the RMP, I need to change the bounds and
objective function coefficients of some variables.  What is best place
to do that and how? 

I looked at method "BCP_lp_user::logical_fixing (lpres, vars, cuts,
var_status, cut_status,p.var_bound_changes_since_logical_fixing,
changed_pos, new_bd)".  However, I only see this method updating the
bounds and it checks if the new bounds are actually tighter than the old
ones, throwing an exception if not (what can happen in the approach I am
using).

	2) May be I should update directly calling
lp_solver>setColSetBounds(),   vars.set_lb_ub(), and some other method
for the objective function coefficients.  Do I have do modify both?
What would be the extra care I should take with BCP in this case?
	In addition, as the RMP is a relaxed problem, it may happen that
no variables are generated but I need to resolve the RMP with the
bounds/coefficient updated.  Thus, depending where I do this, BCP can
try to branch or throw an exception saying that no variables where
generated (var pool empty) before resolving the RMP. 
	
	I would be happy if I could implement these features without
modifying the original BCP, which I would not like to. 
	Finally, I think I am not the first one trying this approach.
Thus, if someone had success with this before, could you please send me
some help?
    
I am sorry for the long e-mail.
Thanks,
Eduardo. 




More information about the Coin-discuss mailing list