python - 和/或约束的混合整数线性规划

标签 python mathematical-optimization linear-programming pulp mixed-integer-programming

我希望使用 PuLP 来满足一组约束,但我不确定如何设置变量来实现这一点。

例如,我将如何为以下约束设置变量:

((x_1 < x_2) AND (x_1 < x_3)) OR ((x_1 > x_2) AND (x_1 > x_3))

变量 x_1 小于或大于 x_2 和 x_3。

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

约束

 ((x1 <= x2) AND (x1 <= x3)) OR ((x1 >= x2) AND (x1 >= x3))

可以用一个额外的二进制变量来表示:

 x1 <= x2 + delta*M
 x1 <= x3 + delta*M
 x1 >= x2 - (1-delta)*M
 x1 >= x3 - (1-delta)*M
 delta in {0,1}

大多数高级求解器都有指标约束,允许我们在没有大 M 的情况下编写:

 delta = 0 -> x1 <= x2
 delta = 0 -> x1 <= x3
 delta = 1 -> x1 >= x2
 delta = 1 -> x1 >= x3
 delta in {0,1}

关于python - 和/或约束的混合整数线性规划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47490584/

相关文章:

python - 可能更改 Mako 的内联开始/结束语法?

c++ - E-olymp : Cake. 给出错误答案

sql-server - 使用sql查找方波上的兴趣点

r - R 中不等式系统的解决方案

algorithm - 单纯形法/线性规划帮助

Python,sklearn,it-idf 如何按 "####"分割,默认空格

python - 如何使用文件路径作为函数参数

algorithm - 关于将问题表述为线性规划的问题

python - Scikit-learn:如何在一维数组上运行 KMeans?

swift 数组 'contains' 功能就地优化