我在pyomo中有一个模型,例如机器1,在机器2中有CPLEX求解器.我在机器1中将pyomo模型(ConcreteModel)转换为具有函数model.write(“ problem.lp”)的problem.lp文件.然后,我将此文件传输到计算机2上,并从CPLEX求解器中获取solution.sol文件.但是解决方案文件中的变量名称与模型的变量名称不同.
这在解决方案的分析中引起了问题.
有什么方法可以将解决方案文件中的变量名称转换或映射到模型的名称?
谢谢.
编辑1:我认为归结为在编写模型时找到符号图.符号映射ID由model.write(“ problem.lp”)返回(请参见here).现在的问题是我有符号映射ID.如何获取符号映射文件并将其用于解码solution.sol文件中的变量?
解决方法:
如“编辑1”中给出的那样,将模型写入问题.lp时会返回符号映射.
如this code的第27-29行所示,可以获取模型中变量名称的元组及其参考变量.
然后,可以使用xml之类的包在python中解析CPLEX生成的XML文件(solution.sol).现在我们有了地图以及值.我们只需要比较参考变量并将其值存储到变量中,变量的名称与模型中的名称相同.