【问题标题】:Pyomo and IBM Decision CloudPyomo 和 IBM 决策云
【发布时间】:2019-07-31 10:12:34
【问题描述】:

我正在尝试解决 docloud 中的 pyomo 模型并将结果导入回模型中。

通过 pyomo 加载 sol 文件的最简单方法是什么?到目前为止,我根本无法弄清楚如何做到这一点。我已经尝试了来自画廊的read/write 示例,但没有任何运气。 我已尝试执行以下操作:

_,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)

但是,之后我在模型中的所有变量仍然具有它们的默认值。

【问题讨论】:

标签: ibm-cloud pyomo


【解决方案1】:

好吧,在 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"])

我不确定每个变量的“索引”条目是什么意思。

【讨论】:

    猜你喜欢
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 2018-02-11
    • 2020-07-04
    • 1970-01-01
    • 2020-08-10
    • 2021-05-27
    相关资源
    最近更新 更多