【问题标题】:For loop iteration - Syntax Error in Pyomo ExpressionFor 循环迭代 - Pyomo 表达式中的语法错误
【发布时间】:2019-12-07 21:21:39
【问题描述】:

我正在尝试在 pyomo 表达式中执行 for 循环

这是我的初始化:

N = range(len(df))
model.N             = Param(N, mutable=False)
model.r             = Var(initialize=1.0 , within=NonNegativeReals)
model.alpha         = Var(initialize=1.0 , within=NonNegativeReals)
model.a             = Var(initialize=1.0 , within=NonNegativeReals)
model.b             = Var(initialize=1.0 , within=NonNegativeReals)
model.rCon          = Constraint(expr= model.r >= 0.000001)
model.alphaCon      = Constraint(expr= model.alpha >= 0.000001)
model.aCon          = Constraint(expr= model.a >= 0.000001)
model.bCon          = Constraint(expr= model.b >= 0.000001)

当我尝试定义这样的表达式时:

model.v1 = Expression(expr= model.r + df['Xi'][0])

它编译得很好,但是当我尝试像这样进行 For 循环迭代时:

model.v2 = Expression(expr= model.r + df['Xi'][i] for i in N)

我收到这样的错误:

非常感谢您的帮助

【问题讨论】:

  • 如所写,您的表达无效。你想把总和超过df['Xi'][i] for i in N 吗?还是您要声明一个索引表达式?

标签: python for-loop syntax-error pyomo


【解决方案1】:

看起来您正试图通过参数 expr 将生成器传递给 Expression 构造函数。在这种情况下,您需要像这样的额外括号:

model.v2 = Expression(expr=(model.r + df['Xi'][i] for i in N))

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 2013-07-02
    • 2015-04-17
    • 2021-05-10
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    相关资源
    最近更新 更多