索引对索引组件无效。 pyomo 中具有双索引的参数
Index is not valid for indexed component. Parameter with double indexing in 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)
我正在尝试通过以下方式创建具有双索引的参数 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)