当前位置: 首页 > 知识库问答 >
问题:

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

齐健柏
2023-03-14

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

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

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

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

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

在我的非线性规划案例中,MindtpySolver不接受额外的参数。我看了医生

我尝试使用源代码中的“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指定求解器路径?

共有1个答案

亢嘉茂
2023-03-14

我可能也有同样的问题,我的优化问题是混合整数非线性规划,它必须使用“SolverFactory('mindtpy”)。求解(model,mip\u solver='glpk',nlp\u solver='ipopt'),求解器位于Django框架中,带有Apache2 WSGI服务,WSGIDaemonProcess:Conda Env。

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

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

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

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

我的路径如下:

>

  • /home/user/mini cond a 3/en vs/py 385/lib/python 3.8/site-package/py omo/solvers/plugins/solvers/GL PK. py

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

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

    def \u default\u可执行文件(self):可执行文件=可执行文件(“/home/user/miniconda3/envs/py385/bin/glpsol”)

    def_default_executable:可执行文件=可执行文件("/home/user/minicon da3/envs/py385/bin/ipopt")

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

  •  类似资料:
    • 任何带有工作示例的答案都会很棒。

    • 我已经下载并提取了Eclipse。我在以下目录中有Eclipse:C:\Applications\Eclipse。当我尝试运行可执行文件时,我收到以下消息: 我目前有以下文件夹: 我是否需要为我的Windows 7操作系统设置一些环境变量来运行Eclipse?如果是,我可以得到一些帮助吗?如果不是,我可以得到一些帮助来运行Eclipse。 编辑 我已更改快捷方式以包含虚拟机的路径,现在收到此错误:

    • 英文原文: http://emberjs.com/guides/routing/setting-up-a-controller/ URL的改变同时也可能改变显示的模板。而模板只有当其搭载了需要呈现的信息才有用。 在Ember.js中,模板从控制器中获取需要呈现的信息。 内置的两个控制器Ember.ObjectController和Ember.ArrayController,使控制器可以非常方便的呈

    • 通过对网络的研究,我发现LZMA算法是最新的、优化的、高性能的数据压缩算法之一,尤其是在压缩比和解压缩时间方面。它在许多流行的软件中得到支持,如WinRAR、WinZip和7-Zip(默认情况下)。 我在http://www.7-zip.org/SDK.html中找到了LZMA SDK,但我还没有找到在windows中安装它或使用提供的源代码的方法(示例)。 例如:在中:有一些名为的测试应用程序但

    • 我有一个非线性最小化问题,显然是非凸的。我将Pyomo框架用于能源系统运行优化模型,其中,需要按连续小时评估一个配置好的优化模型(我在开始时创建优化问题,定义特定系统的变量、约束和目标函数,然后尝试解决为“模拟”时间框架(例如,给定年份中的每小时)创建的设置,仅更改能源需求参数。。。最小化运营成本)。我注意到,在一些随机的小时内,无法找到最佳值。在大多数失败的情况下,我得到了“达到的最大迭代次数”

    • 然而,出现的问题是,当我将一个顶点设置为一个旅游站点并给它一个权重时,该顶点在第一次访问时似乎根本没有权重。然后,当第二次访问顶点时,权重显示出来。我不知道问题出在哪里,但我猜是因为我没有直接编辑原始变量。 打印输出行标记在下面的**之间。一个在calculateShortest()中,另一个在calculateMin()中。 显示问题的行打印输出(不包括main方法输出):