Originally posted by: SystemAdmin
Vivek,
> Sorry for the confusion. I think I used a wrong term here. What I meant by 'degenerate' is the existence of multiple optimal solutions. For example, when there exists two variables with the same cost coefficient. In this case, I guess the right thing to say is that primal is non-degenerate and has multiple solutions but dual could still be unique? As indicated by several non-basic variables with zero reduced costs.
Zero reduced costs on nonbasic variables makes it likely (but not certain) that alternate primal optima exist. The implication for the dual is that the dual solution is degenerate (but typically unique).
> Regarding the last point, in the callback method of doing things, I was under the impression that we add user cuts directly to the original problem.
You can do that (in situations where you can come up with cuts to add), but that's not Benders decomposition.
> I now gather that we still have to make at least one master problem
Yes, and one or more slave problems.
> and keep adding cuts to it instead of starting from scratch. In our traditional implementation, we have turned on CPX_MIP_MIPSTART and we load the .mst file from the previous iteration of the master problem. Do you think this approach would have the same effect as using the callbacks?
It's a step in the right direction (probably), but I would expect that the "one tree" approach (callbacks) would be faster in most cases. (I've learned never to say "in all cases" when MIPs are involved.)
Paul
Mathematicians are like Frenchmen: whenever you say something to them, they translate it into their own language, and at once it is something entirely different. (Goethe)
#CPLEXOptimizers#DecisionOptimization