"Time" 在 pyomo 的 results.json 中的含义

Meaning of "Time" in pyomo's results.json

我正在使用 Pyomo 和 GLPK 求解 ILP。 运行 在命令行上,pyomo 输出每一步花费的时间(以秒为单位)。现在,当我查看输出的 results.json 文件时,我得到一个如下所示的部分:

"Solver": [
    {
        "Error rc": 0,
        "Statistics": {
            "Branch and bound": {
                "Number of bounded subproblems": "13",
                "Number of created subproblems": "13"
            }
        },
        "Status": "ok",
        "Termination condition": "optimal",
        "Time": 2.9578073024749756
    }
]

在这种情况下,"Time" 是什么意思? 我试图通过应用启发式方法来修复一些变量来缩短求解时间。有趣的是,这不会降低命令行 运行 时间,但会显着降低 results.json 文件中的时间值。

对应于求解器中实际花费的时间。从命令行的角度来看,总时间将包括 (1) 构建 Pyomo 模型的时间,(2) 将 Pyomo 模型转换为求解器期望的任何形式(例如,LP 文件)的时间,( 3) 在求解器内部花费的时间,以及 (4) 将求解器解决方案加载回 Pyomo 模型所花费的时间。

随着模型变得非常大,(1) 和 (2) 可能开始变得重要。对于相对简单的模型 类(例如 LP,有时是 MIP),在 Cplex 和 Gurobi 等工业求解器开始挣扎之前,您可能会开始遇到 Pyomo 的瓶颈,但您可以采取一些措施来降低 Pyomo当这成为一个问题的时候。对于更困难的模型 类(例如 MINLP),您可能会在 Pyomo (Python) 处理时间成为问题之前达到当前求解器功能的限制。