Python Pulp线性编程约束

hkbgner:

我是纸浆的新手,想知道是否需要优化以下内容:

x = pulp.LpVariable.dicts("Volume", range(0, 7), cat='Binary')

只要有0,就必须至少是3。

所以解可以是[0,0,0,0,0,0,1],[0,0,0,1,0,0,0],[1,1,1,0,0,0, 1],而不是[1,0,1,0,1,0,0]。

我尝试添加如下约束:

prob += min([len(list(g)) for k, g in itertools.groupby(x.values()) if k == 0]) >= 3

但这没用。

我该如何制定呢?

欧文·卡尔维拉根(Erwin Kalvelagen):

不可以。PuLP用于线性编程,因此所有约束都必须是线性的。因此,不允许使用if语句和类似的编程构造。

至少三个连续的零的要求可以用不同的方式表示。一种相当有趣的方法是禁止模式101和1001。可以这样表示:

 x[i] - x[i+1] + x[i+2] <= 1             for i=0,1,2,....
 x[i] - x[i+1] - x[i+2] + x[i+3] <= 1    for i=0,1,2,....

这些约束非常精确地排除了模式101和1001,但是允许任何其他位模式。此外,它们不需要任何其他变量(某些其他方法则需要)。

这很容易用纸浆表达。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用矩阵形式的约束的Python Pulp线性编程

Python的Pulp模块中的条件约束线性程序

Python Pulp 绝对约束

如何在Python上使用PuLP GLPK为混合整数线性编程(MILP)的决策变量编写IF条件?

线性编程(Simplex LP)PuLP?

在Pulp Python中制定LP的约束

使用Python中的二次编程/最小化来最小化受线性约束的规范

Python混合整数线性编程

使用python进行线性编程

线性编程-问题-Python Gekko

Python Cplex 约束 编程逻辑约束

在Python上打印CPLEX LP的线性约束

在使用Python Pulp的约束中使用mod函数

Python PULP-阵容生成器的位置约束

使用python或excel进行线性编程

使用PuLP进行线性编程色拉混合物优化

Python:带约束的多元非线性求解器

python scipy线性编程模块中最大决策变量数

Python中的线性编程:“模块”对象没有属性“ LPX”

向问题添加约束时,Python PuLP 警告“覆盖先前设置的目标”

梦幻足球的Python PuLP优化问题,如何添加某些条件约束?

如何使用python PuLP向优化问题添加顺序(时间序列)约束?

具有非线性目标(除法)的线性约束 MIP 的 CPLEX 与约束编程解决方案

python中的数字精确线性编程,用于检查点是否可以线性分离?

使用lpSolve的R中的线性编程消除约束

在python中优化具有线性约束和二进制变量的线性目标函数

线性拟合受约束要经过Python中的第一点

Python线性规划——如何将变量约束为整数

如何在 Python 中将 if-else 语句转换为线性规划约束