流水作业调度算法c语言,算法笔记动态规划流水作业调度问题与Johnson法则

《算法笔记动态规划流水作业调度问题与Johnson法则》由会员分享,可在线阅读,更多相关《算法笔记动态规划流水作业调度问题与Johnson法则(12页珍藏版)》请在人人文库网上搜索。

1、0018算法笔记【动态规划】流水作业调度问题与Johnson法则1、问题描述:n个作业1,2,n要在由2台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为ai和bi。流水作业调度问题要求确定这n个作业的最优加工顺序,使得从第一个作业在机器M1上开始加工,到最后一个作业在机器M2上加工完成所需的时间最少。2、问题分析直观上,一个最优调度应使机器M1没有空闲时间,且机器M2的空闲时间最少。在一般情况下,机器M2上会有机器空闲和作业积压2种情况。设全部作业的集合为N=1,2,n。S是N的作业子集。在一般情况下,机器M1。

2、开始加工S中作业时,机器M2还在加工其他作业,要等时间t后才可利用。将这种情况下完成S中作业所需的最短时间记为T(S,t)。流水作业调度问题的最优值为T(N,0)。设是所给n个流水作业的一个最优调度,它所需的加工时间为 a(1)+T。其中T是在机器M2的等待时间为b(1)时,安排作业(2),(n)所需的时间。记S=N-(1),则有T=T(S,b(1)。证明:事实上,由T的定义知T=T(S,b(1)。若TT(S,b(1),设是作业集S在机器M2的等待时间为b(1)情况下的一个最优调度。则(1),(2),(n)是N的一个调度,且该调度所需的时间为a(1)+T(S,b(1)=bi;(2)将N1中作业。

3、按ai的非减序排序;将N2中作业按bi的非增序排序;(3)N1中作业接N2中作业构成满足Johnson法则的最优调度。Johnson算法中分类及排序的作用(验证不等式)设数组c为排序后的作业排列,排序结果如下:红线左侧满足 aci=min(bci+1,aci)其调度顺序最优;红线右侧满足 bci=bci+1 符合johnson 不等式,min(bci,aci+1)=min(bci+1,aci)其调度顺序最优;中间过渡部分横向比较,左侧aci=min(bci+1,aci)其调度顺序也最优;程序具体代码如下:cppview plaincopy1. /3d9动态规划流水作业调度问题2. #inclu。

4、destdafx.h3. #include4. usingnamespacestd;5. 6. constintN=5;7. 8. classJobtype9. 10. public:11. intoperatorbi?bi:ai;/按Johnson法则分别取对应的bi或ai值作为关键字59. di.job=aii;j-)100. /如果前一个数大于后一个数,则交换101. if(dj=dj-1)102. temp=dj;103. dj=dj-1;104. dj-1=temp;105. flag=1;106. 107. 108. /如果本次排序没有进行一次交换,则break,减少了执行之间。109. if(flag=0)110. break;111. 112. 113. 运行结果如下。

你可能感兴趣的:(流水作业调度算法c语言)