Python MINLP 中的外部约束函数

Python external constraint function in MINLP

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

提前感谢您的帮助

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

此过程的一个示例是 TSP implementation in PySCIPOpt. This is also explained in some more detail in this tutorial article 关于 PySCIPOpt。