这是我一直在研究的一个逻辑难题,我很想看看SO社区想出了什么样的解决方案。我有24个随机生成的需求值,每小时一个。我有15名员工,每人必须8小时轮班,但可以在一天中的任何时间开始工作。我在找能使24小时内供需总差最小的公式。结果可能与下表相似,假设公式为员工的最佳八小时轮班中每小时分配一个"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
你可以试试遗传算法:
- 设置每个员工的随机开始时间。
- 通过随机选择员工并将他们的开始时间移动1小时来创建新的突变
- 根据差异评分对每个突变进行评分,选择最佳突变。
这可能会导致局部最小值,所以用其他随机选择多次启动它是一个好主意。
您还需要定义差异分数。这可以是差值的和/平均值,也可以是最大差值