调度问题研究.docx

调度问题研究.docx

ID:53286349

大小:63.19 KB

页数:6页

时间:2020-04-02

调度问题研究.docx_第1页
调度问题研究.docx_第2页
调度问题研究.docx_第3页
调度问题研究.docx_第4页
调度问题研究.docx_第5页
资源描述:

《调度问题研究.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、题目:关于一般性调度问题的研究摘要:问题描述简单调度算法作者:冷磊首先,先描述一下什么是调度问题。在现实世界中,人们可能经常会遇到这样一个问题:同时面临很多项任务,这些任务之中有的任务必须要在某些其他任务完成之后才能完成,或者有的任务之间互不干扰,谁先谁后并无多大关系;并且现在也有一个小的团队,团队里的人都能独立完成这些任务中的各个小项目。现在问题出来了,要怎样给这些人分配任务,并且怎样分配这些任务的先后顺序,才能使我们完成之间时的效率达到最高。这对这样的问题,我们将其抽象为一个数学模型,就是我们所说的一般

2、性的调度问题,一般性调度问题是指这样的一类问题:给定有穷的任务集和m台相同的机器,T上存在偏序关系,如果,那么必须保证任务完成之后才能去完成.表示完成任务t所需的时间,表示任务t的截止时间,,设开始时间为0,表示对任务集T的一个调度方案,其中表示任务t的开始时间,设表示完成任务的最终时间,假设每一项任务都可以安排到任何一台机器上执行.找出可以用于执行的,这个称为可行调度.一个可行调度必须满足一下3个条件:1.每项任务都要在截止时间之前完成1.同时工作的的不同机器台数不超过m2.任务安排必须满足任务集的偏序约

3、束,即上文所说的某项任务必须在某些项任务完成之后才能完成用数学公式将这三个条件表达出来就是:1.;2.;3.举一个例子来说明这个问题:在这个图中,忽略了自反关系,因为在拓扑排序中自反关系并不会发挥作用,假设这个问题中我们有两台机器,我们由此可以给出至少两种调度方案:其中ti表示任务,数字表示完成此项任务所花费的时间,现在我们的任务是找到最优的调度组合,使在这两台机器上完成这个任务的效率最高,即时间最短:分析:将偏序关系拓展为拓扑排序,将自反关系剔除,进行分析可得下列方案:(表格中空表示机器不运转)方案一:t

4、1t2t4t6时长8t3t5方案二:t1t3t5t6时长7t2t4相对方案一来说,方案二效率更高,第二个方案为最优调度。当然,对于一般性调度问题,现在还没又有效地算法,不过,如果将机器个数简化为1个,调度问题就大大简化了,相当于只是求一个偏序关系的拓扑排序.针对这种状况,我们将这个有向图写成矩阵形式(说明:只要两个节点能找到一条路,那么此位置的元素就为1,否则为0),根据这个假设,上面图的矩阵就可以写出如下:对于这个矩阵的求解,即利用这个矩阵求出一个拓扑排序,算法如下:下面进行算法实现,源代码如下:#inc

5、ludeintmain(){inti,j,s[6]={0},a[6][6],*p[6],*t;printf("请输入矩阵:");for(i=0;i<6;i++)for(j=0;j<6;j++)scanf("%d",&a[i][j]);for(i=0;i<6;i++){for(j=0;j<6;j++)s[i]+=a[j][i];p[i]=&s[i];}for(i=0;i<6;i++)for(j=i;j<6;j++)if(*p[i]>*p[j]){t=p[i];p[i]=p[j];p[j]

6、=t;}printf("一个可能的拓扑排序为:");for(i=0;i<6;i++)printf("%d",p[i]-s+1);printf("");return0;}上机运行结果为:上机运行结果与实际相符合。后记:由于我们知识水平的限制,此文中一定存在很多瑕疵,还望教员指正。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。