【问题标题】:Optimize distribution of jobs to experts, with max. number of jobs per expert优化工作分配给专家,最大。每个专家的工作数量
【发布时间】:2014-01-27 12:52:14
【问题描述】:

我有一群“专家”(大约 300 人)可以处理一项工作。我有很多工作要做,比如说大约 500 个。我也有信息,一个专家能够完成某项工作的“好”程度。这将导致一个 300 x 500 的矩阵保持权重。

我想为专家找到一个“最佳”的工作分配。但是有限制,一个专家只能获得分配的最大数量的工作。

我有优化算法的一般基础知识,但我不知道如何为这种固定的离散上限建模。有人知道可以处理这类问题的一类算法吗?

【问题讨论】:

  • 一些最佳搜索算法。遗传算法应该可以工作,但可能有点矫枉过正。
  • 可能是scicomp.stackexchange.com的好候选人

标签: algorithm mathematical-optimization


【解决方案1】:

尝试将其建模为最小成本网络流问题。

为每个人添加一个节点。

为每个需求为 1 的作业添加一个节点。

在每个人和每个工作之间添加一条边,容量为 1,成本根据您的矩阵。

添加一个需求等于(减去)作业数量的源节点。

根据他们可以做的工作数量,在来源和每个有能力的人之间添加一条边。

求解最大成本流(例如,将成本乘以 -1 并使用来自 Networkx 的 min_cost_flow

this question 的答案给出了类似问题的 Python 代码。

【讨论】:

  • 您似乎将需求与供应混为一谈……不过算法很好。也许我们甚至可以使用饥饿算法来获得更好的运行时间。
猜你喜欢
  • 1970-01-01
  • 2012-05-15
  • 2016-09-10
  • 2018-03-05
  • 1970-01-01
  • 2011-12-22
  • 2013-05-05
  • 1970-01-01
  • 2011-08-29
相关资源
最近更新 更多