流水作业调度问题报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目二 流水作业调度
2.1问题重述
n 个作业},,2,1{n 要在由2台机器1M 和2M 组成的流水线上完成加工。每个作业加工的顺序都是先在1M 上加工,然后在2M 上加工。1M 和2M 加工作业i 所需的时间分别为i a 和i b ,n i ≤≤1。流水作业调度问题要求确定这n 个作业的最优加工顺序,使得从第一个作业在机器1M 上开始加工,到最后一个作业在机器2M 上加工完成所需的时间最少。
2.2问题分析
设全部作业的集合为},,2,1{n N =。S 是N 的作业子集。在一般情况下,机器1M 开始加工S 中作业时,机器2M 还在加工其他作业,要等时间t 后才可利用。将这种情况下完成S 中作业所需的最短时间记为),(t S T 。流水作业调度问题的最优值为)0,(N T 。
经过分析,流水作业调度问题具有最优子结构性质。设π是所给n 个流水作业的一个最优调度,它所需的加工时间为')1(T a +π。其中'T 是在机器2M 的等待时间为)1(πb 时,安排作业)(,),2(n ππ 所需的时间。
记)}1({π-=N S ,则有),()1('πb S T T =。
由流水作业调度问题的最优子结构性质可知:
)}},{({min )0,(1i i n i b i N T a N T -+=≤≤ (1)
一般形式:
})}0,max{,},{({min ),(i i i S
i a t b i S T a t S T --+=∈ (2) 从公式(1)可以看出,该问题类似一个排列问题,求N 个作业的最优调度问题,利用其子结构性质,对集合中的每一个作业进行试调度,在所有的试调度中,取其中加工时间最短的作业做为选择方案。将问题规模缩小。公式(2)说明一般情况下,对作业集S 进行调度,在2M 机器上的等待时间,除了需要等该部件在1M 机器上完成时间,还要冲抵一部分原来的等待时间,如果冲抵已成负
值,自然仍需等待1M 将作业做完,所以公式取}0,max {i a t -。
2.3算法描述
从上面的分析可知,流水作业问题一定存在满足Johnson 法则的最优调度,从而得到流水作业问题的Johnson 算法:
(1)令}|{1i i b a i N <=,}|{2i i b a i N ≥=;
(2)将1N 中作业依i a 的非减序排序;将2N 中作业依i b 的非增序排序;
(3)1N 中作业接2N 中作业构成满足Johnson 法则的最优调度。
算法代码具体实现,见附录。
2.4验证结果
我们任意选取数据进行验证,即任意选取五个不同的作业在机器1上的运行时间为}1,4,5,2,3{,在机器2上运行时间为}2,1,3,6,4{。输出结果:完成作业的最短时间为:17;作业调度的顺序为:}3,2,0,1,4{。
图2 算法程序运行结果