Я разрабатываю модель оптимизации с использованием pyomo с python (python 3 - я управляю пакетами с помощью anaconda в Windows). Мне нужно использовать нелинейный решатель ipopt. Кажется, что линейный решатель по умолчанию, используемый ipopt (mumps или ma27), относительно медленный и не многопоточен, я хочу использовать решатель pardiso для линейной части ipopt. Кажется, есть две его версии: MKL-версия pardiso и « независимая »версия - меня устраивает любой из них. - но мне не удается использовать пардизо.
У меня работает ipopt, я выбираю его для своей проблемы с pyomo:
solver = SolverFactory('ipopt')
И я выбираю pardiso в качестве линейного решателя, используя параметры ipopt.
solver.options['linear_solver']='pardiso'
Я получаю следующую ошибку:
Exception message: Selected linear solver Pardiso not available.
Tried to obtain Pardiso from shared library "libpardiso.dll", but the following error occured:
Windows error while loading dynamic library libpardiso.dll, error = 126.
Что, я думаю, означает, что решатель не установлен. Если я выберу «свинка» или ничего не укажу, все работает.
Однако в нем говорится, что решатель pardiso входит в библиотеку mkl (которая у меня есть), теперь в идеале я хотел бы знать, какие пакеты мне нужно установить из anaconda, чтобы решатель pardiso работал?
В этом сообщении говорится, что для работы необходимо добавить определенные папки библиотек Anaconda в системный путь, который я сделал
sys.path.append('C:\Programs\pkgs\mkl-2019.3-203\Library\bin')
sys.path.append('C:\Programs\pkgs\intel-openmp-2019.3-203\Library\bin')
Ничего не меняется
В качестве альтернативы я загрузил модель pardiso с https://www.pardiso-project.org/, которая дала мне 3 файла libpardiso600-WIN-X86-64.dll .exp и .lib, с которыми я не знаю, что делать или где разместить (без объяснения на веб-сайте решателя)
Спасибо за вашу помощь,