Pyomo не может использовать Gurobi Solver - PullRequest
0 голосов
/ 19 января 2019

Я хотел бы начать с того, что я очень плохо знаком с python & pyomo.

Я создал программу, которая отлично работает при использовании решателя "glpk", и я могу получить ожидаемые результаты, поэтому яУверен, что программа работает.Ниже приведен код.

import pandas as pd
from pyomo.environ import *
import numpy as np


rawfile = "C:/Users/User/Downloads/chickenwings2.csv"

df_raw = pd.read_csv(rawfile, index_col='Name')
print (df_raw)

Set = df_raw.index.tolist()
count = dict(zip(df_raw.index,df_raw['count']))
price = dict(zip(df_raw.index,df_raw['price']))

#print (count,price)

model = ConcreteModel()
model.x = Var(Set, within=NonNegativeIntegers)

model.obj = Objective(expr= sum(price[i]*model.x[i] for i in Set), sense=minimize)

model.count_con = Constraint(expr=sum(count[i]*model.x[i] for i in Set) == 200)

opt = SolverFactory("glpk") 
opt_success = opt.solve(model)

total_count = sum(count[i]*value(model.x[i]) for i in Set)
print('Total Count:', total_count)
print('Total Price:', value(model.obj))

print('%5s %5s %12s' % ('Set','Count', 'Order Count'))
print('=========================')

for i in Set:
    if value(model.x[i]>0):
        print ('%5s %5s %5s' % (i,count[i], value(model.x[i])))

print('=========================')

Однако, когда я попытался использовать gurobi solver, изменив код, как показано ниже, я не смог получить никаких результатов.

opt = SolverFactory("gurobi", solver_io="python") 

или

opt = SolverFactory("gurobi")

Ошибка:

Traceback (most recent call last):
  File "D:/Python learning/ProjektX/chicken wings.py", line 26, in <module>
    opt_success = opt.solve(model)
  File "D:\EngineeringSoftware\Anaconda\lib\site-packages\pyomo\solvers\plugins\solvers\direct_solver.py", line 68, in solve
    self.available(exception_flag=True)
  File "D:\EngineeringSoftware\Anaconda\lib\site-packages\pyomo\solvers\plugins\solvers\direct_or_persistent_solver.py", line 301, in available
    "plugin").format(type(self)))
pyutilib.common._exceptions.ApplicationError: No Python bindings available for <class 'pyomo.solvers.plugins.solvers.gurobi_direct.GurobiDirect'> solver plugin

или

WARNING: Could not locate the 'gurobi' executable, which is required for
    solver gurobi

Для установки gurobi я следовал процедуре установки gurobi с использованием anaconda

conda config --add channels http://conda.anaconda.org/gurobi
conda install gurobi

Я создал переменную среды с именем GRB_LICENSE_FILE и направил значение переменной в местоположение файла .lic.

Я исчерпал все параметры, которые могу найти в Интернете, поэтому я запрашиваюпомощь сообщества pyomo здесь, чтобы просветить меня в этом вопросе.

Ответы [ 3 ]

0 голосов
/ 22 января 2019

Что касается того, что вы пытаетесь использовать интерфейс Python для Gurobi с этой строкой:

opt = SolverFactory("gurobi", solver_io="python")

Вы можете получить

Traceback (most recent call last):
  File "D:/Python learning/ProjektX/chicken wings.py", line 26, in <module>
    opt_success = opt.solve(model)
  File "D:\EngineeringSoftware\Anaconda\lib\site-packages\pyomo\solvers\plugins\solvers\direct_solver.py", line 68, in solve
    self.available(exception_flag=True)
  File "D:\EngineeringSoftware\Anaconda\lib\site-packages\pyomo\solvers\plugins\solvers\direct_or_persistent_solver.py", line 301, in available
    "plugin").format(type(self)))
pyutilib.common._exceptions.ApplicationError: No Python bindings available for <class 'pyomo.solvers.plugins.solvers.gurobi_direct.GurobiDirect'> solver plugin

ошибка.Одной из причин, которая может привести к такого рода ошибкам, является необходимость установки привязки Python вашего Gurobi.Эта привязка поставляется с вашей установкой Gurobi, но не устанавливается по умолчанию.При условии, что у вас уже есть действительная лицензия Gurobi, я предлагаю вам посетить

http://www.gurobi.com/documentation/8.1/quickstart_mac/the_gurobi_python_interfac.html

Чтобы подвести итоги страницы поддержки,

  1. Откройте командную строку справа администратора;
  2. Перейдите в папку, в которой находится ваша установка Gurobi;
  3. Введите python setup.py install, чтобы запустить установку привязки Python.

Вы можете проверить, установлен ли он, введя строку import gurobipy в консоли Python.

0 голосов
/ 22 января 2019

Спасибо Bethany.N и В.Брунелле за отзывы.Оцените его.

Я попытался добавить папку в windows и путь к anaconda (код ошибки все еще присутствует) и попытался установить gurobipy (в файле Gurobi нет файла setup.py).

Однако я использовал Pycharm для запуска кода, но на основании руководства пользователя: "http://www.gurobi.com/documentation/8.1/quickstart_mac/installing_the_anaconda_py.html#section:Anaconda"

явно упоминается использование Spyder IDE или Jupyter, поэтому я импортировалкод в Spyder Я могу заставить код работать. Он даже работает, используя ["gurobi"] или ["gurobi", solver_io = "python"] для решателя.

Похоже, есть некоторые проблемыс пичармом + гуроби.

0 голосов
/ 21 января 2019

Похоже, вам нужно добавить папку, содержащую исполняемый файл gurobi, в пути Windows и Anaconda.

В этом посте stackoverflow приведено пошаговое руководство о том, как это сделать: Как добавить папку в переменную среды `Path` в Windows 10 (со снимками экрана)

См. Этот пост, чтобы добавить папку в путь к conda: Как добавить папку в путь поиска для заданной среды Anaconda?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...