首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyomo:集合的集合

Pyomo:集合的集合
EN

Stack Overflow用户
提问于 2021-04-09 22:19:24
回答 1查看 48关注 0票数 0

我是Pyomo和Python的新手。我想知道是否有人可以帮助我处理基于集合P的集合Q的情况。

代码语言:javascript
复制
model.P = pyo.Set(initialize=list(df.iloc[:,0]))
model.Q = pyo.Set(model.P)

Model.P代表我从文件中读入的产品。Model.Q是每个产品的可能数量。所以,举个例子:产品"AAA“有3个不同的量,我想设置model.Q。q”AAA“等于范围(1,3)。产品"BBB“有7个不同的数量,我想设置model.Q。q”BBB“等于范围(1,7)。

数量被读入一个列表3,7,...

当我想像下面这样初始化一个参数时,它会给出一个错误,如下面的例子所示。

代码语言:javascript
复制
# Setup time
model.st = pyo.Param(model.P,model.Q,initialize=setupTimes,domain=pyo.NonNegativeReals)

TypeError: Cannot apply a Set operator to an indexed Set component (Q)

我如何实现这一点?谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2021-04-10 21:01:59

我真的不知道你打算用这个集合做什么,但我觉得可能有其他方法可以用一个集合和每个集合的数量参数来有效地模拟你的问题。

然而,为了做你想做的事情,我建议的一种方法是创建第二个集合"model.PP“,它将范围(max(List))作为元素。然后创建一个元组列表,将每个model.P适当地映射到model.PP的元素,然后使用这些元素初始化Model.Qie。

代码语言:javascript
复制
model.Q = pyo.Set(within=model.P*model.PP, initialise=[("AAA",1), ("AAA",2). . .])

您可以使用for循环创建这个新列表。

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

https://stackoverflow.com/questions/67022789

复制
相关文章

相似问题

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