AttributeError: объект 'gurobipy.LinExpr' не имеет атрибута '__colno__'

Я пытаюсь смоделировать проблему MILP, используя Python с Gurobi Solver. У меня последняя версия решателя Gurobi. Моя проблема началась после того, как я добавил ограничение с новой функцией gurobi m.addGenConstrAbs, которая добавляет значение функции abs в качестве ограничения. Вот мой код, который создает обратную связь гуроби как:

AttributeError: объект 'gurobipy.LinExpr' не имеет атрибута '__colno__'.

Мой код, который приводит к этой обратной связи:

for t in range(0,Period): 
 m.addGenConstrAbs(PEN[t], EG [t]+STG[t]-XXX, "PEN Constraint") 

где EG [t], STD [t] и XXX - переменные решения.

Я не понимаю, почему Gurobi или Python возвращаются с этой ошибкой. Как вы думаете, в чем проблема? Спасибо.


person assyncronimous    schedule 21.03.2017    source источник


Ответы (1)


Аргументы для Model.addGenConstrAbs () должны быть переменными (Var) , а не линейные выражения (LinExpr). Попробуй это:

for t in range(0,Period):
    z = m.addVar(lb=-GRB.INFINITY)
    m.addConstr(z == EG[t]+STG[t]-XXX)
    m.addGenConstrAbs(PEN[t], z, "PEN Constraint") 
person Greg Glockner    schedule 21.03.2017
comment
Спасибо @Greg за ваш ответ, он решил мою проблему. Кажется, мне нужно поработать над возвращением Гуроби, чтобы лучше понять это. - person assyncronimous; 22.03.2017