CP-SAT 平衡任务分配
Posted
技术标签:
【中文标题】CP-SAT 平衡任务分配【英文标题】:CP-SAT to balance task assignment 【发布时间】:2021-01-29 09:14:04 【问题描述】:亲爱的, 我想知道 CP-SAT 是否有任何内置功能可以让我平衡分配给用户的任务数量。 现在我正在计算方差,并在目标函数中将其最小化,因此有可能使用内置函数计算方差会很棒,但我想知道我是否有其他选择。
谢谢
【问题讨论】:
【参考方案1】:别无选择。
如果任务和工人的数量是固定的。您可以计算平均值,并使用 epsilon 添加以下约束:
for all workers:
model.Add(sum(assigned_tasks) <= average + epsilon)
model.Add(sum(assigned_tasks) >= average - epsilon)
model.Minimize(epsilon)
这不太精确,但速度更快。
【讨论】:
为了最小化 epslon 我需要找到 epslon 作为每个任务决策的操作员的函数,对吗? 可以是一个全局的 epsilon,每个算子一个,并且最小化 epsilon 的总和 不确定我是否理解。例如,如果我有 3 个工人和 9 个任务,那么 epsilon 函数应该是什么?谢谢 限制每个工人有 3-epsilon 和 3+epsilon 分配给他的任务,并最小化 epsilon。以上是关于CP-SAT 平衡任务分配的主要内容,如果未能解决你的问题,请参考以下文章