优化算法

时间:2018-08-13 20:22:34

标签: algorithm optimization

我有一个排序/除法算法问题……这里有CS忍者吗?

我正在构建一个在成员之间划分任务的应用程序。每个任务都有一个“得分”困难。必须在未定义数量的成员之间尽可能公平地划分任务(这是优先级)。 最重要的是,每个成员都有自己的喜好,可以消除/增加任务“痛苦”的50%。 例如,我们可能有:

all_tasks = {task1: 75, task2: 30, task3: 42, task4: 22, task5: 61, task6: 10, task7: 32, task8: 39}
member_preferences = {
    bob: {
        like: [task2, task5], 
        dislike: [task1, task7, task8]}, 
    joe: {
        like: [task3, task5, task7], 
        dislike: [task2, task6, task8]},
...
}

关于如何为每个人找到最佳任务分配的任何想法?谢谢!

1 个答案:

答案 0 :(得分:3)

只是做了一些快速的Wiki研究。您正在描述的问题似乎被称为Fair Item Assessment问题。描述为:

  

必须将这些项目分配给对它们有不同评价的几个合作伙伴,并且每个项目都必须整体上交给一个人。

它略有不同,因为难度分数与任务的价值相反。实际上是一个人不想要想要多少任务,而不是他们要做多少。我想您可以通过消除难度分数来轻松解决此问题。这样,“更大”的值表示“更轻松”的工作。

此外,如Wiki页面所述,“公平”也有多种定义。可悲的是,它们似乎都对NP不利。

我想您正在寻找一个公平的全局定义,在该定义中,最不幸的成员的最大难度得分会最小化。本文引用了一篇论文,将这种情况称为“ Santa Claus Problem”,并提供了一种近似的解决方案。切记在插入难度分数之前将其取反。

编辑:一种提示,用于查找在付费专线后面阻塞的纸张。您可以尝试直接通过电子邮件发送给作者,他们将非常乐意为您提供免费的论文副本。付款几乎总是100%付给出版商,因此作者通常会在被问及时将其赠予。