Ошибка GEKKO при удаленном запуске = False на Windows 10 Pro - PullRequest
4 голосов
/ 05 марта 2020

Я обнаружил ошибку, которой у меня не было раньше при локальном запуске оптимизатора.

Проблема:

Я запускал свою задачу оптимизации в VS Code и хотел отменить выполнение, поэтому я использовал ctrl + C в окне терминала. После этого я не могу запустить свой код локально. Код работает с remote = True, но я хочу запустить его локально, и мне нужно запустить его на ОС Win10 Pro. Я использую Windows 10 Pro с python 3.7.4. Теперь я получаю ошибку:

----------------------------------------------------------------
 APMonitor, Version 0.9.2
 APMonitor Optimization Suite
 ----------------------------------------------------------------


Error: At line 1187 of file custom.f90
Traceback: not available, compile with -ftrace=frame or -ftrace=full
Operating system error: Not enough memory resources are available to process this command.

Memory allocation failed

Error: 'results.json' not found. Check above for additional error details

Как мне "скомпилировать с -ftrace = frame или -ftrace = full", как это предлагается?

Что я пробовал:

-Я переустановил все python пакеты для моей среды. -Я полностью удалил python и удалил все пип-пакеты. -Я установил Anaconda 3 с Python 3.7.6 и переустановил зависимости gekko +. -Я запустил свой код на машине с Ubuntu под управлением 18.04, Anaconda3 с Python 3.7.6, и это может выполняться локально с m.GEKKO (remote = False).

Ничего из этого не помогло для версии windows, и я чувствую, что код должен быть в порядке, так как он работал раньше и может работать на Linux без проблем.

Я хочу повторить, я не получаю эту ошибку с m.GEKKO (удаленный = True). Значит, я что-то испортил на своей машине? Мой код касается реализации научной статьи c, и поэтому я не решаюсь поделиться кодом здесь. Если для воспроизведения ошибки необходим код, я могу отправить его по защищенному каналу разработчикам gekko.

Буду признателен за любую помощь в решении этой проблемы.

С уважением, JL

1 Ответ

1 голос
/ 05 марта 2020

Даже если вы остановили сценарий Python с помощью Ctrl-C, ваш подпроцесс предыдущего задания все еще может работать в фоновом режиме и потреблять ресурсы при работе с remote=False. Если вам удалось запустить его ранее, я рекомендую вам проверить, работает ли apm в фоновом режиме с top на командном терминале. Вы можете найти PID из apm с помощью:

pidof apm

Вы можете либо убить (остановить) процесс с помощью идентификатора PID, либо уничтожить все процессы apm с помощью:

killall -9 apm

Это должно высвободить ресурсы (RAM, CPU), необходимые для запуска вашего следующего задания. Исполняемый файл apm динамически распределяет память во время выполнения в зависимости от того, сколько потребуется решателю и модели. Если у вас постоянно заканчивается память, я рекомендую решатель APOPT, который использует меньше ресурсов, чем IPOPT (решатель по умолчанию). Вы можете переключиться на APOPT с помощью m.options.SOLVER=1. Я не думаю, что вы сделали что-то для вашей установки. Если на диске есть проблема, вы можете очистить временную папку m.path, в которой находится проблема Gekko.

...