动态规划----流水线调度问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
动态规划----流⽔线调度问题
问题的描述:
n个作业{1,2,…,n}要在由2台机器M1和M2组成的流⽔线上完成加⼯。
每个作业加⼯的顺序都是先在M1上加⼯,然后在M2上加⼯。
M1和M2加⼯作业i所需的时间分别为ai和bi。
流⽔作业调度问题要求确定这n个作业的最优加⼯顺序,使得从第⼀个作业在机器M1上开始加⼯,到最后⼀个作业在机器M2上加⼯完成所需的时间最少。
调度规则
(1 ) 把全部ai和bi分类成⾮降序列,ai和bi分别是第i个作业在两个机器上所需要的时间。
(2 ) 按照这⼀分类次序考察此序列: 如果序列中下⼀个数是aj 且作业j还没调度,那么在还没使⽤的最左位置调度作业j ; 如果下个数是bj 且作业j还没调度,那么在还没使⽤的最右位置调度作业j ; 如果已经调度了作业j,则转到该序列的下⼀个数。
算法主要利⽤Johnson不等式原理,对于所有的a步骤和b步骤的时间从⼩到⼤排序。
如果合并序列中拿出的元素属于a集合,则将其所属的job作为第⼀个job执⾏;如果属于b集合,则将其所属的job作为最后⼀个job执⾏。
进⾏下⼀个元素的判断,分别作为第⼆、倒数第⼆,依次类推;直到所有job被标记之后退出,获得的job数组就是job的执⾏序列。
例⼦1
设 n=4,( a1,a2,a3,a4 ) =( 3,4,8,10 ) 和( b1,b2,b3,b4 ) =(6,2,9,15 ),对这些a和b分类后的序列是( 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还没调度,从⽽σ3= 4
例⼦2:
排序的结果( a4,b3,a0,b1,a2,b2,a1,b0,a3,b4 )
执⾏顺序为 J4 -> J0 ->J2 ->J1 ->J3。