流水作业调度问题
- 格式:docx
- 大小:34.71 KB
- 文档页数:3
流水作业调度问题
描述:
N个作业{1,2, ..... ,n}要在由两台机器M1和M2组成的流水线上完成加工。每个作业
加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为ai和bi , 1 < i < n。流水作业高度问题要求确定这n个作业的最优加工顺序,使得从第一个作业在机器M1上开始加工,到最后一个作业在机器M2上加工完成所需的时间最少。
可以假定任何任务一旦开始加工,就不允许被中断,直到该任务被完成,即非优先调度。输入:
输入包含若干个用例, 第一行为一个正整数K(1<=K<=1000), 表示用例个数, 接下来K 个用例,每个用例第一个为作业数N(1<=N<=1000),接下来N行,每行两个非负整数,分别表
示在第一台机器和第二台机器上加工时间。
输出:
每个用例用一行输出采用最优调度所用的总时间,即从第一台机器开始到第二台机器结束的时间。
样例输入:
1
4
5 6
12 2
4 14
8 7
样例输出:
33
假定直接按顺序进行完成,则机器1 可以不用考虑,因为作业1 完成后就可以完成作业
2,直到作业n,需要的时间为所有作业在机器1上的时间总和。
但是,机器2 上完成的时间呢?
机器2上完成的时间显示除了作业在机器2上完成的时间总和, 还要加上等待时间, 即要求先在机器1 上完成后,才能在机器2 上开始。
例如
5 6
12 2
两个作业,顺序如下:
按顺序,则在机器1 上进行作业1 需要5小时,后进行作业2, 需要12小时,和为17 小时;
机器2 上,作业1 只能从第5 小时开始,第11 小时完成,等待了5 小时,等到作业2 在机器1 上完成后(已经是第17时),再完成2小时,共19小时。机器2的等待时间总计为11 小时。
逆序,在机器1上进行作业2需要12小时,后进行作业1需要5小时,和为17小时,
和前面一样;
机器2上,作业2完成后开始,等待了12小时,然后再等3小时开始作业1的6小时, 共计21小时,共等待了15小时。
图如下:
5 12
12 5
从刚才的分析可知,主要考虑机器2的等待时间,越少越好!
如何做到呢???
仔细分析可知,在机器1上需要的时间越少的,应该越早开始进行,这样才能保证机器2尽早开始。
但真是这样吗?
如:
5 6
4 2
按顺序需要共13小时,等待5小时; 逆序需要共15小时,等待7小时。
那怎么办呢???
根据相关解题思路及教材上Johnson法则,在此采用的方法简述如下:
在机器1上需要时间比在机器2是需要时间少的先开始,且按时间从小到大开始进行; 在机器1上需要时间比在机器2上需要时间多的后开始,按按时间从大到小开始进行;
解题思路(简略版)
,index为作业号
对d依时间排序
得到顺序为2 03 1顺序,即先安排第3个工作,再安排第1个,再安排第4个,最后安排第2个。