Абсолютная разница в минимизации в NSP - PullRequest
1 голос
/ 10 марта 2019

Я новичок как в Python, так и в программировании с ограничениями, я уверен, что есть что-то действительно простое / глупое, которое выдает ошибку.

Я пытаюсь минимизировать излишки товаров относительно прогноза (стараюсь максимально приблизить прогноз). Чтобы сделать это, кажется, что нужно посмотреть абсолютную разницу для каждого дня и интервала. В части absolute я испытываю трудности.

Для фона:

  • items - это BoolVar для каждого элемента, дня и временного блока
  • forecast - массив для каждого дня и временного блока

Моя функция минимизации выглядит следующим образом:

model.Minimize(sum(abs(sum(items[(i, d, t)] for i in all_items) - forecast[d][t]) for d in all_days for t in all_timeblocks))

Когда я запускаю это, я получаю следующую ошибку:

TypeError: bad operand type for abs(): '_SumArray'

Любая помощь / вклад будет приветствоваться.

Спасибо

1 Ответ

1 голос
/ 10 марта 2019

abs, min и max являются конструкциями python, которые не понятны решателю.

Вам нужно использовать

model.AddAbsEquality(target_var, [x1, .. xn])
...