Как настроить HSL MA86 для использования с IPOPT в OpenMDAOLinux

Ответить
Anonymous
 Как настроить HSL MA86 для использования с IPOPT в OpenMDAO

Сообщение Anonymous »

В настоящее время я пытаюсь настроить линейный решатель HSL MA86 для использования с IPOPT в OpenMDAO. Я использую компьютер Linux Ubuntu. Я извлек HSL MA86 и IPOPT из файлов tar.gz и создал папки в необходимых местах. Я установил BLAS, LAPACK и METIS, которые являются зависимостями для HSL MA86. Я также настроил MA86 для связи с зависимостями и их путями.
Когда я пытаюсь запустить свой код с помощью OpenMDAO, я обнаруживаю следующую распечатку из IPOPT:

Код: Выделить всё

   Exit Status
Inform  Description
-12  Invalid Option
--------------------------------------------------------------------------------
Это происходит только в том случае, если у меня раскомментирована следующая строка:

Код: Выделить всё

p.driver.opt_settings['linear_solver'] = 'ma86'
Я не знаю, почему это происходит. Похоже, что IPOPT не подключен к HSL MA86.
Стоит отметить, что каждый раз, когда я пытаюсь запустить make install (после запуска make и make check ) для HSL MA86, я обнаружил следующий фрагмент распечатки ошибки (фактические пути к файлам были отредактированы в целях конфиденциальности):

Код: Выделить всё

/usr/bin/install: 'include/hsl_ma86s.h' and '/path/to/hsl_ma86-1.7.4/include/hsl_ma86s.h' are the same file
/usr/bin/install: 'include/hsl_ma86d.h' and '/path/to/hsl_ma86-1.7.4/include/hsl_ma86d.h' are the same file
/usr/bin/install: 'include/hsl_ma86c.h' and '/path/to/hsl_ma86-1.7.4/include/hsl_ma86c.h' are the same file
/usr/bin/install: 'include/hsl_ma86z.h' and '/path/to/hsl_ma86-1.7.4/include/hsl_ma86z.h' are the same file
/usr/bin/install: 'include/hsl_mc68i.h' and '/path/to/hsl_ma86-1.7.4/include/hsl_mc68i.h' are the same file
/usr/bin/install: 'include/hsl_mc69s.h' and '/path/to/hsl_ma86-1.7.4/include/hsl_mc69s.h' are the same file
/usr/bin/install: 'include/hsl_mc69d.h' and '/path/to/hsl_ma86-1.7.4/include/hsl_mc69d.h' are the same file
/usr/bin/install: 'include/hsl_mc69c.h' and '/path/to/hsl_ma86-1.7.4/include/hsl_mc69c.h' are the same file
/usr/bin/install: 'include/hsl_mc69z.h' and '/path/to/hsl_ma86-1.7.4/include/hsl_mc69z.h' are the same file
make[2]: *** [Makefile:418: install-includeHEADERS] Error 1
make[2]: Leaving directory '/path/to/hsl_ma86-1.7.4'
make[1]: *** [Makefile:749: install-am] Error 2
make[1]: Leaving directory '/path/to/hsl_ma86-1.7.4'
make: *** [Makefile:445: install-recursive] Error 1
Мне интересно, может ли это быть проблемой? Другим потенциальным источником ошибки может быть не полностью соединяющийся путь? По умолчанию моя переменная LD_LIBRARY_PATH не имеет значения path/to/hsl_ma86-1.7.4/lib. Я использую следующую структуру кода, чтобы изменить ее исходный путь на необходимый путь для моей программы OpenMDAO:

Код: Выделить всё

import os
import subprocess

def my_function():
# Path to HSL MA86 libraries -- needed to temporarily change for OpenMDAO code
ma86_path = "/path/to/hsl_ma86-1.7.4/lib"

# Obtains the original library path necessary for other code
original_libPath = os.environ.get('LD_LIBRARY_PATH', '')

try:
# Temporarily sets the library path to HSL MA86 so that IPOPT can find it
# os.environ['LD_LIBRARY_PATH'] = f"{ma86_path}:{original_libPath}"
os.environ['LD_LIBRARY_PATH'] = ma86_path
print('LD_LIBRARY_PATH: {}'.format(os.environ['LD_LIBRARY_PATH']))
print('Subprocess executed')
# Execute trajectory code using HSL MA86
subprocess.run(["python", "my_openmdao_code.py"])

finally:
# Resets initial library path for use in optimization
os.environ['LD_LIBRARY_PATH'] = original_libPath
print('Restoration Occured')
print('LD_LIBRARY_PATH: {}'.format(os.environ['LD_LIBRARY_PATH']))
if __name__ == '__main__':

my_function()
Извините, что это такой длинный пост, но я хотел предоставить как можно больше подробностей. Спасибо за помощь!

Подробнее здесь: https://stackoverflow.com/questions/786 ... n-openmdao
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»