Я пытаюсь объявить ограничения ниже в Python, но это не сработает.Gurobi - объявить ограничения в python
Это мой код:
m.addConstrs((tsk*Xkt[i]).sum(k, '*') + (tbk*Qkt[i]).sum(k, "*") <= bt[i]+Ot[i] for i in range(0, t))
Я пытаюсь объявить ограничения ниже в Python, но это не сработает.Gurobi - объявить ограничения в python
Это мой код:
m.addConstrs((tsk*Xkt[i]).sum(k, '*') + (tbk*Qkt[i]).sum(k, "*") <= bt[i]+Ot[i] for i in range(0, t))
Метод tupledict.sum()
относится к tupledict
объекта, а не LinExpr
такие как tsk*Xkt[i]
. У вас есть два варианта:
Использование функции sum()
или quicksum()
, создавая такое выражение:
m.addConstrs(quicksum(ts[k]*X[k,t] + tb[k]*Q[k,t] for k in Krange) <= b[t]+O[t] for t in Trange)
Используй tupledict.prod()
метод:
m.addConstrs(X.prod(ts, '*', t) + Q.prod(tb, '*', t) <= b[t]+O[t] for t in Trange)
Несколько комментариев :
tupledict.prod()
; мой код выше отражает правильное использование этого метода.Большое вам спасибо за помощь! Я выбрал quiksum - хорошо сделал работу! –
это не ваш код. Это _line_ вашего кода. Пожалуйста, предоставьте [mcve] и точную ошибку. –
Извините за терминологию. Ошибка так долго, что я не хотел вставлять ее здесь. и в конце говорится только «KeyError: 0» –