[英]Python Pulp absolute constraints
假设我的PuLP定义中有一组决策变量:
vals = [-v for k, v in (DecisionVars.items())]
我想创建一个与所有约束之和的绝对值有关的约束。 所以像这样:
for i in range(len(DecisionVars)):
prob += lpSum(abs(vals[:i+1])) <= some_limit, "Absolute constraint"
但是我似乎无法将abs()
运算符应用于约束吗?
UPDATE
好的,如果我在半定性编程中利用绝对值总和约束中的信息,那么我的问题可以用不同的方式表述。 我现在正在尝试评估:
abs(x1) + abs(x2) + abs(x3) <= some_limit
正如上面的链接所指出的,答案可能是创建向量x的1范数(其中x是上述决策变量的向量)。 我可以看到numpy
具有numpy.linalg.norm
但是我看不到它如何在PuLP中递归地创建我的约束集。 我正在努力使用lpSum
创建正确的语法。
正确的每个变量
X1
使两个新的非负变量Y1
和Z1 >=0
然后设置一个约束
X1 == Y1 - Z1
然后你的腹肌约束变成
Y1 + Z1 +.... <= 10
您将需要有另一个变量和每个绝对变量的两组约束。
m += xn <= tn
m += -xn <= tn
那么tn的和就是xn的绝对值的和。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.