在Excel中分配供给以匹配需求

这是我一直在努力的一个逻辑谜题,我很好奇看到SO社区提出什么样的解决scheme。 我有24个随机生成的需求值,每天一个小时。 我有一个15人的工作人员,每人必须在8小时轮class工作,但可能在一天中的任何时间开始工作。 我正在寻找能最大程度减less二十四小时供求差距的公式。 结果可能看起来类似于下表,考虑到该公式为员工的最佳八小时轮class中的每小时分配一个“1”。

Hour Demand Staff 1 Staff 2 ... Staff 15 Total Staff Difference 0 4 1 1 0 4 0 1 3 1 1 0 4 0 ... 23 6 0 0 1 5 1 

你可以尝试一个遗传algorithm:

  1. 为每个工作人员设置随机的开始时间。
  2. 通过随机select工作人员,并开始时间1小时,创build新的突变
  3. 通过差分评分每个突变,并select最好的一个。

这可能导致局部最小值,因此最好多次使用其他随机select来启动它。

您还需要定义差异分数。 这可能是差异的总和/平均值,但也可能是最大差异。