CP-SAT 平衡任务分配

问题描述

亲爱的,
我想知道 CP-SAT 是否作为任何内置功能,允许我平衡分配给用户的任务数量
现在我正在计算方差并在目标函数中最小化它,所以有可能使用内置函数计算方差会很棒,但我想知道我是否有其他选择。>

谢谢

解决方法

别无选择。

如果任务和工人的数量是固定的。您可以计算平均值,并使用 epsilon 添加以下约束:

for all workers:
  model.Add(sum(assigned_tasks) <= average + epsilon)
  model.Add(sum(assigned_tasks) >= average - epsilon)

model.Minimize(epsilon)

这不太精确,但要快得多。