首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pyomo:优化发电厂规模的最佳方法和TypeError:不支持的操作数类型(S)用于*:“浮动”和“IndexedVar”

Pyomo:优化发电厂规模的最佳方法和TypeError:不支持的操作数类型(S)用于*:“浮动”和“IndexedVar”
EN

Stack Overflow用户
提问于 2022-11-21 11:29:04
回答 1查看 33关注 0票数 0

我正试图解决一个优化问题,在这个优化问题中,两个发电厂必须满足负荷需求。这些发电厂有不同的发电方式。例如(随机数)

代码语言:javascript
运行
复制
power_prod1 = [2,0,1]
power_prod2 = [0,1,1]

不同发电厂的负荷需求和成本是在类似的way.The成本中给出的,参见下面的plant1和plant2。

代码语言:javascript
运行
复制
load_demand = [4,4,4] 
Costs = {'power 1':60, 'power2':120}

为了解决这个问题,我试过了

代码语言:javascript
运行
复制
def plant1_size(model,i,j):
    return(0, None)
model.PowerPlant1Size = pyo.Var(model.plants,model.periods,bounds=plant1_size)

def plant2_size(model,i,j):
    return(0, None)
model.PowerPlant2Size  = pyo.Var(model.plants,model.periods,bounds=plant2_size)


def load_balance(model,i,j):
    return (power_prod1[j]*model.PowerPlant1Size + power_prod2[j]*model.PowerPlant2Size == load_demand[j])
model.load_constraint = pyo.Constraint(model.plants,model.periods,rule=load_balance)

并且有一个目标函数,目标是通过为发电厂选择合适的规模来最小化成本。当我运行这段代码时,我会得到一个错误"TypeError:不受支持的操作数类型为*:‘IndexedVar’和'IndexedVar'“。我知道为什么会有这个错误,但我想不出解决发电厂规模的方法。(当我试图以另一种方式解决这个问题时,可能会有一些多余的代码,还有一些我没有包含的代码)。

我如何用pyomo能够解决的方式重写这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-21 14:44:27

这里有几件事很麻烦。我不确定你的基本数学问题是否正确。我会放慢实现的速度,用铅笔和纸列出所有变量和索引,以确保它是有意义的。例如,您将plant size作为一个变量,该变量在一段时间内被索引.这是否意味着5号发电厂可以在不同的时间内变得越来越大?

在同一个变量上,您似乎正在将索引嵌入到名称中,即使您是按工厂编号进行索引。我希望看到某一种植物的产量作为一个变量,例如:

代码语言:javascript
运行
复制
model.production = pyo.Var(model.plants, model.time_periods)

哦,您所看到的错误的主要来源是您使用了一个索引变量,而没有在您的目标中为PowerPlantSize提供索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74518220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档