【问题标题】:How to use (/install) the pardiso linear solver in ipopt using the pyomo modelling framework?如何使用 pyomo 建模框架在 ipopt 中使用(/安装)pardiso 线性求解器?
【发布时间】:2019-10-13 17:48:52
【问题描述】:

我正在开发一个使用 pyomo 和 python 的优化模型(python 3 - 我在 windows 上使用 anaconda 管理包)。我需要使用非线性求解器 ipopt。似乎 ipopt(mumps 或 ma27)使用的默认线性求解器相对较慢且不可线程,我希望将 pardiso 求解器用于 ipopt 的线性部分。它似乎有两个版本: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,我不知道该怎么做或放在哪里(没有解释求解器网站)

感谢您的帮助,

【问题讨论】:

    标签: python anaconda pyomo ipopt pardiso


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-02-24
      • 1970-01-01
      • 2020-08-02
      • 2019-09-25
      • 2023-01-18
      • 1970-01-01
      • 2018-03-01
      • 2019-09-09
      • 2019-07-25
      相关资源
      最近更新 更多