Optimization 使用Pyomo MindtPySolver设置MIP和NLP解算器路径

Optimization 使用Pyomo MindtPySolver设置MIP和NLP解算器路径,optimization,pyomo,nonlinear-optimization,Optimization,Pyomo,Nonlinear Optimization,我正在使用pyomo5.6.8,并尝试使用MindtPySolver解决一个非线性优化问题 我在本地计算机上没有问题,只需使用以下参数调用solve方法: SolverFactory('mindtpy').solve(model, mip_solver='cbc', nlp_solver='ipopt') 然而,当我在Azure上使用云计算时,Pyomo无法找到CBC和IPOPT解算器的路径。当需要解决线性问题时,我可以使用以下命令绕过该问题,方法是在使用LP解算器创建SolverFacto

我正在使用pyomo5.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
指定解算器路径?

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

当通过Web浏览器调用api时。它将出现错误,如找不到“ipopt”解算器。还有“glpk”解算器。SolverFactory只允许我们设置一个可执行文件

顺便说一句,已经找到了如何修复它

在通过Conda install安装ipopt和插件解算器之后

只是深入python包并编辑原始文件

我的路径如下:


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

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


  • 找到下面的函数并进行更改

    def_默认_可执行文件(自身): 可执行文件=可执行文件('/home/user/miniconda3/envs/py385/bin/glpsol')

    def_默认_可执行文件(自身): 可执行文件=可执行文件(“/home/user/miniconda3/envs/py385/bin/ipopt”)

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