【发布时间】:2022-11-27 09:10:28
【问题描述】:
这个问题与我之前的问题found here有关。我已经设法解决了这个问题(非常感谢@AirSquid!)我的目标函数是这样的:
所以 avgPrice_n 变量的索引是n.然而,它实际上被定义为
这意味着它被索引n和一世.
所以目前我的目标函数非常混乱,因为我有三个总和。它看起来像(我扩展了目标函数中的括号并分别添加了每个组件,所以 avgPrice_n*demand_n 看起来像):
expr += sum(sum(sum((1/12)*model.c[i]*model.allocation[i,n] for i in model.MP[t]) for t in model.M)*model.demand_n[n] for n in model.N)
虽然这可行,但调试非常困难,因为条款很长。因此,我没有使用 avgPrice_n 的实际定义,而是想知道是否可以创建一个 avgPrice_n 变量,在目标函数中使用它,然后在我定义 avgPrice_n 的地方创建一个约束,如上所示。
我遇到的问题是我创建了我的决策变量 x_{i,n} 作为变量,但显然我无法创建 avgPrice_n 作为变量,我通过 x_{i,n} 对其进行索引,因为这导致TypeError: Cannot apply a Set operator to an indexed Var component (allocation) 错误。
所以到目前为止,我的决策变量看起来像:
model.x = Var(model.NP_flat, domain = NonNegativeReals)
我试图创造:
model.avg_Price = Var(model.x, domain = NonNegativeReals)
从而导致上述错误。任何想法或建议将不胜感激!
【问题讨论】:
标签: python optimization pyomo