如何使用pyomo建模框架在ipopt中使用(/安装)pardiso线性求解器?

时间:2019-05-28 08:37:27

标签: python anaconda pyomo ipopt pardiso

我正在使用pyomo和python开发优化模型(python 3-我在Windows上使用anaconda管理软件包)。我需要使用非线性求解器ipopt。看来ipopt使用的默认线性求解器(腮腺炎或ma27)相对较慢且不可线程化,我希望对ipopt的线性部分使用pardiso求解器。它似乎有两个版本:MKL-intel pardiso version"independent" version-我对它们中的任何一个都很好。 -但我无法使用pardiso。

我有ipopt工作,我通过以下方式选择了我的pyomo问题:

solver = SolverFactory('ipopt')

然后我使用ipopt选项选择'pardiso'作为线性求解器

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求解器正常工作?

This post规定,要正常工作,必须将特定的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')

什么都没有改变

或者,我从https://www.pardiso-project.org/下载了pardiso模型,该模型给了我3个文件libpardiso600-WIN-X86-64.dll .exp和.lib,我不知道该怎么做或在哪里放置(否求解器网站上的说明)

感谢您的帮助,

1 个答案:

答案 0 :(得分:0)

使用此版本的 Ipopt,它会查找文件 libpardiso.dll。因此,如果您有 libpardiso600-WIN-X86-64.dll,请将其重命名为 libpardiso.dll 并确保可以找到它。
在 Ipopt 3.14 中,将有一个选项“pardisolib”来指定 pardiso 库的名称(可能包括路径)。

要从 MKL 加载 Pardiso,可以尝试将 mkl_rt.dll 复制到 libpardiso.dll