python - 索引对索引组件无效。pyomo中具有双索引的参数
问题描述
我正在尝试通过Wind_DA
以下方式创建具有双索引的参数:
import pandas as pd
import pyomo.environ as pe
import pyomo.opt as po
#DATA
T=3;
W=1;
time = ['t{0}'.format(t+1) for t in range(T)]
wind=['W{0}'.format(w+1) for w in range(W)]
Wind_DA={}
Wind_DA['w1', 't1']=200
Wind_DA['w1', 't2']=200
Wind_DA['w1', 't3']=200
#MODEL
seq=pe.ConcreteModel()
### SETS
seq.W = pe.Set(initialize = wind)
seq.T =pe.Set(initialize = time)
### PARAMETERS
seq.Wind_DA = pe.Param(seq.W, seq.T, initialize = Wind_DA)
我收到以下错误:
KeyError:“索引'('w1','t1')'对于索引组件'Wind_DA'无效”。
但是,当我在控制台上输入时,Wind_DA[('w1', 't1')]
我得到了200
,这意味着这本字典有那个索引。可能是什么问题呢?先感谢您!
解决方案
这只是一个打字错误。
创建风阵时wind=['W{0}'.format(w+1) for w in range(W)]
使用大写 W,但创建参数Wind_DA = {}...
时使用较低的 W
只需更改wind=['W{0}'.format(w+1) for w in range(W)]
为小写字母w
,它应该可以正常工作。wind=['w{0}'.format(w+1) for w in range(W)]
import pandas as pd
import pyomo.environ as pe
import pyomo.opt as po
#DATA
T=3
W=1
time = ['t{0}'.format(t+1) for t in range(T)]
wind=['w{0}'.format(w+1) for w in range(W)]
Wind_DA={}
Wind_DA['w1', 't1']=200
Wind_DA['w1', 't2']=200
Wind_DA['w1', 't3']=200
#MODEL
seq=pe.ConcreteModel()
### SETS
seq.W = pe.Set(initialize = wind)
seq.T =pe.Set(initialize = time)
### PARAMETERS
seq.Wind_DA = pe.Param(seq.W, seq.T, initialize = Wind_DA)
推荐阅读
- python - 有条件地格式化 pandas to_html 的单元格
- oracle - 如何允许用户在交互式网格中添加列并设置限制?
- typescript - 问题:对于 multiLineSeries 图表,如果其中一个系列没有数据,则不会绘制整个图表
- mongodb - MongoDB:一个只读辅助节点指向两个主节点
- c# - 使用 Excel COM 创建后关闭 Excel 进程
- logstash - Logstash 解析 json
- java - 为什么当我点击按钮时我的数据不去也不提交到 MySQL 数据库?
- spring - 了解 CrudRepository 保存/更新
- angular - 一个组件中的多个页面
- python - 在 Python 中,如何将数值数组列表转换为简单的一维 numpy 数组?