【发布时间】:2010-11-27 10:53:14
【问题描述】:
我正在开发的软件应用程序需要能够根据一组用户目前拥有的任务数量为他们分配任务,其中任务最少的用户最有可能获得下一个任务。但是,当前的任务负载应该被视为一个权重,而不是一个绝对的顺序定义。 IOW,我需要实现一个加权的负载平衡算法。
假设有五个用户,任务数如下:
答:4 乙:5 C: 0 D: 7 E: 9
我想按照 CABDE 的顺序为下一个任务确定用户的优先级,其中 C 最有可能获得任务,而 E 最不可能。这里有两点需要注意:
- 用户数量可以从 2 个到几十个不等。
- 分配给每个用户的任务数量可以从 1 到数百不等。
目前,我们可以平等对待所有任务,尽管我不介意将任务难度作为我将来可以使用的变量 - 但这纯粹是锦上添花。
到目前为止,我提出的想法在某些情况下并不是很好。如果有大量用户,它们可能会将用户的权重过于紧密地放在一起,或者如果用户没有当前任务,它们可能会变得平淡,或者......
我试过在网上四处寻找,但运气不佳。谁能给我一个可以很好地工作的算法的快速总结?我不需要实际的实现——我会做那部分——只是一个很好的描述。或者,是否有一个可以免费访问的好网站?
此外,虽然我当然很欣赏质量,但这并不需要在统计上是完美的。所以如果你能想到一个好的但不是很好的技术,我很感兴趣!
【问题讨论】:
标签: algorithm language-agnostic scheduling load-balancing resource-scheduling