python - Pyomo 时间相关模型?

标签 python pyomo

我对 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/

相关文章:

python - 如何从 `nl` 脚本求解器中从 `pyomo` 获取 `pyomo` 文件?

python - 将异步协程作为 celery 任务运行

python - python 写入二进制文件

python - 在虚拟环境中运行 Pyomo 时出错

python - 在 pyomo 中如何从目标函数中提取二阶导数

python-3.x - 在python中为cplex求解器pyomo设置optimalitytarget参数

python - Wagtail:添加对其他图像文件格式的支持

Python - 减少数据库的大小

python - 如何在网络服务器上上传图像。 Django

python - Pandas 数据框到 namespace 为 None 的嵌套字典