分析 pyomo 中的解决方案 (.sol) 文件
Analysing solution (.sol) file in pyomo
我在机器 1 中有一个 pyomo 模型,我在机器 2 中有 CPLEX 求解器。我将 pyomo 模型 (ConcreteModel
) 转换为具有函数 [=12] 的 problem.lp
文件=] 在机器 1 中。然后我将此文件传输到机器 2 并从 CPLEX 求解器获取 solution.sol
文件。但是解决方案文件中的变量名称与模型变量的名称不同。
这导致解决方案的分析出现问题。
有没有办法将解决方案文件中的变量名称转换或映射到模型的名称?
谢谢。
编辑1:我认为归结为在编写模型时找到符号映射。符号映射 ID 由 model.write("problem.lp")
返回(参见 here)。现在的问题是我有符号映射 ID。如何获取符号映射文件并使用它来解码 solution.sol
文件中的变量?
如编辑 1 中所述,符号映射在将模型写入 problem.lp
时返回。
如this code的第27-29行给出的,可以得到模型中的变量名及其引用变量的元组。
然后,CPLEX 生成的 XML 文件 (solution.sol
) 可以在 python 中使用类似 xml 的包进行解析。现在我们有了地图和值。我们只需要比较参考变量并将其值存储到与模型中名称相同的变量中。
我在机器 1 中有一个 pyomo 模型,我在机器 2 中有 CPLEX 求解器。我将 pyomo 模型 (ConcreteModel
) 转换为具有函数 [=12] 的 problem.lp
文件=] 在机器 1 中。然后我将此文件传输到机器 2 并从 CPLEX 求解器获取 solution.sol
文件。但是解决方案文件中的变量名称与模型变量的名称不同。
这导致解决方案的分析出现问题。
有没有办法将解决方案文件中的变量名称转换或映射到模型的名称?
谢谢。
编辑1:我认为归结为在编写模型时找到符号映射。符号映射 ID 由 model.write("problem.lp")
返回(参见 here)。现在的问题是我有符号映射 ID。如何获取符号映射文件并使用它来解码 solution.sol
文件中的变量?
如编辑 1 中所述,符号映射在将模型写入 problem.lp
时返回。
如this code的第27-29行给出的,可以得到模型中的变量名及其引用变量的元组。
然后,CPLEX 生成的 XML 文件 (solution.sol
) 可以在 python 中使用类似 xml 的包进行解析。现在我们有了地图和值。我们只需要比较参考变量并将其值存储到与模型中名称相同的变量中。