Forum Discussion
FICO
6 years agoCommunity Manager
Benders Decomposition and Column Generation: exiting condition
Dear all,
this might sound very silly to you all, but I need your help.
I am referring to the walkthroughs of the Benders Decomposition described in this document:
https://www.msi-jp.com/xpress/learning/square/08-moselpar.pdf
and Column Generation here:
https://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/mosel/mosel_ug/dhtml/moselugB5.html
In the Benders Decomposition process, at page 55, they describe how the condition to exit from the loop is:
z'-Dy'<= u''(b - By')
However, later at page 58, in the implementation of the code, the exiting condition is actually:
z'-Dy' = u''(b - By')
or as written in the code:
returned:= ( sol_obj - sum(i in IntVars) D(i)*sol_y(i) =sum(j in Ctrs) sol_u(j)* (b(j) - sum(i in IntVars) B(j,i)*sol_y(i))
In other words, whenever the two sides of the equation are equal the Benders Decomposition process stops.
I'm not sure whether this is an inaccuracy of the document or if I am missing something. My understanding is that the exiting condition in the implementation should be like the one written on top (with <=).
Similarly for the Column Generation process (described halfway through the page), the reduced costs of the new column generated must be positive for the process to continue, but the process should stop when the reduced costs becomes negative or equal to zero.
On the other hand, in the implementation, the exiting condition is
if zbest = 0 then
writeln("no profitable column found.")
break
Once again, I am not sure if this is an inaccuracy or I did not get the approach. Shouldn't the exiting condition be like this?
if zbest <= 0 then
writeln("no profitable column found.")
break
So the question is if the conditions in the implementation can be changed (to a <=) or if that would lead to a mistake of the process.
Any hint on this?
Thank you very much for your help
Best regards,
Francesco
No RepliesBe the first to reply
Related Content
Related Content
Benders decomposition failure (Java API)
I'm trying to implement Benders decomposition on a simple example (MIP master problem, LP subproblem) using a combination of a `PreIntsolCallback` (which ignores node optima but rejects heuristic sol...9 months agoPlace FICO® Xpress Optimization ForumFICO® Xpress Optimization Forum3 unread comments3 unread0Views0likes3CommentsIs there any example of combination of Benders Decomposition and Column Generation?
Dear all, I would like to know if there is any example (with code) of the combination of benders decomposition and column generation. I know that there are already some examples for column generatio...6 years agoPlace FICO® Xpress Optimization ForumFICO® Xpress Optimization Forum2 unread comments2 unread0Views0likes2CommentsHow to apply termination conditions to each objective function in multi-objective model
Hello everyone, I am implementing a multi-objective model in Python, and I would like to set a time limit for each objective function. It would be best if I could set different time limits for each,...1 year agoPlace FICO® Xpress Optimization ForumFICO® Xpress Optimization Forum4 unread comments4 unread3Views0likes4Comments