假设有一种产品要在工厂生产,从头到尾都需要o
操作。每个操作都需要时间t_o
才能完成。每次操作至少有一名员工,并且没有员工可以执行一项以上的操作。但是,每个操作最多只能由2名员工执行(因此,员工总数不得超过2*o
)。
目标是为每个操作分配正确的员工人数(1或2名员工),以使每位员工的平均等待时间最小化。
例如: 有2个操作,分别需要1.0分钟和0.5分钟。
案例1:1名员工执行工序1(我们叫o1
),1名员工执行o2
。然后,生产线的总等待时间为0.5分钟(因为第二名员工每次闲置0.5分钟),每名员工的平均等待时间为0.5 / 2 = 0.25
情况2:2名员工执行o1
,1名员工执行o2
。然后,总等待时间为0分钟,因为在1分钟内,两个操作都可以完成两次。因此,每位员工的平均等待时间为0/3 = 0
情况3:1名员工执行o1
,2名员工执行o2
。然后,总等待时间为1.5分钟,因为在1分钟内o1
一次完成,而o2
由单个员工在0.5分钟内完成(因此,第一名o2
员工处于闲置状态)持续0.5分钟,第二位o2
雇员则是整个1分钟的理想选择)。因此,每位员工的平均等待时间为1.5 / 3 = 0.5
在这里,我们选择案例2,因为它可以使每位员工的平均等待时间(0分钟/员工)最小化。
我目前正在使用一种贪婪的方法,首先从每个操作分配一名员工开始。然后,我遍历操作列表,并增加导致最长等待时间的操作的员工人数。我不确定这近似值有多好,但是我正在寻找一种接近最佳的解决方案。
我研究了任务调度算法和匈牙利算法,但是在将这些示例中的任何一个应用于我的问题时遇到了困难。