我有一个优化程序(目前是一个 jupyter 笔记本,将优化本身外包给 gurobi 云),我需要运行它的多次迭代。到目前为止,我已经尝试在一夜之间同时运行同一脚本的多个版本。然而,这对我的计算机造成了负担(即,它崩溃了一两次,并且早上响应速度非常慢),并且似乎导致我的程序在启动后大约 7 小时、完成之前失败。(该程序不会抛出错误消息;它似乎只是停止产生优化输出。当我尝试减少同时运行时,这种情况似乎会减少。)我怀疑我的部分问题是我的内存变满了。我想知道如果我并行和顺序运行我的脚本是否会取得更大的成功,这样内存就会被清除。不过,我显然是计算机性能方面的新手,因此建议很有帮助。我目前的情况是这样的:晚上 8 点,我开始并行运行脚本 A 和 B,每个脚本都包含 100 个单独的优化(作为 for 循环的一部分)。这似乎将所有 100 个优化的输出保留在内存中直到早上,这似乎大大减慢了我的计算机速度并消耗了大量存储空间(在我重新启动计算机后,这些存储空间再次空闲)。相反,我想知道将 A 拆分为 A1(前 50 项优化)和 A2(后 50 项优化),将 B 拆分为 B1 和 B2,然后运行 A1 和 B1 是否会提高计算机的性能与 A2 和 B2 并行,设置为在 A1 和 B1 完成后运行。有人可以建议这是否会提高我的表现吗?
1 回答
当年话下
TA贡献1890条经验 获得超9个赞
我不确定具体的文件分割,但这里有一些其他值得尝试的事情,
减少线程数
设置求解方法=1,这是 gurobi 建议在内存紧张的情况下执行的操作
将nodefilestart参数设置为较小的值
然而,这些都会在模型运行时减少内存。另一件事是减少存储的模型数量。从技术上讲,这应该自动发生,但我想我过去已经看到它失败了。del model
在这种情况下,您可以尝试在循环结束之前明确删除模型,然后再开始下一个循环。
添加回答
举报
0/150
提交
取消