动态规划---->流水线调度问题

问题的描述:

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值