scipy.optimize.differential_evolution 的整数解约束?

Posted

技术标签:

【中文标题】scipy.optimize.differential_evolution 的整数解约束?【英文标题】:Integer solution constraint for scipy.optimize.differential_evolution? 【发布时间】:2022-01-23 05:53:05 【问题描述】:

我正在尝试在我的程序中使用scipy.optimize.differential_evolution 优化器。但是我需要解决方案只有整数...

目前解决方案(scipy.optimize.OptimizeResult 的 属性 x)总是如下所示:

[3.56932195, 1.69611735, 8.67970522, 9.69922539, 6.43961603, 3.3292928 , 2.32741226]

但我需要解决方案中的所有元素都是整数,例如:

[6, 6, 4, 7, 2, 5, 3]

有什么办法可以强制执行吗?或者有没有其他/更适合我的包?

【问题讨论】:

【参考方案1】:

您需要使用混合整数规划求解器。

除非您的约束矩阵是单模的,否则您无法确保没有 MIP 求解器的整数解。

通过说所有解决方案都必须是整数,您是在说您的问题是非凸的。但你却试图解决一个凸问题。

如果您的约束/方程是线性的,您可能需要查看 GLPK 和 CBC 等工具。如果您的约束是非线性的,您需要研究非线性整数规划求解器。

【讨论】:

以上是关于scipy.optimize.differential_evolution 的整数解约束?的主要内容,如果未能解决你的问题,请参考以下文章