首页 文章

在Intel Mac OS X上使用PATH AMPL解算器和Pyomo

提问于
浏览
2

我试图在Mac OS X(10.11,Intel)上与Pyomo一起使用PATH解算器(http://pages.cs.wisc.edu/~ferris/path.html) . 我正在使用最新的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 .

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

1 回答

  • 2

    如果系统上的可执行文件的名称是'pathampl',则需要将其用作Pyomo的解算器名称 . 这样做的原因与Pyomo如何与它无法识别的解算器接口有关 .

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

相关问题