在 Intel Mac OS X 上使用带有 Pyomo 的 PATH AMPL 求解器

Posted

技术标签:

【中文标题】在 Intel Mac OS X 上使用带有 Pyomo 的 PATH AMPL 求解器【英文标题】:Using PATH AMPL solver with Pyomo on Intel Mac OS X 【发布时间】:2016-04-23 10:56:30 【问题描述】:

我正在尝试在 Mac OS X(10.11,英特尔)上将 PATH 求解器 (http://pages.cs.wisc.edu/~ferris/path.html) 与 Pyomo 一起使用。我正在使用最新的 Anaconda 安装和 Python 3.5。

Pyomo 可以使用 AMPL 库。来自http://prod.sandia.gov/techlib/access-control.cgi/2015/155584.pdf 我正在尝试运行以下示例:

`# file munson1.py
from pyomo.environ import *
from pyomo.mpec import *
model = ConcreteModel()
model.x1 = Var()
model.x2 = Var()
model.x3 = Var()
model.f1 = Complementarity(expr=
complements(model.x1 >= 0,
model.x1 + 2*model.x2 + 3*model.x3 >= 1))
model.f2 = Complementarity(expr=
complements(model.x2 >= 0,
model.x2 - model.x3 >= -1))
model.f3 = Complementarity(expr=
complements(model.x3 >= 0,
model.x1 + model.x2 >= -1))`

应该使用pyomo solve --solver=path munson1.py从bash运行

为了完成这项工作,我应该使用可执行的 pathampl(AMPL 的 PATH 求解器)并将其放入我的 $PATH 中。我用它的两个版本做到了这一点(可从 PATH 网站获得):

mac os x 版本似乎是为 PowerPC 制作的,它显示“错误的 CPU 版本”。

另外,我尝试了 Linux 版本,但是 pyomo 命令返回 Solver (path) returned non-zero return code (-1)。单独调用 pathampl 会显示 /usr/local/bin/pathampl: cannot execute binary file

有人知道如何使它工作吗?谢谢!

【问题讨论】:

我没有尝试在 MacOS 上使用 pathampl。我建议直接运行命令。运行:pyomo convert --format=nl --output=munson1.nl munson1.py生成NL文件,然后直接应用求解器:pathampl munson1.nl 【参考方案1】:

如果您系统上的可执行文件的名称是“pathampl”,您需要使用它作为 Pyomo 的求解器名称。其原因与 Pyomo 如何与它无法识别的求解器交互有关。

Pyomo 为某些求解器提供了自定义接口,但是当您要求它使用它无法识别的求解器(Path 的情况)时,它会退回到一个更通用的接口,该接口适用于任何设计用于使用的求解器可执行文件AMPL。发生这种情况时,它假定您提供的求解器名称是您系统上某个可执行文件的名称。

【讨论】:

以上是关于在 Intel Mac OS X 上使用带有 Pyomo 的 PATH AMPL 求解器的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac OS X 10.6 上使用带有 Python 2.7 的 Google App Engine SDK

总线错误:Mac OS X 上带有 GCC 的内联 x86 程序集

无法使用 pacifist 在带有 Java 1.7.0.45 的 Mac OS X 10.6.8 上运行线程化的 java jar 文件

转在VMware中安装OS X Yosemite

安装了 Xcode 命令行工具的 Mac OS X 中的 clang-format 和 clang-format.py 在哪里?

在 Mac OS X Lion 上安装 pymssql 时出错