我尝试在macosx(10.11,Intel)上与Pyomo一起使用路径求解器(http://pages.cs.wisc.edu/~ferris/path.html)。我在python3.5中使用了最新的Anaconda安装。在
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网站获得):
macosx版本似乎是为PowerPC设计的,它显示的内容大致是“错误的CPU版本”。在
或者我尝试了Linux版本,但是pyomo命令返回Solver (path) returned non-zero return code (-1)
。它自己调用pathampl会显示/usr/local/bin/pathampl: cannot execute binary file
。在
有人知道如何让它工作吗?谢谢!在
如果系统上可执行文件的名称为“pathampl”,则需要将其用作Pyomo的解算器名称。原因在于Pyomo如何与它不认识的解算器交互。在
Pyomo为某些解算器提供了自定义接口,但当您要求它使用它无法识别的解算器(Path的情况下),它会返回到一个更通用的接口,该接口适用于任何设计为使用AMPL的解算器可执行文件。当发生这种情况时,它假定您提供的解算器名称是系统上某些可执行文件的名称。在
相关问题 更多 >
编程相关推荐