0

是否可以在 Python 的混合整数非线性编程库中添加一个外部自定义函数作为动态约束?我正在使用布尔变量和 Numpy 矩阵(大小 mxn),我想最小化请求的总值的总和(例如 tot_vals = 2,3......n)。因此,我想添加一些“空间”约束,我创建了函数(基于布尔索引)并尝试在我的优化过程中实现它们。在 CVXPY 中,它失败了,因为我只能添加 CVXPY 的格式化约束(据我所知),PULP 失败,因为它仅适用于 LP 问题,也许可以选择 Pyomo、OpenOpt 或 PySCIPopt?

预先感谢您的帮助

4

1 回答 1

1

使用PySCIPOpt,这是可能的。您需要创建一个自定义约束处理程序来检查当前 LP 解决方案的可行性,并可能添加有效的不等式以规避下一个节点中的不可行性。

此过程的一个示例是 PySCIPOpt 中的TSP 实现。这也将在有关 PySCIPOpt的本教程文章中更详细地解释。

于 2017-12-14T07:00:58.103 回答