- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
批处理作业调度 第三组: 常 贺 尹川铭 刘东朝 张露露 一 问题描述 给定n个作业的集合(J1,J2,J3,...Jn)。每一个Ji作业都有两项任务分别在两台机器上完成。每个作业必须先由机器1处理,然后由机器2处理。作业i需要机器j的处理时间为tji ,其中i=1,2,...n,j=1,2。对于一个确定的作业调度,设Fji是作业i在机器j上完成处理的时间。所有作业在机器2上完成处理的时间和 称为该作业调度的完成时间和。 批处理作业调度问题要求对于给定的n个作业,制定最佳作业调度方案,使其完成时间和达到最小。 考虑=3 这个3个作业的6种可能的调度方案是(1,2,3)(1,3,2)(2,1,3)(2,3,1)(3,1,2)(3,2,1)对应的完成时间和分别是19,18,20,21,19,19。 调度方案(1,2,3)的完成时间计算 作业一在机器1上完成的时间是2,在机器2上完成的时间是3。 作业二在机器1上完成的时间是5,在机器2上完成的时间是6。 作业三在机器1上完成的时间是7,在机器2上完成的时间是10。 f=3+6+10=19 算法设计 批处理作业调度问题要从n个作业的所有排列中找出有最小完成时间和的作业调度,所以批处理作业调度问题的解空间是一颗排列树。 算法描述 { static int n, //作业数 f1, //机器1完成处理时间 f, //完成时间和 bestf; //当前最优值 static int m[][]; //各作业所需的处理时间 static int x[]; //当前作业调度 static int bestx[]; //当前最有作业调度 static int f2[]; //机器2完成处理时间 * * * * * tji 机器1 机器2 作业1 2 1 作业2 作业3 3 2 1 3 问题解析: 排列树: { if(in) { for(int j=1;j=n;j++) bestx[j] = x[j]; bestf = f; } else { for(int j=i;j=n;j++) { f1+=M[x[j]][i]; f2=((f2[i-1]f1)?f2[i-1]:f1)+M[x[j]][2]; f+=f2[i]; if(fbestf) { Swap(x[i],x[j]); Backtrack(i+1); Swap(x[i],x[j]); } f1 -= M[x[j]][1]; f -= f2[i]; } } } * * *
文档评论(0)