I am implementing a branch-and-price (or column-generation) algorithm. The variables (or columns) I generate during optimization have a cost with an offset. For example, if I want to introduce a new variable xi
it has both a cost coefficient ci
that scales with xi
and a constant cost ci'
:
total cost = Sum (ci * xi + ci') for all i
My variables xi
are continuous.
How should I handle this?
Is it necessary to reformulate the problem so that a variable's associated cost has no offset? For example, in order to guarantee that column generation leads to the optimal solution.
My first idea would be to generate variables in pairs: the original xi
and an associated binary variable bi
. Then add the additional constraint that bi = 0
if xi = 0
and bi = 1
if xi > 0
. Is this a reasonable approach? What are its downsides apart from introducing binary variables?