2016-04-23 11 views
2

Я пытаюсь использовать решатель PATH (http://pages.cs.wisc.edu/~ferris/path.html) вместе с Pyomo на Mac OS X (10.11, Intel). Я использую самую последнюю установку Anaconda с Python 3.5.Использование решения PATH AMPL с Pyomo на Intel Mac OS X

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

Чтобы сделать эту работу, я должен использовать исполняемый pathampl (PATH решатель для AMPL) и положить его в моей $ PATH. Я сделал это с двумя версиями (доступно на веб-сайте PATH):

Версия mac os x для PowerPC отображает что-то в строке «Неверная версия процессора».

В качестве альтернативы я попробовал версию Linux, однако команда pyomo возвращает Solver (path) returned non-zero return code (-1). Вызов pathampl сам по себе показывает /usr/local/bin/pathampl: cannot execute binary file.

Есть ли у кого-нибудь представление о том, как заставить его работать? Благодаря!

+0

Я не пробовал использовать pathampl на MacOS. Я рекомендую запустить команду напрямую. Run: 'pyomo преобразования --format = п --output = munson1.nl munson1.py' для создания NL файла, а затем применить решателя непосредственно: ' pathampl munson1.nl' –

ответ

2

Если имя исполняемого файла в вашей системе является «pathampl», вы должны использовать его как имя решателя для Pyomo. Обоснование этого связано с тем, как Pyomo взаимодействует с решателями, которых он не распознает.

У Pyomo есть пользовательские интерфейсы для определенных решателей, но когда вы просите его использовать решатель, который он не распознает (случай для Path), он возвращается к более универсальному интерфейсу, который работает для любого исполняемого файла solver, предназначенного для работы с AMPL. Когда это произойдет, предполагается, что имя решателя, которое вы указали, является именем некоторого исполняемого файла в вашей системе.