Как преодолеть ошибку переполнения памяти 1001 в CPLEX OPL - PullRequest
0 голосов
/ 02 апреля 2020

Я запускаю довольно большую проблему в CPLEX OPL и получаю ошибку:

CPLEX Ошибка 1001: недостаточно памяти

Эта ошибка появляется через 17 минут, когда вкладка Журнал двигателя внизу пока ничего нет. Есть несколько журналов сценариев отладки, и они появляются в течение этих 17 минут.

Проблема довольно велика, и для некоторых данных она работает даже 70 часов.

Я установил допуск разрыва 0.017 в настройках в разделе: Смешанное целочисленное программирование, Допуски.

Хотя эта проблема ничего не отображает в журнале, чтобы дать представление о похожих данных с несколькими меньшими ограничениями, они могут иметь более 1640 двоичных переменных и 112335 других переменных и более 5 миллионов ненулевых коэффициентов. В этом цикле я ввел еще несколько ограничений и переменных (двоичная переменная не добавлена). Предыдущая проблема была завершена за 5 часов на другом компьютере с более высокой скоростью.

Мой компьютер имеет следующие характеристики: 2,9 ГГц, 32 ГБ ОЗУ. Я перезапустил компьютер, чтобы выделить как можно больше выделенной памяти для OPL.

Какие-либо предложения о том, как это можно преодолеть?

1 Ответ

1 голос
/ 02 апреля 2020

В случае, если ядру не хватает памяти, вы можете сделать несколько вещей:

  1. Попросить CPLEX выгрузить узлы дерева поиска на диск, см. «Использование файлов узлов для хранения» в CPLEX> Руководство пользователя для CPLEX> Дискретная оптимизация> Решение проблем смешанного целочисленного программирования (MIP)> Устранение проблем производительности MIP> Недостаточно памяти в руководстве пользователя.
  2. Уменьшите количество потоков в крайних случаях уменьшите его до 1.

Однако, если вы ничего не видите в журнале работы двигателя, возможно, двигатель даже не запускается, поскольку при создании модели OPL не хватает памяти. Размеры вашей модели не кажутся такими большими. Вы можете попробовать запустить из командной строки. Также убедитесь, что вы не создаете много промежуточных данных в вашем .mod.

...