流水作业调度问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

流水作业调度问题

描述:

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个。

相关文档
最新文档