как использовать оптимизатор ipopt с pyomo на linux

Я выполнил инструкции веб-сайта ipopt Coinor и мне удалось установить оптимизатор ipopt. Это создало некоторые статические объектные файлы в каталоге сборки, но НЕ создало никакой папки bin.

Теперь, когда я пытаюсь заставить pyomo использовать ipopt, единственный способ, который я видел, - это указать расположение исполняемого файла, например, opt = SolverFactory('ipopt', executable='executable path here') , но я не могу понять, что это может быть.

Я также заметил, что на сайте coin- or есть несколько предварительно скомпилированных двоичных файлов. Они содержат исполняемый файл ipopt внутри папки bin, но при связывании с ним система будет жаловаться на отсутствующий статический объект с именем libsvml.so.

В руководстве по установке ipopt нет упоминания о libsvm, так что это меня очень смущает.

Возможно, я что-то пропустил на этапе сборки / установки? Любая помощь будет принята с благодарностью


person omu_negru    schedule 20.09.2017    source источник


Ответы (2)


Этот вопрос очень похож на предыдущий. См. Ответ здесь .

По моему опыту, если вы следовали инструкциям по установке ipopt из исходного кода и не получили каталог bin с исполняемым файлом ipopt, то вы либо пропустили шаг, либо конфигурация / установка не удалась из-за отсутствующей зависимости или стороннего кода. . Вам следует переделать установку с нуля.

Если вы предпочитаете использовать двоичный файл, убедитесь, что вы загружаете правильный для вашей системы Linux-32bit или Linux-64bit, и убедитесь, что папка bin, содержащая исполняемый файл, находится в вашем пути поиска. Еще одна вещь, которую нужно проверить с помощью двоичного файла, - это то, что исполняемый файл имеет разрешения на выполнение. Вы можете использовать команду Linux chmod +x для изменения разрешений. Вы должны иметь возможность ввести ipopt в командной строке и получить результат, указанный в другом ответе.

person Bethany Nicholson    schedule 20.09.2017
comment
Есть ли другой способ использования этого решателя, кроме указания исполняемого файла? - person omu_negru; 20.09.2017
comment
Не для Ипопта. Кроме того, один шаг, который очень легко пропустить в процессе сборки Ipopt, - это запустить make install после успешного завершения make. На этапе make install создается каталог bin. - person Gabe Hackebeil; 20.09.2017

ipopt действительно является библиотекой, что может сбивать с толку, поскольку иногда она распространяется внутри исполняемого двоичного файла, также называемого ipopt.

Пакет в репозиториях debian содержит только библиотеку, но не исполняемый файл.

Эта библиотека может быть связана из кода приложения. Для использования в качестве «автономного» решателя ему необходим интерфейс. Обычно это интерфейс ASL (AMPL Solver Library). Интерфейс ASL позволяет ipopt читать входные данные из .nl файлов и записывать выходные данные в .sol файлы.

Это упоминается в ipopt doc в разделе «компиляция из источников» и инструктирует, как установить код ASL из AMPL. На GitHub есть альтернативная библиотека ASL: AMPL / MP. Мне непонятно, тот же ли это код или нет. По крайней мере, лицензия тут понятнее ИМХО.

Некоторые распространяют ipopt в виде двоичного файла с функцией ASL, либо статически, либо динамически.

COIN-OR, например, распределяет источники ipopt, но прекратил распространение двоичных файлов. Последний двоичный файл linux предназначен для ipopt 3.7.1 (https://www.coin-or.org/download/binary/Ipopt/).

AMPL распространяет двоичный файл на своем веб-сайте со статической связью ASL. Здесь нет упоминания о лицензии или версии, а также нет истории версий, поэтому я бы не стал это использовать.

В канале conda-forge есть пакет conda ipopt с бункером ipopt. Это зависит от другого пакета conda, который использует реализацию AMPL / MP ASL, упомянутую выше. На данный момент это мой лучший выбор.

Изменить: раздел загрузки документа ipopt теперь рекламирует новый источник двоичных файлов: Репозиторий JuliaOpt GH.

Изменить: COIN-OR теперь предоставляет сценарий сборки и установки (coinbrew), который значительно упрощает работу. для компиляции Ipopt и зависимостей для создания исполняемого двоичного файла с поддержкой AMPL.

person Jérôme    schedule 05.10.2018