ibm-cloud - Pyomo 和 IBM 决策云
问题描述
我正在尝试解决 docloud 中的 pyomo 模型并将结果导入回模型中。
通过 pyomo 加载 sol 文件的最简单方法是什么?到目前为止,我根本无法弄清楚如何做到这一点。我已经尝试了来自画廊的读/写示例,但没有任何运气。我试图做以下事情:
_,sym_id = model.write("/tmp/problem.mps")
client.execute(input=["/tmp/anrochte.mps"], output="/tmp/result.xml")
然后我假设我需要使用 ReaderFactory 来获得结果,然后我可以将其导入回我的模型中:
with ReaderFactory(ResultsFormat.sol) as reader:
results = reader("/tmp/result.xml", suffixes=[".*"])
results._smap = model.solutions.symbol_map[sym_id]
model.solutions.load_from(results)
但是,之后我在模型中的所有变量仍然具有它们的默认值。
解决方案
好吧,在 pyomo 中似乎没有直接的方法可以做到这一点,但是来自 docloud 的 json 文件很容易解析。我现在正在使用以下内容:
_,sym_id = model.write("/tmp/problem.mps")
resp = client.execute(input=["/tmp/problem.mps"], output="/tmp/result.json")
with open("/tmp/result.json") as f:
res_json = json.load(f)
sym_map = model.solutions.symbol_map[sym_id]
for var in res_json['CPLEXSolution']['variables']:
sym_map.getObject(var["name"]).value = float(var["value"])
我不确定每个变量的“索引”条目是什么意思。
推荐阅读
- javascript - 根据元素类跳转到页面上的特定位置
- ios - Apple 的照片应用程序中的过滤器 UIScrollView/UICollectionView 是如何实现打开如此之快的?
- swift - 来自自定义类的 Swift addChild
- excel - 如何防止 Excel 数据透视表中的用户多选?
- r - 带有 geom_area (ggplot2) 的孔用于负 y 范围
- javascript - 错误类型错误:无法读取未定义的属性 X
- validation - 使用 Google 表格为多行创建动态下拉数据验证
- actions-on-google - 谷歌智能家居:“是
? 不做查询 - javascript - 根据 Typescript 中的数组中的名称及其值获取列名称
- mysql - Laravel 查询获取错误数据