获得一个月的最佳员工人数(排班)
Getting the optimal number of employees for a month (rostering)
对于给定的班次数,是否有可能在一个月内获得最佳员工人数?
我将以护士轮值表为例进一步解释一下。
想象一下,我们不知道在给定月份内计划的护士人数,班次数是固定的。另外,想象一下,每次您在计划中插入一名新护士时,它都会降低您的分数,并且每位护士的正常工作时间和额外工作时间都是有限的。额外时间比正常时间减少更多分数。
因此,问题在于获得所需护士的最佳数量及其计划。我提出了两种可能的解决方案:
固定护士人数明显高于所需人数,并将问题视为过度约束问题,因此会有一些护士没有被分配到任何班次。
并行启动同一问题的多个实例,并为每个实例增加护士数量。此解决方案存在的问题是,您必须或多或少地估计护士的大概范围,低于或高于预先需要的护士。
两种解决方案都有些低效,有没有更好的方法来解决这个问题?
我调用选项 2 进行模拟。通常在模拟中,他们不仅会考虑员工人数,还会考虑 @ConstraintWeight
s 等。这对战略 "what if" 决策很有用(如果我们......雇用更多人怎么办?.. .更注重服务质量?...更注重经济收益?...)
如果您真的只需要尽量减少员工人数,并且您可以清楚地权衡这一点与所有其他硬约束和软约束(可能作为两者之间的权重,类似于过度约束规划),那么选项 1 是足够好 - 而且 cpu 成本更低。
对于给定的班次数,是否有可能在一个月内获得最佳员工人数?
我将以护士轮值表为例进一步解释一下。
想象一下,我们不知道在给定月份内计划的护士人数,班次数是固定的。另外,想象一下,每次您在计划中插入一名新护士时,它都会降低您的分数,并且每位护士的正常工作时间和额外工作时间都是有限的。额外时间比正常时间减少更多分数。
因此,问题在于获得所需护士的最佳数量及其计划。我提出了两种可能的解决方案:
固定护士人数明显高于所需人数,并将问题视为过度约束问题,因此会有一些护士没有被分配到任何班次。
并行启动同一问题的多个实例,并为每个实例增加护士数量。此解决方案存在的问题是,您必须或多或少地估计护士的大概范围,低于或高于预先需要的护士。
两种解决方案都有些低效,有没有更好的方法来解决这个问题?
我调用选项 2 进行模拟。通常在模拟中,他们不仅会考虑员工人数,还会考虑 @ConstraintWeight
s 等。这对战略 "what if" 决策很有用(如果我们......雇用更多人怎么办?.. .更注重服务质量?...更注重经济收益?...)
如果您真的只需要尽量减少员工人数,并且您可以清楚地权衡这一点与所有其他硬约束和软约束(可能作为两者之间的权重,类似于过度约束规划),那么选项 1 是足够好 - 而且 cpu 成本更低。