作业调度问题
实验六作业调度问题
实验目的:
1.熟悉多机调度问题的算法;
2.进一步掌握贪心算法;
3.提高分析与解决问题的能力。
实验内容:
要求给出一种作业调度方案,使所给的n个作业在尽可能短的时间内由m台机器加工处理完成。约定,每个作业均可在任何一台机器上加工处理,但未完工前不允许中断处理。作业不能拆分成更小的子作业。
[实验提示]
1.把作业按加工所用的时间从大到小排序;
2.如果作业数目比机器的数目少或相等,则直接把作业分配下去;
3.如果作业数目比机器的数目多,则每台机器上先分配一个作业,如下的作业分配时,是选那个表头上s最小的链表加入新作业。
typedef struct Job
{
int ID;//作业号
int time;//作业所花费的时间
}Job;
typedef struct JobNode //作业链表的节点
{
int ID;
int time;
JobNode *next;
}JobNode,*pJobNode;
typedef struct Header //链表的表头
{
int s;
pJobNode next;
}Header,pHeader;
int SelectMin(Header* M,int m)
{
int k=0;
for(int i=1;i { if(M[i].s } return k; } 实验核心代码: 运行结果: 实验总结: 采用最长时间作业优先的贪心选择策略,可以设计出解多机调度问题较好的近似算法。分n<=m(作业数小于机器数),n>m(作业数大于机器数)求解。假定有7个独立工作,所需处理时间分别为{2,14,4,16,6,5,3},由三台机器M1,M2,M3加工。按照贪心算法产生的作业调度所需要加工的时间为17. [实验步骤] 1先用贪心算法求解该问题,并测试你的程序,直至正确为止; 2针对问题实例,实录运行时的输入、输出文件; 3将你的程序和实录的界面存盘备用。 [实验报告要求] 阐述实验目的和实验内容; 1提交模块化的实验程序源代码; 2提交实验结果。 12.假设一个系统中有5个进程,它们到达的实践依次为0、2、4、6、8,服务时间依次为3、6、4、5、2,忽略I/O以及其他时间开销,若分别按响应比高者优先、时间片轮转(时间片为1)、先来先服务、非抢占短进程优先、抢占短进程优先调度算法调度CPU,请给出进程的调度顺序,计算各进程的平均周转时间和平均带权周转时间。 【解】 (1)响应比高者优先调度算法 平均周转时间=(3+7+9+14+7)/5 = 40/5 = 8 平均带权周转时间=(1+1.17+2.25+2.8+3.5)/5=10.72/5=2.144 (2)时间片轮转(时间片为1)调度算法 平均带权周转时间=(1+2.67+2.75+2.8+4)/5=13.22/5=2.644 进程调度顺序:P1、P2、P3、P4、P5 平均周转时间=(3+7+9+12+12)/5 = 41/5 = 8.2 平均带权周转时间=(1+1.17+2.25+2.4+6)/5=12.82/5=2.564 (4)非抢占短进程优先调度算法 平均周转时间=(3+7+11+14+3)/5 = 38/5 = 7.6 平均带权周转时间=(1+1.17+2.75+2.8+1.5)/5=9.22/5=1.844 (5)抢占短进程优先调度算法 平均周转时间=(3+18+9+9+2)/5 = 41/5 = 8.2 平均带权周转时间=(1+3+2.25+1.8+1)/5=9.05/5=1.81 补充:有5个待运行的进程A、B、C、D、E,各自估计运行时间为9、6、3、5、x,试问哪种运行次序可以使平均响应时间最短? 【解】 使平均响应时间最短的调度算法是短进程优先。因进程E的时间待定,所以调度次序与x 的大小有关。 (1)当x<3时的运行次序为:E、C、D、B、A (2)当3<=x<5时的运行次序为:C、E、D、B、A (3)当5<=x<6时的运行次序为:C、D、E、B、A (4)当6<=x<9时的运行次序为:C、D、B、E、A (5)当x>=9时的运行次序为:C、D、B、A 、E 一、二维背包问题 一维背包问题讨论的背包问题只有一种限制,即旅行者所能承受的背包的重量(亦即重量不能超过a (kg ).但是实际上背包除受重量的限制外,还有体积的限制,这就是不但要求旅行者的背包的重量M 不能超过a (kg ),还要求旅行者背包的体积V 不能超过b (m3),我们把这样的问题称为“二维背包问题”。 它的状态变量有两个因素:一个是重量,一个是体积。 二维背包问题是指:对于每件物品,具有两种不同的费用;选择这件物品必须同时付出这两种代价;对于每种代价都有一个可付出的最大值(背包容量)。问怎样选择物品可以得到最大的价值。设这两种代价分别为代价1和代价2,第i 件物品所需的两种代价分别为i a 和i b 。两种代价可付出的最大值(两种背包容量)分别为a 和b 。物品的价值为i c 。 模型: 11 1 max . ,1,2,3...n i i i n i i i n i i i i c x st a x a b x b x z i n ===≤≤∈=∑∑∑ 例题 码头有一艘载重量为30t ,最大容为12×10m 3的船,由于运输需要,这艘船可用于装载四种货物到珠江口,它们的单位体积,重量及价值量见下表: 现求如何装载这四种货物使价值量最大。 1 1 1 max .,1,2,3...n i i i n i i i n i i i i c x st a x a b x b x z i n ===≤≤∈=∑∑∑ 可用动态规划来解决 1.设x i (i=1,2,3,4)分别表示装载这四种货物的重量, 2.阶段k :将可装入的货物按1,2,3,…n 排序,每个阶段装一种货物,(共可分为四个阶段) 3.状态变量: 1k S +和1k R +,表示在第k 阶段开始时,允许装入的前k 种货物的重量与体积。 状态转移方程: 11k k k k k k k k S S a x R R b x ++=-=- ()(){}111,max ,j k k j k k j j f S R f S R c x -++=+,表示在不超过重量和体积的前提下,装 入前j 中货品的价值。(j=1,2,3,4) 源代码: #include 基于WSA算法的作业车间低碳调度方法研究 1.1 引言 本章主要研究了以最大化完工时间和能耗指标为目标的作业车间低碳调度模型的求解方法。首先,建立了多目标作业车间低碳调度模型;然后基于Pareto 支配理论,设计了一种高效的MODWSA算法获得满意的Pareto非支配解;最后,设计了一套测试算例,将MODWSA算法与其它经典多目标算法进行比较分析,验证了MODWSA算法的优越性。在本研究中,作者完成了两项工作:首先,构建了一个新的多目标作业车间低碳数学模型;其次,设计了一种高效的MODWSA算法获得满意的Pareto非支配解。 1.2 作业车间低碳调度模型 本章研究的作业车间低碳调度问题可描述如下:对给定的n个工件及k台机器,一个工件的加工需要经过m道工序,每道工序允许在特定的机器上加工,任意一台机器在任意一个时刻仅能加工某一工件的某一道工序,并且一个工件只能在其上道工序完成后下一道工序才能开始加工[插入文献]。 考虑机器的准备时间,准备时间与同一机器上相邻两工件的加工顺序相关,并且机器的启动和工件的加工是相连的。对应于不同工序,机器具有不同的速率档位进行加工,并且可以进行调节。从能耗的角度来看,机器有四种不同的状态:加工状态(机器在加工工件),启动状态(机器在准备加工一个新的工件),待机状态(机器处于空转中),以及关机状态(机器被关机)。通常情况下,当机器在较高速率运作时,工件的加工时间会被缩短,但是相应的能耗会增加。因此本问题以最大化完工时间和能耗指标为目标,由于本章所研究问题的特点,该问题要比传统的作业车间调度问题要复杂的多。在该问题中,其它设定如下: ●工件在车间里被连续加工。也就是说,加工过程不能被中断。 ●机器允许有空闲时间,并且各阶段间具有容量无限的缓冲区。 ●当有第一个工件在机器上加工时,机器开机;当在该机器上加工的所有工件 加工完毕后,机器关机。 ●机器速度在工件加工过程中不能进行调整。 1.2.1 混合整数规划模型 为了提出问题的数学模型,根据上面对问题的描述,我们首先定义了下面的相关数学符号。 《操作系统》实验报告 题目:作业调度算法 班级:网络工程 姓名:朱锦涛 学号:E31314037 一、实验目的 用代码实现页面调度算法,即先来先服务(FCFS)调度算法、短作业优先算法、高响应比优先调度算法。通过代码的具体实现,加深对算法的核心的理解。 二、实验原理 1.先来先服务(FCFS)调度算法 FCFS是最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,系统将按照作业到达的先后次序来进行调度,或者说它是优先考虑在系统中等待时间最长的作业,而不管该作业所需执行的时间的长短,从后备作业队列中选择几个最先进入该队列的作业,将它们调入内存,为它们分配资源和创建进程。然后把它放入就绪队列。 2.短作业优先算法 SJF算法是以作业的长短来计算优先级,作业越短,其优先级越高。作业的长短是以作业所要求的运行时间来衡量的。SJF算法可以分别用于作业和进程调度。在把短作业优先调度算法用于作业调度时,它将从外存的作业后备队列中选择若干个估计运行时间最短的作业,优先将它们调入内存。 3、高响应比优先调度算法 高响应比优先调度算法则是既考虑了作业的等待时间,又考虑了作业的运行时间的算法,因此既照顾了短作业,又不致使长作业等待的时间过长,从而改善了处理机调度的性能。 如果我们引入一个动态优先级,即优先级是可以改变的令它随等待的时间的延长而增加,这将使长作业的优先级在等待期间不断地增加,等到足够的时间后,必然有机会获得处理机。该优先级的变化规律可以描述为: 优先权 = (等待时间 + 要求服务时间)/要求服务时间 三、实验内容 源程序: #include 动态规划作业 1、1、设某工厂自国外进口一部精密机器,由机器制造厂至出口港有三个港口可供选择,而进口港又有三个可供选择,进口后可经由两个城市到达目的地,其间的运输成本如图中所标的数字,试求运费最低的路线? 把A看作终点,该问题可分为4个阶段。 f k(S k)表示从第K阶段点S k到终点A的最短距离。 f4(B1)=20,f4(B2)=40,f4(B3)=30 f3(C1)=min[d3(C1,B1)+ f4(B1), d3(C1,B2)+ f4(B2), d3(C1,B3)+ f4(B3) ]=70,U3(C1)= B2 或B3 f3(C2)=40 ,U3(C2)= B3 f3(C3)=80 ,U3(C3)= B1或B2 或B3 f2(D1)=80 ,U2(D1)= C1 f2(D2)=70 ,U2(D2)= C2 f1(E)=110 ,U1(E)= D1或D2 所以可以得到以下最短路线, E→D1→C1→B2 / B3→A E→D2→C2→B3→A 2、习题4-2 解:1)将问题按地区分为三个阶段,三个地区的编号分别为1、2、3; 2)设Sk表示为分配给第k个地区到第n个地区的销售点数, Xk表示为分配给第k个地区的销售点数,S k+1=S k-X k Pk(Xk)表示为Xk个销售点分到第k个地区所得的利润值 fk(Sk)表示为Sk个销售点分配给第k个地区到第n个地区的最大利润值 3)递推关系式: fk(Sk)=max[ Pk(Xk)+ f k+1(S k-X k) ] k=3,2,1 f4(S4)=0 4)从最后一个阶段开始向前逆推计算 第三阶段: 设将S3个销售点(S3=0,1,2,3,4)全部分配给第三个地区时,最大利润值为: f3(S3)=max[P3(X3)] 其中X3=S3=0,1,2,3,4 表1 调度员职责范围、工作标准、作业程序 一、调度员职责范围 (一)机车调度员岗位职责范围 1、机车调度员 (1)领导全组人员严格遵章守纪,认真执行各项规章制度,认真了解机统一上班存在问题,根据天、地、人、时订出保证和预想,做到有记录、有正式台帐对照规章命令,指示及段细日班计划,机车周转图组织供质量良好的机车,组织及时整备正点出库,禁止放出违背(技规)第113条规定的机车,根据机车实际运用情况向调度提出合理化建议和要求,经济合理的运用机车,提高机车运用效率,对客车特别担当有重要任务的机车,班长应亲自检查机车并督促正点出库。 (2)按照机车检修、计划,司机途中预报掌握活件情况,根据轻重缓急,积极组织调正机车入库或组织派人积极抢修,并督促指导司机途中正确处理紧急活件,安全回段修理,10点参加洗检碰头会向工厂检修部门重点汇报运用问题和建议,掌握小辅修;中检、临修机车的交路计划,及时准确填写各种报表及机车小辅修走行公里和划清小辅修符号,正确填写机统一等台帐记录。 (3)了解出入厂机车的回送状态,督促机车的过境回送工作。 (4)督促做好机车整备工作,检查库内停留机车的防溜、防冻作业,重点检查特、专、军运、客机车、备用检修加入运用的机车,对运行中的安全问题和事故情况及时查明原因通知值班人员和有关领导果断采取措施,不得延误。 (5)督促检查本班调度员的标准化作业程序和班组建议,严格执行考勤制度和各种学习制度,做好人员的岗位思想工作。 (6)主持本班碰头会,听取领导有关指示、布置班中工作,传达有关注意、安全事项。 (7)参加交班会,详细向领导汇报机车出段和运行正点,行车安全、机车质量、定检机车出、入库时间、主要指标完成情况、上级指示贯彻执行情况、好人好事以及提出改正工作意见。 2、调度员(人事) (1)加强对机车乘务员的管理,严格掌握固定包车制及轮乘制,严格纪律,根据计划按时准确的派班、叫班,合理使用人员。 (2)掌握乘务员考勤,办理各种假的请假手续和旷工、漏乘登记,对各种假要正确挂牌,不得有私情、舞弊行为,做好岗位思想工作。 (3)严格控制和按段文件规定的便乘票使用办法,必须认真保管、回收、发放,不得超范围使用。(4)负责叫班工作,校对计划准确,派班、做到三对照,四不叫、不早叫、不晚叫、不漏叫、不错叫,对过境回送机车派线路指导。负责电子与人名牌维护确保准确无误. (5)维护固定包乘组,需要打乱的由主任批准,若有替班人员时应事先有计划的配好班次,防止三人同时替班,确保人身和行车安全正点。 (6)交班要实行对口交接,接班人员未到,交班人员不得擅自离开工作岗位,将交班四小时工作安排好,认真填写交班记录,并将有关命令、电报、文件、上级指示及未完成工作向接班人员交待清楚。(7)参加交班会向领导汇报人员动态,恢复包乘组等情况,认真执行标准化作业情况。 3、计划调度员 (1)及时收抄上级命令和指示,审查校对日班计划,落实交接班机车实际位置后的机车交路实现,按 作业调度 一、实验目的 1、对作业调度的相关内容作进一步的理解。 2、明白作业调度的主要任务。 3、通过编程掌握作业调度的主要算法。 二、实验内容及要求 1、对于给定的一组作业, 给出其到达时间和运行时间,例如下表所示: 2、分别用先来先服务算法、短作业优先和响应比高者优先三种算法给出作业的调度顺序。 3、计算每一种算法的平均周转时间及平均带权周转时间并比较不同算法的优劣。 测试数据 workA={'作业名':'A','到达时间':0,'服务时间':6} workB={'作业名':'B','到达时间':2,'服务时间':50} workC={'作业名':'C','到达时间':5,'服务时间':20} workD={'作业名':'D','到达时间':5,'服务时间':10} workE={'作业名':'E','到达时间':12,'服务时间':40} workF={'作业名':'F','到达时间':15,'服务时间':8} 运行结果 先来先服务算法 调度顺序:['A', 'B', 'C', 'D', 'E', 'F'] 周转时间: 带权周转时间: 短作业优先算法 调度顺序:['A', 'D', 'F', 'C', 'E', 'B'] 周转时间: 带权周转时间:1. 响应比高者优先算法 调度顺序:['A', 'D', 'F', 'E', 'C', 'B'] 周转时间: 带权周转时间: 五、代码 #encoding=gbk workA={'作业名':'A','到达时间':0,'服务时间':6,'结束时间':0,'周转时间':0,'带权周转时间':0} workB={'作业名':'B','到达时间':2,'服务时间':50} workC={'作业名':'C','到达时间':5,'服务时间':20} workD={'作业名':'D','到达时间':5,'服务时间':10} workE={'作业名':'E','到达时间':12,'服务时间':40} workF={'作业名':'F','到达时间':15,'服务时间':8} list1=[workB,workA,workC,workD,workE,workF] list2=[workB,workA,workC,workD,workE,workF] list3=[workB,workA,workC,workD,workE,workF] #先来先服务算法 def fcfs(list): resultlist = sorted(list, key=lambda s: s['到达时间']) return resultlist #短作业优先算法 def sjf(list): time=0 resultlist=[] for work1 in list: time+=work1['服务时间'] listdd=[] ctime=0 for i in range(time): for work2 in list: if work2['到达时间']<=ctime: (work2) if len(listdd)!=0: li = sorted(listdd, key=lambda s: s['服务时间']) (li[0]) (li[0]) ctime+=li[0]['服务时间'] listdd=[] 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开始加工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))。若T’>T(S,bπ(1)),设π’是作业集S在机器M2的等待时间为bπ(1)情况下的一个最优调度。进程调度习题
数学建模--车间作业调度问题
作业调度实例(全部代码)
作业车间调度模型
作业调度算法(先来先服务算法,短作业算法)
动态规划作业完整
(完整版)调度员职责范围、工作标准、作业程序
操作系统实验报告-作业调度
0018算法笔记——【动态规划】流水作业调度问题与Johnson法则