I am implementing a Column Generation algorithm to solve a set partitioning problem. The master problem takes the form :
$\min \sum_{i \in I} c_i \lambda_i$
s.t
$\sum_{i \in I} a_{ji} \lambda_i = 1, \forall j \in J, \text{(each element $j$ can be partitioned to exactly one partition $i$)}\\ \lambda_i \in \{0,1\}$
where $J$ is the set of elements to be partitioned, $I$ set of all partitions, $c_i$ the cost of partition $i$, binary parameter $a_{ji} =1$ if element $j$ is in partition $i$, and each column $\lambda_i$ is a binary variable equals 1 if partition $i$ is selected in the optimal solution.
After relaxing the integrality constraint on $\lambda_i$, let $\pi_j$ be the dual variable of each partitioning constraint. Using this dual info, a pricing problem which is solved exactly through a MILP model to find one or more new columns with negative reduced cost : $\hat{c_i} = c_i - \sum_{j \in J} a_{ij} \pi_i$.
However the problem I have, is that after comparing the solution of CG approach to a brute force method (full enumeration of all partitions for small instance), i found out that for example one column that was not added to the master problem because it has a positive reduced cost ($c_i > \sum_{j \in J} a_{ij} \pi_i$) appeared in the optimal solution of the SPP in the brute force method. Which is quite surprising.
I would like to know if anyone has dealt with the same issue? or is there something I am overlooking here? If needed I can provide you with a small example.