【问题标题】:How to overcome Memory Overflow 1001 error in CPLEX OPL如何克服 CPLEX OPL 中的内存溢出 1001 错误
【发布时间】:2020-04-01 22:28:08
【问题描述】:

我在 CPLEX OPL 中运行一个相当大的问题并得到错误:

CPLEX 错误 1001:内存不足

此错误会在 17 分钟后出现,此时底部的引擎日志选项卡还没有任何内容。有一些调试脚本日志,它们会在这 17 分钟内出现。

问题相当大,对于某些数据,它甚至运行了 70 小时。

我在“混合整数规划,公差”下的“设置”中设置了 0.017 的间隙公差。

虽然这个问题没有在日志中显示任何内容,但要对具有较少约束的类似数据给出一个想法,它可能有超过 1640 个二进制变量和 112335 个其他变量,以及超过 500 万个非零系数。在这次运行中,我引入了更多的约束和变量(没有添加二进制变量)。之前的问题在另一台更高规格的计算机上运行了 5 小时。

我的电脑具有以下规格:2.9 Ghz,32 GB RAM。我已重新启动计算机,以便为 OPL 提供尽可能多的专用内存。

关于如何克服这个问题的任何建议?

【问题讨论】:

    标签: cplex opl


    【解决方案1】:

    如果引擎内存不足,您可以执行以下操作:

    1. 要求 CPLEX 将搜索树节点换出到磁盘,请参阅用户手册中CPLEX > User's Manual for CPLEX > Discrete optimization > Solving mixed integer programming problems (MIP) > Troubleshooting MIP performance problems > Running out of memory 中的“使用节点文件进行存储”。
    2. 减少线程数,在极端情况下减少到 1。

    但是,如果您在引擎日志中看不到任何内容,那么引擎甚至可能没有启动,因为 OPL 在创建模型时内存不足。您的模型尺寸似乎没有那么大。您可以尝试从命令行运行。还要确保不要在 .mod 中创建大量中间数据。

    【讨论】:

    • 谢谢 Daniel,抱歉回复晚了。我在 .ops 中添加了一个参数来将节点保存到磁盘。这将错误时间从 17 分钟更改为 24 分钟。但是出现了同样的错误。我现在在一台规格更好的计算机上进行了尝试,它在那里运行良好 - 只是提出了一些其他不可行的错误,例如 Row 'c57585' infeasible,所有条目都在隐含的范围内。我现在正在调查。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 2020-04-13
    • 2023-03-29
    • 2018-10-23
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 2016-07-30
    • 2019-07-19
    相关资源
    最近更新 更多