Источник данных для вещей с несколькими индексами должен быть проиндексирован кортежами с соответствующими индексами в них. Итак, в приведенном выше случае ваш исходный словарь должен иметь кортежи (model.GENERATOR, model.TIME) в качестве ключей.
Вот игрушечный пример:
from pyomo.environ import *
sources = ['sun', 'wind', 'voodoo']
time_periods = list(range(4))
data = { ('sun', 2): 24,
('wind', 3): 60,
('voodoo', 1): 12}
m = ConcreteModel()
# sets
m.sources = Set(initialize=sources)
m.time = Set(initialize=time_periods)
# param
m.energy = Param(m.sources, m.time, initialize=data)
# check it....
m.pprint()
дает:
3 Set Declarations
energy_index : Dim=0, Dimen=2, Size=12, Domain=None, Ordered=False, Bounds=None
Virtual
sources : Dim=0, Dimen=1, Size=3, Domain=None, Ordered=False, Bounds=None
['sun', 'voodoo', 'wind']
time : Dim=0, Dimen=1, Size=4, Domain=None, Ordered=False, Bounds=(0, 3)
[0, 1, 2, 3]
1 Param Declarations
energy : Size=3, Index=energy_index, Domain=Any, Default=None, Mutable=False
Key : Value
('sun', 2) : 24
('voodoo', 1) : 12
('wind', 3) : 60
4 Declarations: sources time energy_index energy*