此行为表明我有内存问题吗?

时间:2019-08-21 14:17:17

标签: linear-programming pyomo gurobi

我有一个带有约400万个变量和约400万个约束的LP问题。我用古罗比解决了。我的电脑有4核和8 GB内存。

根据日志文件,大约需要100秒才能找到最佳解决方案。然后释放CPU,但仍在使用几乎全部内存。它挂在那里,数小时不执行任何操作,直到解决后继续运行脚本(例如print命令)。

结果= opt.solve(model,tee = True)

print(“模型已解决”)

我使用了禁用交叉的障碍方法,这种方法效果最好。我还尝试了使用不同数量的线程,事实证明,就挂起时间(但仍为小时)而言,使用4是最好的。

这种悬挂会大大增加总运行时间,这是不希望的。

我计划升级内存,但想从社区中获得答案,这确实是内存问题。这是内存问题吗?

1 个答案:

答案 0 :(得分:1)

可能该问题不适用于内存,并且使用了虚拟内存(即磁盘)。当它真的很糟糕时,这称为抖动。它可以使您的机器屈服。根据问题中的非零数,预解决统计信息和所使用的线程数,您至少需要16 GB(可能更像32 GB)。

也:尝试减少Gurobi正在使用的线程数。最好使用1个线程(在基准测试哪种LP算法最有效之后:原始或对偶单纯形法或屏障方法)。默认情况下,使用并发LP方法:并行使用不同的LP解算器,显着增加了内存占用。