【发布时间】:2019-01-19 20:10:13
【问题描述】:
假设我的 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() 运算符应用于我的约束?
更新
好的,如果我利用这篇文章sum of absolute values constraint in semi definite programming 中的信息,那么我的问题可以用不同的方式表述。我现在正在尝试评估:
abs(x1) + abs(x2) + abs(x3) <= some_limit
正如上面链接中所指出的,答案可能是创建向量 x 的 1 范数(其中 x 是上述决策变量的向量)。我可以看到numpy 有numpy.linalg.norm,但我看不到这如何在 PuLP 中递归地创建我的一组约束。我正在努力使用lpSum 创建正确的语法。
【问题讨论】:
-
我认为这里的回答很好:stackoverflow.com/questions/29795632/…
标签: python constraints pulp