"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) 处理时间成为问题之前达到当前求解器功能的限制。
我正在使用 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) 处理时间成为问题之前达到当前求解器功能的限制。