首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Pyomo中打印3D三维变量(3个索引)

在Pyomo中打印3D三维变量(3个索引)
EN

Stack Overflow用户
提问于 2021-10-12 18:28:36
回答 1查看 143关注 0票数 0

我正在处理一个优化问题,我有不同的3D变量作为输出。我想在格式表中打印我的变量,但是我找不到方法。

下面是我的变量的一个例子:

代码语言:javascript
复制
model.zeta= Var(model.I,model.J,model.T,within=Binary) #starting time of an activity j of project i
model.eta= Var(model.I,model.J,model.T,within=Binary) #finsih time of an activity j of project i

其中:

代码语言:javascript
复制
model.I=Set() #set of construction sites
model.J=Set() #set of project activities
model.T=Set()  #set of periods

我想让i&j作为我的行,t作为我的列,如下所示:

EN

回答 1

Stack Overflow用户

发布于 2021-10-20 23:00:06

您可以使用pandas和pyomo的结果来完成此任务。我将写一个例子:

让我们假设你已经对你的数据进行了建模,并在你陈述的时候解决了它:

代码语言:javascript
复制
model.I=Set() #set of construction sites
model.J=Set() #set of project activities
model.T=Set()  #set of periods

model.zeta= Var(model.I,model.J,model.T,within=Binary) #starting time of an activity j of project i
model.eta= Var(model.I,model.J,model.T,within=Binary) #finsih time of an activity j of project i

您需要为pandas DataFrame分隔indexcolumns,然后迭代您的变量以提取值并填充DataFrame

代码语言:javascript
复制
import pandas as pd
column = model.I*model.J
ind = model.T
df = pd.DataFrame(columns=column, index=ind)
for (i,j,t),val in model.zeta.items():
    df.loc[(i,j),t] = val()

#show the data in dataframe
df.head()

这应该会给你一个像这样的表:

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

https://stackoverflow.com/questions/69545369

复制
相关文章

相似问题

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