Я хотел бы начать с того, что я очень плохо знаком с 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 здесь, чтобы просветить меня в этом вопросе.