流水作业调度_第1页
流水作业调度_第2页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、流水作业调度一、可行性分析与项目开发计划n个作业1,2,.n要在由2台机器M1和M2组成的流水线上完成加工。每个作业的顺序都是现在M1上加工,然后再M2上加工。M1和M2加工作业i所需的时间分别是ai和0,1<=i<=n流水作业调度问题要求确定这n个作业的最优加工顺序,使得从第一个作业在机器M1上开始加工,到最后一个作业在机器M2上加工完成所需要的时间最少。直观上,一个最优调度应该使得机器M1没有空闲时间,而且机器M2的空闲时间最少,在一般情况下,机器M2上会出现机器空闲和作业积压两种情况。设全部作业的集合为N=1,2,。SN是N的作业子集,在一般情况下,机器M1开始加工作业S中作

2、业时,机器M2还在加工其他作业,要等时间t后才可以利用。将这种情况下完成S中作业所需要的最短时间记做T(S,t)则流水作业调度问题的最优值就是T(N,0).我们通过分析可以知道流水作业调度问题具有最优子结构的性质,因此考虑用动态规划算法自后向前来解决其最优问题。这就需要通过建模来得出最优子结构的递归式子,从而设计算法求解最优值。二、需求分析1、用户可以根据自己的需要输入想要进入流水线的作业数。2、用户可以输入这几个作业在机器M1和M2上的加工时间。3、由主函数调用流水作业调度的Johnson算法来实现对流水作业的安排。4、输出经过Johnson算法安排后的作业序列,这就是最终的一个最优调度。三

3、、概要设计总体设计:假定这n个作业在机器M1上加工时间为aj,在机器M2上加工时间为bi,1<=i<=n.由流水作业调度问题具有最优子结构性质可知,T(N,0)minaiT(Ni,bi)1<=i<=n推广到一般情况下,T(S,t)aiT(Si,bimaxtai,0)iS式子中,maxtai,0这一项是由于在机器M2上,作业i必须在maxt,ai时间之后才能开工,因此,在机器M1上完成作业加工i之后,在机器还需要bimaxt,aiaibmaxta"时间完成对作业i的加工。按照上述递归式,可以设计出流水作业调度问题的动态规划算法,但是算法还可以进一步简化。设是作业

4、集S在机器M2的等待时间为t时的任一最优调度。若在这个调度中,安排在最前面的两个作业分别是i和j,记(1)i,(2)j,由动态规划递归式可得:T(S,t)aiT(Si,bimaxtai,0)aiajTSi,j,tijtijbjmaxbimaxtai,0aj,0bjbiajmaxmaxtai,0,0,ajbi其中bjbiajmaxtai,ajbi,0bjbiajaimaxt,aiajbi,ai如果作业i和作业j满足minb,ajminbj,ai,则称作业i和作业j满足Johnson不等式。如果作业i和作业j不满足Johnson不等式,则交换作业i和作业j的加工顺序后,作业i和作业j满足Johns

5、on不等式,而且不增加加工时间。因此,任意两个满足Johnson法则的调度具有相同的加工时间,从而所有满足Johnson法则的调度均为最优调度,流水作业调度问题转化为求解满足Johnson法则的调度问题。流水作业调度的Johnson算法:(1) 令N1=i|a:b,N2=i|a:bj;将N1中的作业按照a:的非减序排序,将N2中的作业按照bi的非增序排序;N1中作业接N2中作业构成满足Johnson法则的最优调度。1、为了实现上述算法,需要采用顺序表的抽象数据类型ADTSqlist数据对象D:D是具有相同特征的数据元素的集合。各数据元素均含有类型相同、可以唯一标识数据元素的关键字数据关系R:数

6、据元素同属于一个集合。基本操作:sort(&L,n)初始条件:顺序表L存在操作结果:对顺序表L中的内容按关键字大小进行由小到大的排序Flowshop(n,a,b,c)初始条件:数组a.、b存在并且不为空,大小为n操作结果:执行Johnson算法,并且返回最优调度的时间长度,在数组c中存放最优调度安排ADTSqlist2、本项目主要有以下几个模块:(1) 输入需要调度作业的模块:输入作业的个数,以及在每个作业在机器M1和机器M2上需要加工的时间。(2) 排序模块:对一个顺序表按照关键字由小到大进行排序(3) 执行Johnson算法模块:对N个作业调用Johnson算法确定最优调度和最优调

7、度下总的调度时间。(4) 输出最优调度方案的模块:输出最优调度安排方式和最优调度所用的时间。整体架构如下main初始化Johnson算法显示结果四、详细设计五、1、数据结构的设计:为了实现Johnson算法,本项目采用以下的数据结构:typedefstructintkey,index;booljob;Jobtype;typedefstructJobtyperMAXSIZE;intlength;Sjob;ey>j.key)t=i;i=j;j=t;/*执行Johnson算法确定最优调度*/intFlowshop(intn,inta,intb,intc)inti;Sjobd;for(i=0;i

8、<n;i+)i.key=ai>bibi:ai;i.job=ai<=bi;i.index=i;sort(d,n);intj=0,k=n-1;for(i=0;i<n;i+)ifi.job)cj+=i.index;elseck-=i.index;j=ac0;k=j+bc0;for(i=1;i<n;i+)j+=aci;k=j<kk+bci:j+bci;returnk;函数调用关系:六、编码#include""#defineMAXSIZE1000typedefstructintkey,index;booljob;Jobtype;typedefstr

9、uctJobtyperMAXSIZE;intlength;Sjob;ey>j.key)t=i;i=j;j=t;intFlowshop(intn,inta,intb,intc)inti;Sjobd;for(i=0;i<n;i+)i.key=ai>bibi:ai;i.job=ai<=bi;i.index=i;sort(d,n);intj=0,k=n-1;for(i=0;i<n;i+)ifi.job)cj+=i.index;elseck-=i.index;j=ac0;k=j+bc0;for(i=1;i<n;i+)j+=aci;k=j<kk+bci:j+bci

10、;returnk;voidmain()intn,i;intaMAXSIZE,bMAXSIZE,cMAXSIZE;printf("流水线中的作业个数是:");scanf("%d",&n);printf("第一个的加工时间是:");for(i=0;i<n;i+)scanf("%d,",&ai);printf("第二个的加工时间是:");for(i=0;i<n;i+)scanf("%d,",&bi);intm=Flowshop(n,a,b,c);

11、for(i=0;i<n;+i)printf("%d",ci);printf("n");printf("最短加工完成时间是%dn",m);七、测试在运行dos窗口下输入命令,这次测试输入4个作业,得出了如下结果:进行一组测试,得出了如下结果:若按照Johnson算法手工做题,可知知道N仁0,2,3,N2=1最优调度是0,2,3,1计算的最优调度时间是38再次进行一组测试,这次再次测试4个作业的情况,在N1和N2中各有两个作业的情况。得到了如下结果:计穿机却法设计'作业涼水谓度Pressenykeytocontinue顷术钱电的作业个数是i4懐二个的加工可间是;5,12,2第二木的加工時|可JE;4,14,8,1712S最裁加工完成时间是的如按照手工计算,可知N仁1,3,N2=0,2,排序后的最优调度是3,1,2,0,和程序结果一致,而且最优调度时间也是45再次进行一次较为合理的测试:若出现两个作业的加工时间一样,这次作业的个数是6个,作业1和作业5在两个机器上的加工时间是一样的得到如下的结果:E5:计算机算袪设计'作业涼水调度Debujjob.«e2BTrBTr“作二二的结个个;38是:数是是卜一日_ztn、J-业£LPans*Keytoc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论