我对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)
您可以建立要绘制的值的列表,如下所示:
T_plot = list(instance.T)
x_plot = [value(instance.x[t]) for t in T_plot]
,然后使用您喜欢的Python绘图程序包进行绘图。我通常使用Matplotlib。