我是Python和约束编程的新手,我敢肯定有些简单/愚蠢的东西会引发错误。
我正在尝试使相对于预测的项目盈余最小化(尝试使预测尽可能接近)。要做到这一点,看来每天查看绝对差异是一个好的开始。 绝对部分是我遇到的困难。
对于背景:
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'
任何帮助/输入将不胜感激。
谢谢
答案 0 :(得分:1)
abs,min和max是求解器无法理解的python构造。
您需要使用
model.AddAbsEquality(target_var, [x1, .. xn])