Pyomo时变模型?

问题描述 投票:1回答:1

我对pyomo还是很陌生,但是我很难确定如何创建时间相关模型并将其绘制在图形上。依时间而定,我的意思是只是每个时间步长假设不同值的变量(例如,从1到T)。

我使用了这个非常简单的模型,但是当我运行脚本时,我在输出中仅收到一个解决方案。我该如何改变?我也有与约束函数有关的错误,但我不确定是什么问题(ValueError:约束'constraint [1]'没有适当的值。位于。位于0x7f202b540850>'期望有元组或等式。)

我想展示x(t)的值在所有时间步长中如何变化。任何帮助表示赞赏。

from __future__ import division
from pyomo.environ import *
from pyomo.opt import SolverFactory
import sys

model = AbstractModel()
model.n = Param() 
model.T = RangeSet(1, model.n)
model.a = Param(model.T)
model.b = Param(model.T)

model.x = Var(model.T, domain= NonNegativeReals)

data = DataPortal()
data.load(filename='N.csv', range='N', param=model.n)
data.load(filename='A.csv', range= 'A', param=model.a)
data.load(filename='B.csv', range= 'B', param=model.b)

def objective(model):
    return model.x

model.OBJ = Objective(rule=objective)

def somma(model):
    return (model.a[t]*model.x[t] for t in model.T) >= model.b[t]

model.constraint = Constraint(model.T, rule=somma)

instance = model.create_instance(data)
opt = SolverFactory('glpk')
results = opt.solve(instance) 
python pyomo
1个回答
0
投票

您可以建立要绘制的值的列表,如下所示:

T_plot = list(instance.T)
x_plot = [value(instance.x[t]) for t in T_plot]

,然后使用您喜欢的Python绘图程序包进行绘图。我通常使用Matplotlib。

© www.soinside.com 2019 - 2024. All rights reserved.