问题描述:
n个作业{1,2,…,n}要在由2台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为ai和bi。求确定这n个作业的最优加工顺序,使得从第一个作业在机器M1上开始加工,到最后一个作业在机器M2上加工完成所需的时间最少。
问题分析:
一个最优调度应使机器M1没有空闲时间,且机器M2的空闲时间最少。在一般情况下,机器M2上会有机器空闲和作业积压2种情况。
方法一、
例 设 n = 4
(a1,a2,a3,a4) = (3,4,8,10),
(b1,b2,b3,b4) = (6,2,9,15),
经排序后为
(b2,a1,a2,b1,a3,b3,a4,b4) = (2,3,4,6,8,9,10,15)。
设Π1,Π2,Π3,Π4是最优调度。
因最小数是b2,故置Π4 = 2。下一个次小的数是a1,置Π1 = 1.接下去是a2,作业2已经被调度。再其次是b1作业1也已经被调度。下一个是a3,置Π2 = 3,依次置Π3 = 4。所以最优调度次序为1,3,4,2。
二、johnson算法
流水作业调度问题的Johnson算法:
- 令N1={i|ai<bi},N2={i|ai>=bi};
- 将N1中作业按ai的非减序排序;将N2中作业按bi的非增序排序;
- N1中作业接N2中作业构成满足Johnson法则的最优调度。