algorithm - 有什么算法可以在用户之间分配工作,确保所有人至少有 "nice work"吗?

标签 algorithm scheduled-tasks pseudocode

在过去的几个月里,我一直在努力寻找一种我通常手工完成的算法。我很确定那里一定有一些想法,但我还没有找到。

问题如下:

假设我们有 X 个用户和 X 个工作要做(相同数量的用户和工作)。其中一些工作令人讨厌、无聊或令人筋疲力尽,而其他工作则很好、有创意且开放。我希望能够生成一个工作列表给每个用户一个星期,每天都有不同的职位(例如)。当然,所有的用户都应该有“美好的时光”,“无聊的任务”也不得不做......

在一个非常小的例子中:

Tasks = X (boring) / Y (cool)

Users = A / B

Day 1:

A -> X
B -> Y

第 2 天:

A -> Y
B -> X

主要思想是在所有用户之间建立一个均匀的工作流程(因此所有人都有好的和坏的作品)。

如果可以定义某些用户更“特殊”并值得“更好的对待”,则加分。此外,任务不仅可以按“好/坏”分类,还可以按编号进行分类。


到目前为止我的想法:

我想到的最好的算法或想法是对用户进行排序,并首先为首选用户提供最佳位置,直到我分发所有工作。然后在第二天,我将最差的与最好的交换,依此类推(1 与 X,2 与 X-1...)。这是我的担忧:

  • 第三天不知道如何继续(如果我重复同样的想法,1 将回到 1,X 回到 X 然后他们整个星期只做两个任务...
  • 首选的人,第一名,开始执行“最糟糕的任务”X。此外,中间的人可能不会改变任务(只是不好和不好)。

如果我能更好地解释我的想法,或者您有任何提示,请告诉我。 (包括图表、其他可能的想法等)。

最佳答案

我相信除了分配无聊和酷的状态之外,您还可以找出每项事件花费的(平均)时间量,以便您可以平衡工作。这就是装配线的平衡方式(基于时间量),所有工作单元每天都必须分配相同数量的工作时间,这样一些工作单元将有例如 12 到 20 个事件,而一些只是一两个,但时间量将大致相同。

关于algorithm - 有什么算法可以在用户之间分配工作,确保所有人至少有 "nice work"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23352196/

相关文章:

c - 11线程程序段错误

Django:发送提醒邮件

algorithm - 合并两个表的内容(找Matlab或者Pseudo Code)

algorithm - 枚举所有偏序

algorithm - 使用 Jmeter 请求循环遍历文件夹和子文件夹

.net - 如何在 .NET 中执行基于时间/计划的事件?

algorithm - 何时停止凝聚层次聚类 - 停止标准

c - 将链表拆分为半个 C 编程

javascript - 标准 JavaScript 对象哈希表实现中可能发生冲突?

java - Spring-定时任务-优雅关机