首页 > 解决方案 > 通过 DataPortal 将 JSON 数据加载到参数中

问题描述

我想将 JSON 文件中的数据加载到我的 Pyomo 模型中。我从

m = AbstractModel()
m.T = RangeSet(1,48,1)
m.TS = Param(m.T)
dp = DataPortal()

稍后我想加载我的 json 文件来填充我的参数 TS

dp.load(param = m.TS, filename = data.json)

数据是由整数 1,2,...,48 索引的时间序列因此它看起来像这样:

{ 
  "1" : 0.0001,
  "2" : 0.1 ,
  ....,
  "48" : 0
}

然后我创建

create_instance(dp)

我收到以下错误:

RuntimeError: Failed to set value for param=TS, index=1, value=35.676187.
        source error message="Index '1' is not valid for indexed component 'TS'"

标签: pyomo

解决方案


所以我想出了一个解决这个问题的方法。JSON 文件应该以这种方式编写:

{"TS":
    [
     {'index':1, 'value':1},
     {'index':2, 'value':0},
     {'index':3, 'value':1},
    ]
}

推荐阅读