Benders分解中的点/可行性削减

时间:2019-04-03 12:24:57

标签: python callback mathematical-optimization cplex

我正在了解Benders分解,现在,我正在处理文件bendersatsp.py。我了解在其中编程的模型(ATSP)中,不必添加可行性削减。我想看到一个玩具示例,其中有必要使用与该文件中相同的代码结构来添加可行性削减,以了解如何做到这一点。

我一直在想:

有必要在函数if内添加新条件def separate

if cpx.solution.get_status() == cpx.solution.status.MIP_optimal:

可以选择吗?

非常感谢!

1 个答案:

答案 0 :(得分:3)

我认为您错了:示例 only 分开了可行性削减。

您的想法是,插入功能separate中以实现最优削减是正确的。但是,由于子问题是LP而非MIP,因此您将不得不检查cpx.solution.status.optimal的状态。

Python目前没有用于此的示例代码。另一方面,仅接受教科书Benders的描述,使其与您引用的Python示例保持一致,然后自己扩展分隔,可能并不难。

cplex/examples/src/remotec/parbenders.c中,您有一个Benders实现,可将两种切割类型分开。此实现使用C语言实现,但可能会发现Python和C API类似,这可能会对您有所帮助。