【问题标题】:Setting MIP and NLP solvers path using Pyomo MindtPySolver使用 Pyomo MindtPySolver 设置 MIP 和 NLP 求解器路径
【发布时间】:2020-02-21 16:50:35
【问题描述】:

我正在使用 Pyomo 5.6.8 并尝试使用 MindtPySolver 解决非线性优化问题。

我在本地机器上没有问题,只需使用以下参数调用 solve 方法:

SolverFactory('mindtpy').solve(model, mip_solver='cbc', nlp_solver='ipopt') 

但是,当我在 Azure 上使用云时,Pyomo 无法获得 CBC 和 IPOPT 求解器的路径。当需要解决线性问题时,我可以使用以下命令绕过该问题,方法是在使用 LP 求解器创建 SolverFactory 实例时添加 executable 参数:

SolverFactory("cbc", executable="/path/to/my/virtual/env/bin/cbc")

在我的非线性编程案例中,MindtpySolver 不接受附加参数。我查看了文档和源代码,找不到指定求解器路径的选项,不幸的是,在我的 Azure 环境中默认情况下无法识别。

我尝试使用源代码中的“solver_args”选项传递选项,如下所示:

SolverFactory('mindtpy').solve(
    model,
    nlp_solver_args={
        "executable": "/path/to/my/virtual/env/bin/ipopt"
    },
    mip_solver_args={
        "executable": "/path/to/my/virtual/env/bin/cbc"
    },
    mip_solver='cbc', nlp_solver='ipopt',
)

但我仍然收到“警告:无法找到求解器所需的 'ipopt' 可执行文件”之类的错误。我坚持认为所有求解器(这里是 cbc 和 ipopt)都可以在我的虚拟环境中找到。 有没有办法使用MindtPySolver 指定求解器路径?

【问题讨论】:

    标签: optimization pyomo nonlinear-optimization


    【解决方案1】:

    我也可能有同样的问题,我的优化问题是混合整数非线性程序,它必须使用“SolverFactory('mindtpy').solve(model, mip_solver='glpk', nlp_solver='ipopt')”求解器位于带有 Apache2 WSGI 服务的 Django 框架中,其中 WSGIDaemonProcess : Conda Env.

    当通过 Web 浏览器调用 api 时。它会出现错误,例如找不到“ipopt”求解器。和“glpk”求解器。而 SolverFactory 只允许我们设置一个 Executable。

    顺便说一句,已经找到解决方法了。

    通过 Conda install 安装 ipopt 和插件求解器之后。

    深入python包并编辑原始文件。

    我的路径如下:


    1. /home/user/miniconda3/envs/py385/lib/python3.8/site-packages/pyomo/solvers/plugins/solvers/GLPK.py

    2. /home/user/miniconda3/envs/py385/lib/python3.8/site-packages/pyomo/solvers/plugins/solvers/IPOPT.py


    找到下面的函数并更改它。

    def _default_executable(self): 可执行文件 = 可执行文件('/home/user/miniconda3/envs/py385/bin/glpsol')

    def _default_executable(self): executable = Executable("/home/user/miniconda3/envs/py385/bin/ipopt")

    您可以通过终端命令类型找到插件求解器的位置 “哪个ipopt”,“哪个glpsol”

    【讨论】:

      猜你喜欢
      • 2020-08-27
      • 2016-05-26
      • 2018-03-17
      • 1970-01-01
      • 1970-01-01
      • 2018-09-07
      • 2021-09-23
      • 2019-06-13
      • 2017-03-01
      相关资源
      最近更新 更多