Я оптимизирую очень простую задачу: товары доставить в соответствии со спросом. Моя целевая функция - это соотношение количества доставленных товаров к спросу, потому что я хочу добавить штраф, если доставлено слишком много товаров. Я пишу свою цель:
m.setObjective((quicksum(quicksum((1-x[i,t])/d[i,t] for i in range(D)) for t in range(T)))
, где x[i,t]
- это количество предметов, доставленных в точку i
в момент t
, а d[i,t]
- требование точки i
в момент времени t, поэтому d[i,t]
- это константы, которые я беру из файла Excel. Когда я запускаю скрипт, появляется ошибка "GurobiError: Divisor must be a constant"
, но я не совсем понимаю, почему, поскольку единственной переменной является x, а d - это массив констант.
Спасибо за помощь