我有一个包含大约400万个变量和大约400万个约束的LP问题。我使用gurobi来解决这个问题。我的电脑有4个内核和8 GB内存。
根据日志文件,找到最优解大约需要100秒。然后释放CPU,但内存仍几乎已满。它挂在那里,几个小时内什么都不做,直到解算后继续运行脚本(例如打印命令)。
结果=opt.solve(模型,tee=True)
打印(“模型已解决”)
我使用障碍方法与交叉禁用,这是最好的效果。我还尝试了使用不同数量的线程,结果发现使用4个线程在挂起时间方面是最好的(但仍然是几个小时)。
这种挂起显著地增加了总的运行时间,这是不希望的。
我计划升级内存,但希望从社区得到答案,这确实是一个内存问题。这是一个记忆问题吗?
发布于 2019-08-21 23:55:38
问题可能不在内存中,而是使用了虚拟内存(即磁盘)。当它真的很糟糕的时候,这被称为抽打。它可以让你的机器瘫痪。根据问题中非零值的数量、预解算统计信息和您正在使用的线程数量,您至少需要16 GB (可能更多,类似于32 GB)。
另外:尽量减少Gurobi使用的线程数。使用单线程可能更好(在基准测试之后,哪种LP算法效果最好:原始、对偶单纯形或屏障方法)。默认情况下,使用并发LP方法:并行使用不同的LP解算器,这会显着增加内存占用。
https://stackoverflow.com/questions/57593749
复制相似问题