gpt4 book ai didi

python - 获取线性 pyomo 约束的系数

转载 作者:太空宇宙 更新时间:2023-11-03 14:07:44 24 4
gpt4 key购买 nike

我想获得 pyomo 模型 m 的线性约束 c 的系数。

例如,对于

    m= ConcreteModel()
m.x_1 = Var()
m.x_2 = Var()
m.x_3 = Var(within = Integers)
m.x_4 = Var(within = Integers)
m.c= Constraint(expr=2*m.x_1 + 5*m.x_2 + m.x_4 <= 2)

我想获取数组c_coef = [2,5,0,1]

this question的答案解释了如何获取线性约束中出现的所有变量,我可以轻松地使用它来为约束中未出现的变量创建零系数。然而,我正在与非零系数作斗争。我当前的方法使用私有(private)属性_coef,即c_nzcoef = m.c.body._coef,我可能不应该使用它。

获得非零系数的正确方法是什么?

最佳答案

获取线性表达式系数的最简单方法是利用“规范表示”数据结构:

from pyomo.repn import generate_canonical_repn
# verify that the expression is linear
if m.c.body.polynominal_degree() == 1:
repn = generate_canonical_repn(m.c.body)
for i, coefficient in enumerate(repn.linear or []):
var = repn.variables[i]

这对于从 4.0 到至少 5.3 的任何版本的 Pyomo 都有效。

关于python - 获取线性 pyomo 约束的系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48749651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com