Я использую язык Julia (версия 1.3.1), пакет JuMP (версия 0.20.1) и пакет Cbc (версия 0.6.6) для решения проблемы оптимизации в контейнере докеров с ubuntu: 16.04. Оптимизатор Cbc кажется зависшим, со 100% использованием процессора, без выхода и без каких-либо сообщений. Проблемы возникают редко с аналогичной проблемой и, кажется, не воспроизводятся: если я запускаю один и тот же код с теми же данными, он больше не зависает. Надеюсь, что обратная трассировка, полученная через GDB, может быть полезна.
При необходимости могу поделиться своей моделью. Он имеет 11520 переменных, 4652 ограничения, 10080 переменных, используемых в линейной целевой функции.
Это журнал оптимизатора Cbc:
Добро пожаловать в CBC MILP Solver Версия: 2.10.3 Дата сборки: 7 октября 2019 г.
командная строка - Cbc_C_Interface -threads 0 -seconds 360.0 -maxNodes 30000 -logLevel 1 -solve -quit (стратегия по умолчанию 1) секунд было изменено с 1e + 100 на 360 maxNodes было изменено с 2147483647 на 30000 Непрерывное значение цели 2.3607e + 08 - 0,11 секунды Cgl0002I 3197 фиксированных переменных Cgl0005I 7 SOS с 8323 членами Обрабатываемая модель Cgl0004I имеет 15 строк, 8323 столбца (8323 целых числа (8323 из которых двоичные)) и 26556 элементов Cbc0045I Фиксация только ненулевых переменных. Cbc0045I Предупреждение: значения mipstart нельзя использовать для построения решения.
Здесь кажется, что Cbc зависает и перестает отвечать при 100% использовании процессора.
Вот трассировка работающего процесса pid:
# 0 0x00007f163c3facc9 в ?? () из цели: /root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so # 1 0x00007f163c4125b3 в ?? () из цели: /root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so # 2 0x00007f163c467586 в ?? () из цели: /root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so # 3 0x00007f163c46aebc в ?? () из цели: /root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so # 4 0x00007f163c40594a в ?? () из цели: /root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so # 5 0x00007f163c29afbe в ?? () из цели: /root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so # 6 0x00007f163c2ad844 в ?? () из цели: /root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so # 7 0x00007f163b8ea31f в CbcHeuristicDive :: solution (double &, int &, int &, OsiRowCut **, Cbc&SubProblem , double *) () из цели: /root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbc.so.3 # 8 0x00007f163b8ebf42 в CbcHeuristicDive :: solution (double &, double *) () из цели : /root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbc.so.3 # 9 0x00007f163b938fd2 в CbcModel :: resolveWithCuts (OsiCuts &, int, CbcNode *) () из target: /root/.julia /packages/Cbc/vWzyC/deps/usr/lib/libCbc.so.3 # 10 0x00007f163b9472d7 в CbcModel :: branchAndBound (int) () из цели: /root/.julia/packages/Cbc/vWzyC/deps/usr/ lib / libCbc.so.3 # 11 0x00007f163c214c47 в CbcMain1 (int, char const, CbcModel &, int () (CbcModel, int), CbcSolverUsefulData &) () из цели: / root / .julia / packages / Cbc / vWzyC / deps / usr / lib / libCbcSolver.so # 12 0x00007f163c2252ae в CbcMain1 (int, char const **, CbcModel &) () из цели: /root/.julia/packages/Cbc/vWzyC/ deps / usr / lib / libCbcSolver.so # 13 0x00007f163c19bc50 в Cbc_solve () из цели: /root/.julia/packages/Cbc/vWzyC/deps/usr/lib/libCbcSolver.so # 14 0x00007f16698e7e7 () # 15 0x000000000000000c в ?? () # 16 0x00007fff70694480 в ?? () # 17 0x00007f16604ce110 в ?? () # 18 0x000000000000262e в ?? () # 19 0x0000000000000006 в ?? () # 20 0x00007fff70694480 в ?? () # 21 0x00007f165966ab40 в ?? () # 22 0x00007f164a7ce1d0 в ?? () # 23 0x00007f164a7ce220 в ?? () # 24 0x00007f164a7ce1d0 в ?? () # 25 0x00007f1688be7b00 в ?? () в /buildworker/worker/package_linux64/build/src/array.c:738 из цели: / opt / julia / bin /../ lib / libjulia.so.1 # 26 0x00007f163d909af0 в ?? () # 27 0x00007f164439d3c0 в ?? () # 28 0x00007f1689524200 в ?? () # 29 0x0000000000000000 в ?? ()
Используя команду next
в консоли gdb
, CbC перехватывает ошибку StackOverflowError ().
В целевой функции слишком много терминов?
Любая помощь действительно заметна.
Спасибо