我有一群可以处理工作的“专家”(约300人)。而且我有大量的工作需要完成,让我们说其中有500个。我也掌握了一个信息,一个专家如何“做好”能够完成某项工作。这将导致300 x 500矩阵保持权重。
我想为专家找到一份“最佳”的工作分配。但是受限制,单个专家应该只分配最多的工作数。
我有优化算法的一般基础知识,但我不知道如何建模这种固定的离散上界。有没有人知道一类可以处理这类问题的算法?
答案 0 :(得分:3)
尝试将其建模为最低成本的网络流量问题。
为每个人添加一个节点。
为每个需求1的作业添加一个节点。
根据您的矩阵,在每个人和每个作业之间添加一个容量为1且成本的边缘。
添加需求等于(减去)作业数量的源节点。
根据他们可以执行的工作数量,在源和每个人之间添加一个容量边缘。
解决最高成本流量(例如,将成本乘以-1并使用Networkx中的min_cost_flow)
this question的答案为类似问题提供了Python代码。