将 Pyomo 导出到 .mps 文件时保留变量名
Keeping variable names when exporting Pyomo into a .mps file
所以,我目前正在使用一个 pyomo 模型,该模型具有多个并行求解的实例。问题是,解决它们需要 pyomo 相当长的时间(比如 2 到 3 秒,尽管 gurobi 的 解决部分 大约需要 0.08 秒)。我发现,通过将 pyomo 实例导出到 .mps 文件,然后将其提供给 gurobipy,我可以使整体速度提高 30%。
问题稍后出现,当我想使用已求解模型的变量时,因为我注意到,当将原始实例从 pyomo 导出到 .mps 文件时,变量名丢失;它们都被命名为“x”(因此,例如,model.Delta、model.Pg、model.Alpha 等变成 x1、x2、...、x9999 而不是 Delta[0] , Delta[1], ... Alpha[99,99]).
有没有办法在导出模型时保留原来的变量名?
设法解决了!
对于可能觉得这有用的任何人,我传递了一个字典,其中包含“symbolic_solver_labels”作为该方法的 io_options 参数,如下所示:
instance.write(filename = str(es_) + ".mps", io_options = {"symbolic_solver_labels":True})
现在我的变量在 .mps 文件中被正确标记了!
所以,我目前正在使用一个 pyomo 模型,该模型具有多个并行求解的实例。问题是,解决它们需要 pyomo 相当长的时间(比如 2 到 3 秒,尽管 gurobi 的 解决部分 大约需要 0.08 秒)。我发现,通过将 pyomo 实例导出到 .mps 文件,然后将其提供给 gurobipy,我可以使整体速度提高 30%。
问题稍后出现,当我想使用已求解模型的变量时,因为我注意到,当将原始实例从 pyomo 导出到 .mps 文件时,变量名丢失;它们都被命名为“x”(因此,例如,model.Delta、model.Pg、model.Alpha 等变成 x1、x2、...、x9999 而不是 Delta[0] , Delta[1], ... Alpha[99,99]).
有没有办法在导出模型时保留原来的变量名?
设法解决了! 对于可能觉得这有用的任何人,我传递了一个字典,其中包含“symbolic_solver_labels”作为该方法的 io_options 参数,如下所示:
instance.write(filename = str(es_) + ".mps", io_options = {"symbolic_solver_labels":True})
现在我的变量在 .mps 文件中被正确标记了!