[Coin-bcpdiscuss] Variable LB fixed to 1 by BCP
ladanyi at us.ibm.com
Wed May 9 11:52:22 EDT 2007
Reduced cost fixing can happen both on lower and on upper bounds. If a
variable is out of basis at its upper bound then if its reduced cost is very
negative then it can be fixed to its upper bound. The argument is the same
that you use when a variable is out of basis at its lower bound has high
positive reduced cost. It's just that the latter situation (especially when
the lower bound is 0) hapens a lot more frequently.
To check that things a re OK get the reduced costs and the warmstart
information (just use getWarmstart on the osi solver interface). The latter
will give you the basis status information for everything. In there look up
the status of your variable (watch out, it's a compressed array, there are 2
bits per entry). If it's out of basis at its upper bound and the reduced cost
of the var is very negative then you are OK.
Hope this helps,
On Wed, 9 May 2007, Matteo Salani wrote:
> Hi all!
> I've encountered a behavior of BCP that sounds strange to me...
> I'm solving a set covering like problem with BCP.
> At iteration 12 the lower bound of one variable becomes 1 unless the
> column generation process is not over (I've in total 149 iterations)
> it sounds very strange to me that such fixing can occur at this point.
> to see that I've added in the derived method
> App_lp::modify_lp_parameters which is called *before* the LP is solved
> the following piece of code to write the current LP to a file:
> sprintf( fname, "lp-out%d", count++);
> lp->writeLp( fname, "lp");
> count is just a static counter to have a file per iteration.
> I've checked that in all the code I do not modify any variable bound.
> What else should I check?
> Is BCP acting on variables' LBs?
> Am I right when I say that reduced cost fixing could act only on
> variables' upper bounds?
More information about the Coin-bcpdiscuss