我正在用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
}
]
在此上下文中 "时间" 的含义是什么? 我试图通过应用启发式来修复一些变量来降低求解时间。有趣的是,这不会降低命令行的运行时间,但会显着影响results.json文件中的时间值。
答案 0 :(得分:0)
它对应于解算器中实际花费的时间。从命令行的角度来看,总时间将包括(1)构建Pyomo模型的时间,(2)将Pyomo模型转换为求解器期望的任何形式的时间(例如,LP文件),( 3)在求解器内部花费的时间,以及(4)将求解器解决方案加载回Pyomo模型所花费的时间。
随着模型变得非常大,(1)和(2)可能开始变得重要。对于相对简单的模型类(例如,LP和有时MIP),在Cplex和Gurobi等工业解算器开始挣扎之前,你很可能会开始与Pyomo发生瓶颈,但是当你成为Pyomo时,你可以采取一些措施来降低Pyomo的时间。一个问题。对于更困难的模型类(例如,MINLP),在Pyomo(Python)处理时间成为问题之前,您可能会遇到当前解算器功能的限制。