为什么每次我求解模型时都会得到不同的运行时间?

问题描述

我有一个用python编码并由gurobi解决的简单BQP模型。但是,每次我运行它时,尽管解决方案和obj值都相同,但是在某些情况下,运行时间甚至可以变化25%。我也有一个简单的LP模型,导致了同样的问题。我检查了两种型号的时间。 Runtime和time.time()都在为每个特定实例运行代码的迭代中更改。当我检查gurobi日志时,我看到每次运行模型时日志都大不相同。我想知道是否需要修复某些东西以获得一致的运行时间。应该指出的是,我有同样的问题(无论是在计算机上还是在共享群集上运行)。

我在这里共享了指向日志文件的链接:log file

非常感谢您的协助。

解决方法

Gurobi在两次运行中的行为完全相同:

Run 1:
Cutting planes:
  Gomory: 4
  MIR: 13
  Flow cover: 279
  RLT: 168
  BQP: 165

Explored 291452 nodes (10662765 simplex iterations) in 722.77 seconds

Run 2:
Cutting planes:
  Gomory: 4
  MIR: 13
  Flow cover: 279
  RLT: 168
  BQP: 165

Explored 291452 nodes (10662765 simplex iterations) in 541.59 seconds

您看到不同的运行时间很可能是由于其他任务同时消耗了CPU和内存资源。为了获得可比的结果,您需要在求解时未做任何其他事情的机器上运行。例如,使用笔记本电脑进行此类实验不会给您可靠的结果。还有诸如热节流之类的事情可能会干扰精确的时间测量。

对此的一种可能的解决方案是多次运行同一实验,然后比较运行时间的最小值或平均值。无论如何,最好在专用的计算服务器上运行它。

另请参见Gurobi community forum中问题的答案。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...