我对 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] for t in model.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。
关于python - Pyomo 时间相关模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59773267/