随机分配位置

时间:2010-07-03 19:57:06

标签: ms-access random access-vba

这是我的基本问题。假设我有50名员工在某一天工作,我希望我的程序根据他们的培训内容将他们随机分配到“位置”(即前台,电话等)。该计划已经知道每位员工的培训内容。什么是实用的最佳方法,并将员工分配到50个职位中的每一个?

P.S。我正在使用VBA将其编程到Access中,但这更像是一个过程问题而不是实际代码。

2 个答案:

答案 0 :(得分:2)

你不冷不热,

您正在寻找maximum bipartite matching。这是图论的一个问题。归结为确定具有恒定边权重1的无向二分图中的最大流量:

  1. 您可以在两个单独的集合中划分图表中的所有顶点。第一组包含所有工作人员,第二组包含所有可用职位。
  2. 现在,您可以将每个工作人员的边缘插入到他/她能够处理的每个位置。
  3. 再插入两个顶点:源和接收器。将源与每个工作点顶点和接收器连接到每个位置顶点。
  4. 确定从源到汇的最大流量
  5. 希望我能帮忙,问候。

    编辑:支持随机性

    由于找到最大二分匹配/最大流是一个确定性算法,它总是会返回相同的结果。为了改变它,你可以在应用算法之前混合/混洗图形中边缘的顺序。

答案 1 :(得分:0)

在您的头寸表中有一个序列,1,2,3,4和要填补的头寸数。然后看看这个人昨天做了什么,1看到了位置序列,现在他们被分配到下一个位置。如果今天有足够的位置,那么转到下一个优先位置。

不是随机但可能足够近。