ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:165.24KB ,
资源ID:4131387      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4131387.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(流水作业调度.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

流水作业调度.docx

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

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

3、三、概要设计总体设计:假定这n个作业在机器M1上加工时间为,在机器M2上加工时间为,1=i=n.由流水作业调度问题具有最优子结构性质可知, 1=ij.key) t=i; i=j; j=t; /*执行Johnson算法确定最优调度*/int Flowshop(int n,int a,int b,int c) int i; Sjob d; for(i=0;ibibi:ai; i.job=ai=bi; i.index=i; sort(d,n); int j=0,k=n-1; for(i=0;in;i+) ifi.job) cj+=i.index; else ck-=i.index; j=ac0; k

4、=j+bc0; for(i=1;in;i+) j+=aci; k=jj.key) t=i; i=j; j=t; int Flowshop(int n,int a,int b,int c) int i; Sjob d; for(i=0;ibibi:ai; i.job=ai=bi; i.index=i; sort(d,n); int j=0,k=n-1; for(i=0;in;i+) ifi.job) cj+=i.index; else ck-=i.index; j=ac0; k=j+bc0; for(i=1;in;i+) j+=aci; k=jk?k+bci:j+bci; return k;vo

5、id main() int n,i; int aMAXSIZE,bMAXSIZE,cMAXSIZE; printf(流水线中的作业个数是:); scanf(%d,&n); printf(第一个的加工时间是:); for(i=0;in;i+) scanf(%d,&ai); printf(第二个的加工时间是:); for(i=0;in;i+) scanf(%d,&bi);int m=Flowshop(n,a,b,c); for(i=0;in;+i) printf(%d ,ci); printf(n);printf(最短加工完成时间是%dn,m); 七、测试在运行dos窗口下输入命令,这次测试输入4

6、个作业,得出了如下结果:进行一组测试,得出了如下结果:若按照Johnson算法手工做题,可知知道N1=0,2,3,N2=1;最优调度是0,2,3,1计算的最优调度时间是38再次进行一组测试,这次再次测试4个作业的情况,在N1和N2中各有两个作业的情况。得到了如下结果:如按照手工计算,可知N1=1,3,N2=0,2,排序后的最优调度是3,1,2,0,和程序结果一致,而且最优调度时间也是45再次进行一次较为合理的测试:若出现两个作业的加工时间一样,这次作业的个数是6个,作业1和作业5在两个机器上的加工时间是一样的得到如下的结果:最终的作业安排是4 0 2 3 5 1,作业5安排在了作业1的前面,这可能是由于排序算法的问题,最短加工处理时间是57测试结果也是正确的。八、维护 由于在Johnson算法中调用的排序算法是简单的选择排序,其时间的复杂度是,是一个比较高的数量级了,所以可以考虑采用其他的排序算法以提高其执行效率,如采用快速排序算法其时间复杂度明显减少,在此算法中执行效率是比较高的。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1