TypeError: объект 'int' не является итеративной оптимизацией - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь решить проблему оптимизации, но у меня проблема с моими переменными ... поэтому ошибка составляет

Tou.addConstr (gp.quicksum (periodos [i] - Curvapu [i] для я в диам) == 0) TypeError: объект 'int' не повторяется

Код ниже

Tou = gp.Model('Time of Use')
# Costumer interchangeable parammeter
alpha = 0.80
# Quantity of Load each period
periodos = {}
for i in range(dia):
    periodos[i] = Tou.addVar(vtype=GRB.CONTINUOUS, lb=0, ub=1)

Tou.update()


#Interch = Tou.addConstr((periodos[i] <= alpha*Curvapu[i] for i in range(dia)), name='Interch')

for t in range (dia):
    Tou.addConstr(periodos[t] <= alpha*Curvapu[t])

Tou.addConstr(gp.quicksum(periodos[i] - Curvapu[i] for i in dia)==0)
#Tou.addConstr(np.sum(periodos) - np.sum(Curvapu)==0)

Tou.update()


obj = gp.quicksum(Costo[i] * periodos[i] for i in dia)
Tou.setObjective(obj, GRB.MINIMIZE)
Tou.optimize()

1 Ответ

0 голосов
/ 29 апреля 2020

Вы пропускаете range(dia) в циклах "for". Видимо dia это "int". Вам также не нужны звонки Tou.update(). Гуроби прекрасно примет новые данные.

...