5

I'm new to the branch and price algorithm. Though I have some knowledge about how branch & bound and column generation work, there're still some details making me confused.

In short, my problem is:

  1. After branching, where do the columns of child node come from before new column being added by sub-problem?
  2. Are they obtained by inheritance of the columns in restricted master problem of parent node which is solved to optimality?
  3. If so, there must be some inherited columns violating the branching rule, what should we do with these columns in conflict? Are they directly removed?
  4. What if the model becomes infeasible after the removal of these conflicting columns?

Take bin packing problem as an example:

Suppose we have $4$ items need to be packed. And the formulation based on Dantzig-Wolfe decomposition should be a set covering model: $$\min \sum_j x_j$$ $$s.t.\, \sum_j a_{ij}x_j \geq 1, \,\,\,\,i=1,2,3,4$$ where $a_{ij}$ is a binary indicator specifying whether item $i$ is packed in bin $j$, and $x_j$ is the decision variable to indicate whether bin $j$ appears in the solution.

Let's say we are in a situation where the RMP(restricted master problem) of Node 0 is solved to optimality by column generation. At this time, say the RMP is: $$\begin{pmatrix}1\\0\\1\\1\end{pmatrix}x_1+\begin{pmatrix}1\\1\\0\\0\end{pmatrix}x_2+\begin{pmatrix}0\\0\\0\\1\end{pmatrix}x_3 \geq \begin{pmatrix}1\\1\\1\\1\end{pmatrix}$$ Then Node 0 is branching to two nodes:

  • Node 1 with constraint: let's say item $1$ and item $2$ cannot be in the same bin.
  • Node 2 with constraint: let's say item $1$ and item $2$ should be in the same bin.

Then, in Node 1, if the answers to my problem 2,3 are yes, the RMP of Node 1 should be $$\begin{pmatrix}1\\0\\1\\1\end{pmatrix}x_1+\begin{pmatrix}0\\0\\0\\1\end{pmatrix}x_3 \geq \begin{pmatrix}1\\1\\1\\1\end{pmatrix}$$ since the coefficients of $x_2$ put item $1$ and item $2$ together, thus should be removed.

However, the RMP of Node 1 is infeasible now, which means it cannot be iterated by column generation.

And I'm at a loss what to do at this stage.

BD26
  • 51
  • 2

3 Answers3

5

At each node, you need to ensure that the initial LP is feasible. For example, for the Bin Packing problem, you can add a column for each item or group of items that must be in the same bin corresponding to packing these items alone in a bin.

It is possible to speed up the column generation at the non-root nodes by adding previously computed columns which are still feasible for the node subproblem.

In general, the bottleneck of a branch-and-price is the pricing problem, and not the LP solves. But for the Bin Packing problem, it might not be the case, since the subproblem is quite easy. If the bottleneck is the LP solves, it might not be worth adding all the previously computed columns which are feasible, but only a subset of those. For example, only those found at the root node, or only the last ones found at the root node, or only the ones which are active in the root node solution.

fontanf
  • 2,623
  • 6
  • 11
  • From the last paragraph, I don't understand why I should add columns of root node. Aren't the columns from the parent a better choice since "the parent and the child are much closer"?
  • – BD26 Feb 20 '23 at 01:20
  • From the first paragraph, for n items instance, I should add n trivial columns to the LP for each non-root node to ensure feasibility, will this cause inefficiency?
  • – BD26 Feb 20 '23 at 01:31
  • Yes, it could be. It means that you need to store the relaxation solution in each node. In general, it shouldn't be an issue.
  • – fontanf Feb 20 '23 at 02:15