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

2024-09-28 20:53:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

非常感谢你的帮助


Tags: 实例代码模型objtime计算机时间情况
1条回答
网友
1楼 · 发布于 2024-09-28 20:53:03

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中对问题的答复

相关问题 更多 >