置换流水车间调度问题的萤火虫算法求解

置换流水车间调度问题的萤火虫算法求解
置换流水车间调度问题的萤火虫算法求解

流水车间调度问题的研究-周杭超

流水车间调度问题的研究 机械工程学院 2111302120 周杭超 如今,为了满足客户多样化与个性化的需求,多品种、小批量生产己经为一种重要的生产方式。与过去大批量、单一的生产方式相比,多品种、小批量生产可以快速响应市场,满足不同客户的不同需求,因此,受到越来越多的企业管理者的重视。特别是以流水线生产为主要作业方式的企业,企业管理者致力于研究如何使得生产均衡化,以实现生产批次的最小化,这样可以在不同批次生产不同品种的产品。在这种环境下,对于不同批次的产品生产进行合理调度排序就显得十分重要。 在传统的生产方式中,企业生产者总是力求通过增加批量来减小设备的转换次数,因此在生产不同种类的产品时,以产品的顺序逐次生产或用多条生产线同时生产。这样,必然会一次大批量生产同一产品,很容易造成库存的积压。在实际生产中如果需要生产A, B, C, D 四种产品各100件,各种产品的节拍都是1分钟,如果按照传统的做法,先生产出100件A产品,其次是B,然后是C,最后生产产品D。在这种情况下,这四种产品的总循环时间是400分钟。然而,假设客户要求的循环时间为200分钟(四种产品的需求量为50件),那么在200分钟的时间内就只能生产出产品A和产品B,因而不能满足客户需求,同时还会过量生产产品A和B,造成库存积压的浪费。这种生产就是非均衡的,如图1所示。 比较均衡的生产方式(图2 )是:在一条流水线上同时将四种产品

混在一起生产,并且确定每种品种一次生产的批量。当然,如果在混合生产时不需要对设备进行转换,那么单件流的生产方式是最好的。然而,在实际生产A, B, C , D 四种不同产品时,往往需要对流水线上的某些设备进行工装转换。单件流的生产方式在此难以实现,需要根据换装时间来确定每种产品一次生产的批量。同时,由于现实生产中不同产品在流水线上各台机器的加工时间很难相同,因此,流水线的瓶颈会随着产品组合的不同而发生变化。当同一流水线加工多产品,并且每种产品在各道工序(各台机器)的加工时间差异较大时,瓶颈就会在各道工序中发生变化,如何对各种产品的投产顺序进行优化以协调这些变化的瓶颈是生产管理中一个很重要的问题。 图1 图2 因而对流水线调度问题的研究正是迎合这种多品种、小批量生产方式的需要,我们要讨论得是如何对流水线上生产的不同产品的调度顺序进行优要化。 流水车间调度问题一般可以描述为n 个工件要在 m 台机器上加工,每个工件需要经过 m 道工序,每道工序要求不同的机器,n 个工件在 m 台机器上的加工顺序相同。工件在机器上的加工时间是给定的,设为(1,,;1,,)ij t i n j m ==L L 。问题的目标是确定个工件在每台机器上的最优加工顺序,使最大流程时间达到最小。

作业调度算法C++实现

学号: 姓名: 班级: 实验时间: 2011-10-10 实验编号 002 实验名称 作业调度算法 实验目的和 要求 通过对作业调度算法的模拟加深对作业概念和作业调度算法的理解 实验内容 (1) 模拟FCFS 算法实现作业调度 (2) 模拟短作业优先算法实现作业调度 模拟最高相应比优先算法实现作业调度 一、 实验题目 输入:作业流文件,其中存储的是一系列要执行的作业, 每个作业包括三个数据项: 作业号、作业进入系统的时间(用一小数表示,如10:10,表示成10.10)、估计执行时间(单位小时,以十进制表示) 参数用空格隔开,下面是示例: 1 8.00 0.5 2 8.15 0.3 3 8.30 0.25 4 8.35 0.20 5 8.45 0.15 6 9.00 0.10 7 9.20 0.05 其中调度时刻为最后一个作业到达系统的时间! 输出:作业号 进入内存的时间,每行输出一个作业信息。 并输出每一种调度算法的平均周转时间和平均带权周转时间。 二、 算法设计思路 首先用一个switch 函数做界面选择进入哪一种算法。用一个内来定义作业 float s;//提交时间 float j;//执行时间 float k;//开始时间 float w;//完成时间 float z;//周转时间 float d;//带权周转时间 1, 先来先服务,首先计算第一个作业的完成时间,周转时间,带权周转时间。再用for 循 环来计算剩下每一个作业的完成时间,周转时间,带权周转时间。然后再算出平均周转时间和平均带权周转时间。 2, 短作业有优先,首先计算第一个作业的完成时间,周转时间,带权周转时间。再用来计 算其他作业的。其中在for 循环中嵌套while 函数,在每一次计算前判断处于等待状态 计算机操作系统 实验报告

置换流水车间调度问题的MATLAB求解

物流运筹实务课程设计 题目:置换流水车间调度问题的MATLAB求解置换流水车间调度问题的MATLAB求解

目录 一、前言 (5) 二、问题描述 (6) 三、算法设计 (7) 四、实验结果 (15)

摘要 自从Johnson 1954年发表第一篇关于流水车间调度问题的文章以来.流水车间调度问题引起了许多学者的关注。安排合理有效的生产调度是生产活动能井然有序开展,生产资源得到最佳配置,运作过程简明流畅的有力保证。流水车间调度问题是许多实际流水线生产调度问题的简化模型。它无论是在离散制造工业还是在流程工业中都具有广泛的应用。因此,对进行研究具有重要的理论意义和工程价值。流水线调度问题中一个非常典型的问题,而置换流水线调度问题作为FSP问题的子问题,是一个著名的组合优化问题。该问题是一个典型的NP难问题,也是生产管理的核心内容。随着生产规模的扩大,流水线调度问题的优化对提高资源利用率的作用越来越大,因此对其研究具有重要的

理论和现实意义。 关键字:流水车间,单件小批量生产,jsp模型,Matlab 前言 企业资源的合理配置和优化利用很大程度上体现在车间一层的生产活动中,所以加强车间层的生产计划与控制一直在企业生产经营活动中占有十分重要的地位。车间生产计划与控制的核心理论是调度理论。车间调度问题是一类重要的组合优化问题。为适应订货式、多品种、小批量生产的需要,引进了置换流水车间调度概念。在置换流水车间调度优化后,可以避免或大大减少流程工作时间、提高生产效率。因此,研究成组技术下车间调度问题是很有必要的。生产调度,即对生产过程进行作业计划,是整个个先进生产制造系统实现管理技术、优化技术、白动化与计算机技术发展的核心。置换流水车间调度问题是许多实际生产调度问题的简化模型。生产计划与调度直接关系着企业的产出效率和生产成本,有效的计划与调度算法能最大限度地提高企业的效益。调度问题是组合优化问题,属于NP问题,难以用常规力一法求解。随着制造业的快速发展,大规模定制生产、全球化制造等思想的提出,使车间调度问题呈现出以下的新特点:约束条件多,时间复杂度高,空问复杂度高。这将导致在许多情况下,求解所建立的数学模型的快速性无法满

作业车间调度模型

基于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 #include #include struct work { i nt id; i nt arrive_time;

常规混合流水车间调度问题的等价变换

第37卷?第9期?2015-09(下)? 【45】 常规混合流水车间调度问题的等价变换 Equivalent transformation of standard hybrid flow shop scheduling problem 苏志雄,伊俊敏 SU Zhi-xiong, YI Jun-min (厦门理工学院 管理学院,厦门 361024) 摘 要:常规混合流水车间调度问题具有多阶段、同速平行机、总完工时间最小化等特征,它是研究混 合流水车间调度问题最为自然的起点。对于此类NP难问题的基本性质的研究还不够充分,其算法设计缺乏系统的理论知识指导。因此,针对常规混合流水车间调度问题的性质展开研究, 探讨了调度问题的可逆性特征,并在此基础上分析了基于逆序变换进行问题求解的可行性,为算法设计提供了理论依据。 关键词:生产调度;混合流水车间;逆序变换;等价性中图分类号:TP278 文献标识码:A 文章编号:1009-0134(2015)09(下)-0045-04Doi:10.3969/j.issn.1009-0134.2015.09(下).13 收稿日期:2015-06-03 基金项目:国家自然科学基金面上项目(71371162);福建省自然科学基金(2014J01271);厦门理工学院高层次人才 项目(YSK10009R ) 作者简介:苏志雄(1980 -),男,福建龙海人,博士,研究方向为生产计划与调度、运输调度和软计算方法。 0 引言 混合流水车间(Hybrid Flow Shop, HFS )调度问题是在流水车间(Flow Shop, FS )调度问题的基础上发展起来的,其特点是所有阶段或部分阶段上存在并行设备。常规HFS 调度问题可以描述为n 个工件要在s 个阶段的流水车间上加工,其中阶段k 具有M (k)个同速平行机、且至少有一个阶段存在两台以上的平行机,在满足一系列基本假设和约束条件的基础上去寻找一个调度解使得最大完工时间(makespan )最小。虽然不同的HFS 问题不能完全满足常规问题的所有假设和约束,但是也只是在设备加工环境、加工约束和特征、优化准则等方面存在较小的差异。常规HFS 问题作为HFS 调度问题的“模板”,其研究成果可以为更加复杂的实际调度问题研究提供基础,受到了学术界和产业界的广泛关注。 由于常规HFS 调度问题的NP 难特性[1],精确算法[2,3] 只能求解很小规模的问题。对于近似求解方法来说,启发式算法 [4,5] 求解快速,然而其求解质量还有较大的改 进空间;元启发式算法[6~10] 求解质量较高,通常需要更 多的计算资源,难以应用于大规模或者实时性要求高的问题。从已有研究来看,现有的调度算法在求解质量、求解效率方面仍存在一定的不足,其主要原因在于算法设计的理论基础不够完善,现有的调度算法尚未很好地融入领域知识(domain knowledge )。此外,文献[7]试图通过反例来说明常规HFS 问题不具备加工可逆性:对于一个给定的工件排列次序(初始阶段),采用正序、逆序调度方法可以获得不同的makespan 值;然而在给定工件排列次序的情况下,可以生成不同的工件设备指派 方案,进而可以得到一系列不同的调度解,该结论并不严谨。因此,本文进一步对常规HFS 调度问题的本质特征展开研究,首先通过逆序变换定义了常规HFS 调度问题的逆序问题,然后从数学角度证明了两者之间的等价关系,最后给出了一种基于逆序变换进行问题求解的方法,旨在为后续的研究提供理论依据。 1 数学模型 1.1 符号定义 为了叙述方便,引入下列符号: J 为待加工的工件集合,{1,,}J n = ;j 为工件编号,j J ∈;k 为阶段编号,{1,,}k s ∈ ;m 为设备编号; M (k)为阶段k 上的平行机数;(j,k)为工件j 在第k 个阶段的操作;p jk 为工件j 在阶段k 的加工时间; t jk ,c jk 为工件j 在阶段k 的开工时间、完工时间;N km 为阶段k 上的设备m 所加工的操作集合;k ?为阶段k 上的工件设备指派方案集合,集合的元 素() 1,(,,)k k k k M N N ω= 满足以下两个条件:1)'km km N N =? ,,'()m m m =??≠∈(){1,2,,}k M ;2)() 1{(,)|}k M m km N j k j ==? ; ?为 12s ?=?×?××? 为可行的工件设备指派方案集合,其元素记为ω; km π为 k 上的 设备m ); π为表示工件的加工顺序方案,其

操作系统短作业优先调度算法

课程设计 采用短作业优先调度算法调度程序 学号: 姓名: 专业: 指导老师: 日期:

目录 一、实验题目 (3) 二、课程设计的目的 (3) 三、设计内容 (3) 四、设计要求 (3) 五、主要数据结构及其说明 (4) 六、程序运行结果 (5) 七、流程图 (7) 八、源程序文件 (9) 九、实验体会 (13) 十、参考文献 (13)

摘要 在多道程序环境下,主存中有着多个进程,其数目往往多于处理机数目。这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之执行。分配处理机的任务是由处理机调度程序完成的。由于处理机是最重要的计算机资源,提高处理机的利用率及改善系统性能(吞吐量、响应时间),在很大程度上取决于处理机调度性能的好坏,因而,处理机调度便成为操作系统设计的中心问题之一。 在多道程序系统中,一个作业被提交后必须经过处理机调度后,方能获得处理机执行。对于批量型作业而言,通常需要经历作业调度和进程调度两个过程后方能获得处理机。作业调度是对成批进入系统的用户作业,根据作业控制块的信息,按一定的策略选取若干个作业使它们可以去获得处理器运行的一项工作。而对每个用户来说总希望自己的作业的周转时间是最小的,短作业优先(SJF)便是其中一种调度方法。本次课程设计主要是模拟短作业优先(SJF)调度算法。

一、实验题目 采用短作业优先算法的的进程调度程序 二、课程设计的目的 操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合一起,独立分析和解决实际问题的机会。 进一步巩固和复习操作系统的基础知识。 培养学生结构化程序、模块化程序设计的方法和能力。 提高学生调试程序的技巧和软件设计的能力。 提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。 三、设计内容 设计并实现一个采用短作业优先算的进程调度算法演示程序 四、设计要求 1. 每一个进程有一个PCB,其内容可以根据具体情况设定。 2. 进程数、进入内存时间、要求服务时间、优先级等均可以在界面上设定 3. 可读取样例数据(要求存放在外部文件中)进行进程数、进入内存时间、时间片长度、进程优先级的初始化 4. 可以在运行中显示各进程的状态:就绪、执行(由于不要求设置互斥资源与进程间同步关系,故只有两种状态) 5. 采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相应的阻塞队列

先来先服务和短作业优先调度算法

操作系统》实验一实验报告 【实验题目】:先来先服务FCFS 和短作业优先SJF进程调度算法【实验目的】 通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。 【实验内容】 问题描述: 设计程序模拟进程的先来先服务FCFS 和短作业优先SJF 调度过程。假设有n个进程分别在T1, ?,T n时刻到达系统,它们需要的服务时间分别为S1, ?,S n。分别采用先来先服务FCFS和短作业优先SJF 进程调度算法进行调度,计算每个进程的完成时间,周转时间和带权周转时间,并且统计n 个进程的平均周转时间和平均带权周转时间。 程序要求如下: 1)进程个数n;每个进程的到达时间T1, ?,T n 和服务时间S1, ?,S n;选择算法1-FCFS,2-SJF。 2)要求采用先来先服务FCFS 和短作业优先SJF分别调度进程运行,计算每个进程的周转时间,带权周转时间,并且计算所有进程的平均周转时间,带权平均周转时间; 3)输出:要求模拟整个调度过程,输出每个时刻的进程运行状态,如“时刻3:进程 B 开始运行”等等;

4)输出:要求输出计算出来的每个进程的周转时间,带权周转时间, 所有进程的平均周转时间,带权平均周转时间 【实验过程】 #include using namespace std; #define MaxNum 100 int ArrivalTime[MaxNum]; double ServiceTime[MaxNum]; double FinishTime[MaxNum]; double WholeTime[MaxNum]; double AVEWholeTime[MaxNum]; double AVEWeightWholeTime[MaxNum]; double WeightWholeTime[MaxNum]; double AverageWT_FCFS,AverageWT_SJF; double AverageWWT_FCFS,AverageWWT_SJF; double AllTime,WeightAllTime; double a[MaxNum]; int b[MaxNum]; int c[MaxNum]; int d[MaxNum]; void FCFS(); void SJF(); void FCFS() { int ProcessNum; cout<<" --------- 先来先服务算法"<

操作系统实验 FCFS和短作业优先SJF调度算法模拟

. 题目先来先服务FCFS和短作业优先SJF进程调度算法 姓名: 学号: 专业: 学院: 指导教师:林若宁 二零一八年十一月

一、实验目的 模拟单处理器系统的进程调度,分别采用短作业优先和先来先服务的进程调度算法作为进程设计算法,以加深对进程的概念及进程调度算法的理解. 二、实验内容 1. 短作业优先调度算法原理 短作业优先调度算法,是指对短作业或断进程优先调度的算法。它们可以分别可以用于作业调度和进程调度。短作业优先调度算法,是从后备队列中选择一个或若干个运行时间最短的作业,将它们调入内存运行。短进程优先调度算法,是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。 2. 先来先服务调度算法原理 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。 三、程序设计 1.概要设计 程序包括主函数、FCFS算法函数、SJF算法函数、输出函数;主函数流程:输入文件中的数据—显示各进程数据—选择算法—调用相应算法的函数—输出结果 2.算法流程

SJF算法流程图:

3.详细设计 (1)定义一个结构体 typedef struct PCB { char job_id[10]; //作业ID float Arr_time; //到达时刻 float Fun_time; //估计运行时间 float Wait_time; //等待时间 float Start_time; //开始时刻 float Fin_time; //完成时刻 float Tur_time; //周转时间 float WTur_time; //带权周转时间 int Order; //优先标记 }list; (2)先来先服务算法函数 void fcfs(list *p,int count) //先来先服务算法{ list temp; //临时结构体变量int i; int j;

流水车间调度问题的研究-周杭超

流水车间调度问题的研究-周杭超

流水车间调度问题的研究 机械工程学院 2111302120 周杭超 如今,为了满足客户多样化与个性化的需求,多品种、小批量生产己经为一种重要的生产方式。与过去大批量、单一的生产方式相比,多品种、小批量生产可以快速响应市场,满足不同客户的不同需求,因此,受到越来越多的企业管理者的重视。特别是以流水线生产为主要作业方式的企业,企业管理者致力于研究如何使得生产均衡化,以实现生产批次的最小化,这样可以在不同批次生产不同品种的产品。在这种环境下,对于不同批次的产品生产进行合理调度排序就显得十分重要。 在传统的生产方式中,企业生产者总是力求通过增加批量来减小设备的转换次数,因此在生产不同种类的产品时,以产品的顺序逐次生产或用多条生产线同时生产。这样,必然会一次大批量生产同一产品,很容易造成库存的积压。在实际生产中如果需要生产A, B, C, D 四种产品各100件,各种产品的节拍都是1分钟,如果按照传统的做法,先生产出100件A产品,其次是B,然后是C,最后生产产品D。在这种情况下,这四种产品的总循环时间是400分钟。然而,假设客户要求的循环时间为200分钟(四种产品的需求量为50件),那么在200分钟的时间内就只能生产出产品A和产品B,因而不能满足客户需求,同时还会过量生产产品A和B,造成库存积压的浪费。这种生产就是非均衡的,如图1所示。 比较均衡的生产方式(图2 )是:在一条流水线上同时将四种产品

混在一起生产,并且确定每种品种一次生产的批量。当然,如果在混合生产时不需要对设备进行转换,那么单件流的生产方式是最好的。然而,在实际生产A, B, C , D 四种不同产品时,往往需要对流水线上的某些设备进行工装转换。单件流的生产方式在此难以实现,需要根据换装时间来确定每种产品一次生产的批量。同时,由于现实生产中不同产品在流水线上各台机器的加工时间很难相同,因此,流水线的瓶颈会随着产品组合的不同而发生变化。当同一流水线加工多产品,并且每种产品在各道工序(各台机器)的加工时间差异较大时,瓶颈就会在各道工序中发生变化,如何对各种产品的投产顺序进行优化以协调这些变化的瓶颈是生产管理中一个很重要的问题。 图1 图2 因而对流水线调度问题的研究正是迎合这种多品种、小批量生产方式的需要,我们要讨论得是如何对流水线上生产的不同产品的调度顺序进行优要化。 流水车间调度问题一般可以描述为n 个工件要在 m 台机器上加工,每个工件需要经过 m 道工序,每道工序要求不同的机器,n 个工件在 m 台机器上的加工顺序相同。工件在机器上的加工时间是给定的,设为(1,,;1,,)ij t i n j m ==。问题的目标是确定个工件在每台机器上的最优加工顺序,使最大流程时间达到最小。

操作系统作业调度算法

操作系统上机测试作业调度算法算法 一、实验目的和要求(供参考) 1.掌握作业调度功能和调度程序常用算法。 2.掌握利用C语言设计实现不同调度策略的作业调度算法。 3.验证不同作业调度算法对性能的影响。 二、实验环境(供参考) 1.知识准备:学过进程管理、作业管理、处理机调度等章节的内容。 2.开发环境与工具: 硬件平台——个人计算机。 软件平台——C语言开发环境。 三、实验内容 用“先来先服务(FCFS)”算法和“最短作业优先(SJF)”算法模拟作业调度。 要求:按作业的到达顺序输入各作业需要的运行时间,按算法调度输出平均周转时间。 例如(FCFS),输入:8(到达时间0),5(到达时间2),7(到达时间3),1(到达时间6)J1 J2 J3 J4 0 8 13 20 21 输出:aver=(8+(13-2)+(20-3)+(21-6))/4=51/4 例如(SJF),输入:8(到达时间0),5(到达时间2),7(到达时间3),1(到达时间6)J1 J4 J2 J3 0 8 9 14 21 输出:aver=(8+(9-6)+(14-2)+(21-3))/4=42/4 注:输入的格式任意,只要输出平均周转时间即可。

四、代码(带注释) 1、先来先服务 实验结果(截图呈现) 代码: #include using namespace std; class Fcfs { private: int num[10]; //作业编号 double arriveTime[10]; //到达时间 double startTime[10]; //开始时间,进内存时间 double workTime[10]; //工作时间 double finishTime[10]; //完成时间 double cirTime[10]; //存放每一个作业的周转时间 //double freeTime[10]; //上一个作业已结束,但下一个作业还未到,存放这一段空闲时间 public: Fcfs(int n) //n为作业数目 { cout<<"默认第一个作业的到达时间为0。"<

流水车间调度问题的研究周杭超

流水车间调度问题的研究 机械工程学院2111302120 周杭超 如今,为了满足客户多样化与个性化的需求,多品种、小批量生产己经为一种重要的生产方式。与过去大批量、单一的生产方式相比,多品种、小批量生产可以快速响应市场,满足不同客户的不同需求,因此,受到越来越多的企业管理者的重视。特别是以流水线生产为主要作业方式的企业,企业管理者致力于研究如何使得生产均衡化,以实现生产批次的最小化,这样可以在不同批次生产不同品种的产品。在这种环境下,对于不同批次的产品生产进行合理调度排序就显得十分重要。 在传统的生产方式中,企业生产者总是力求通过增加批量来减小设备的转换次数,因此在生产不同种类的产品时,以产品的顺序逐次生产或用多条生产线同时生产。这样,必然会一次大批量生产同一产品,很容易造成库存的积压。在实际生产中如果需要生产A, B, C, D 四种产品各100件,各种产品的节拍都是1分钟,如果按照传统的做法,先生产出100件A产品,其次是B,然后是C,最后生产产品D。在这种情况下,这四种产品的总循环时间是400分钟。然而,假设客户要求的循环时间为200分钟(四种产品的需求量为50件),那么在200分钟的时间就只能生产出产品A和产品B,因而不能满足客户需求,同时还会过量生产产品A和B,造成库存积压的浪费。这种生产就是非均衡的,如图1所示。 比较均衡的生产方式(图2 )是:在一条流水线上同时将四种产品

混在一起生产,并且确定每种品种一次生产的批量。当然,如果在混合生产时不需要对设备进行转换,那么单件流的生产方式是最好的。然而,在实际生产A, B, C , D 四种不同产品时,往往需要对流水线上的某些设备进行工装转换。单件流的生产方式在此难以实现,需要根据换装时间来确定每种产品一次生产的批量。同时,由于现实生产中不同产品在流水线上各台机器的加工时间很难相同,因此,流水线的瓶颈会随着产品组合的不同而发生变化。当同一流水线加工多产品,并且每种产品在各道工序(各台机器)的加工时间差异较大时,瓶颈就会在各道工序中发生变化,如何对各种产品的投产顺序进行优化以协调这些变化的瓶颈是生产管理中一个很重要的问题。 图1 图2 因而对流水线调度问题的研究正是迎合这种多品种、小批量生产方式的需要,我们要讨论得是如何对流水线上生产的不同产品的调度顺序进行优要化。 流水车间调度问题一般可以描述为n 个工件要在 m 台机器上加工,每个工件需要经过 m 道工序,每道工序要求不同的机器,n 个工件在 m 台机器上的加工顺序相同。工件在机器上的加工时间是给定的,设为(1,,;1,,)ij t i n j m ==。问题的目标是确定个工件在每台机器上的最优加工顺序,使最大流程时间达到最小。

作业调度实验报告

实验二作业调度 一.实验题目 1、编写并调试一个单道处理系统的作业等待模拟程序。 作业调度算法:分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。 (1)先来先服务算法:按照作业提交给系统的先后顺序来挑选作业,先提交的先被挑选。 (2)最短作业优先算法:是以进入系统的作业所提出的“执行时间”为标准,总是优先选取执行时间最短的作业。 (3)响应比高者优先算法:是在每次调度前都要计算所有被选作业(在后备队列中)的响应比,然后选择响应比最高的作业执行。 2、编写并调度一个多道程序系统的作业调度模拟程序。 作业调度算法:采用基于先来先服务的调度算法。可以参考课本中的方法进行设计。 对于多道程序系统,要假定系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源要求。 二.实验目的: 本实验要求用高级语言(C语言实验环境)编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解 三 .实验过程 <一>单道处理系统作业调度 1)单道处理程序作业调度实验的源程序: 执行程序: 2)实验分析:

1、由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU 时限等因素。 2、每个作业由一个作业控制块JCB 表示,JCB 可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W 。 3、对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。 3)流程图: 二.最短作业优先算法 三.高响应比算法 图一.先来先服务流程图 4)源程序: #include <> #include <> #include <> #define getpch(type) (type*)malloc(sizeof(type)) #define NULL 0 int n; 代替 代替

各类作业调度算法

实验二作业调度实验 一. 目的要求: 用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解。 二. 例题:为单道批处理系统设计一个作业调度程序。 由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU时限等因素。 作业调度算法:采用先来先服务(FCFS)调度算法,即按作业提交的先后次序进行调度。总是首先调度在系统中等待时间最长的作业。 每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。 作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。 各个等待的作业按照提交时刻的先后次序排队,总是首先调度等待队列中队首的作业。 每个作业完成后要打印该作业的开始运行时刻、完成时刻、周转时间和带权周转时间,这一组作业完成后要计算并打印这组作业的平均周转时间、带权平均周转时间。 调度算法的流程图如下图所示。

三 . 实习题: 1、编写并调试一个单道处理系统的作业等待模拟程序。 作业等待算法:分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。 对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间,以比较各种算法的优缺点。 2、编写并调度一个多道程序系统的作业调度模拟程序。

作业调度算法:采用基于先来先服务的调度算法。可以参考课本中的方法进行设计。 对于多道程序系统,要假定系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源要求。 3、编写并调试一个多道程序系统的作业调度模拟程序。 作业调度算法:采用基于优先级的作业调度。 可以参考课本中的例子自行设计。 三 . 实验过程: 1、编写并调试一个单道处理系统的作业等待模拟程序。 先来先服务(FCFS): main.cpp: /* **先来先服作业调度算法模拟 */ #include #include #define MAX_SOURCE 1000 //资源总数(对于单通道的作业调度可以忽略系统资源问题) using namespace std; struct jobCB { string name; double subtime;//提交时间 double runtime;//运行时间 double source;//资源 char state;//进程状态 struct jobCB *next; //链指针 }*ready,*rail,*p; int length; double maxsource; double now_source; double allTi;//总周转时间 double allWi;//总带权周转时间 double time;//时钟 void init()

基于遗传算法的流水车间调度问题

中文摘要 流水车间调度问题是研究多个工件在若干个机器上的加工次序的问题,有效的调度算法对企业提高生产效率有着重要作用。本文使用遗传算法求解流水车间调度问题,把一个染色体编码成若干个自然数,表示相应工件的排序权值;通过简单交换两个父代的若干相同位置的基因,产生能够继承父代优良特性的子代;并且采用均匀变异,更好地保持种群中的基因的多样性。实验表明,该方法能取得较好的效果。 关键字:遗传算法,流水车间调度方法,实数编码,基因链码,群体,适应度。

外文摘要 Abstract: Flow-shop scheduling problem study the problem the processing sequence of A plurality of workpieces on some working machine,and it makes good effects on proving production efficiency to the industries with effective methods.In the case,we deal with flow-shop scheduling problem using a algorithm,the Genetic Algorithm.There is a chromosome we've just coded into some natural numbers to represent the weight order of these workpieces; exchanging simply two fathers' places of some gene to produce new children that carried good feature on two fathers;we also use the Uniform Mutation,and it keeps its diversity of gene on the population.This experiment show this method can achieve good results. Key Words: Genetic Algorithm, Flow-shop scheduling problem,natural number coding,genic bar code,group,fitness.

短作业优先调度算法

《操作系统》课程实验报告实验名称:短作业优先调度算法 姓名:陈凯 学号:541413430202 地点:四教楼301 指导老师:张旭 专业班级:嵌入式软件14-02

一、实验目的: 测试数据可以随即输入或从文件中读入。 必须要考虑到作业的到达时间 最终能够计算每一个作业的周转时间。 二、实验内容: 模拟实现短作业调度算法,具体如下: 设置作业体:作业名,作业的到达时间,服务时间,作业间的链接指针 进程初始化:由用户输入作业名、作业的到达时间和服务时间进行初始化。 显示函数:1、显示当前调度的是哪个作业,后备队列中有哪些作业 2、最终显示每个作业的作业名、到达时间、服务时间、完成时间和周转时间 排序函数:对就已到达的作业按照服务时间进行排序。注意考虑到达时间 调度函数:每次从已到达的作业队列队首调度优一个作业执行。 删除函数:作业结束后撤销。 三、实验代码 #include structsjf //定义进程的结构体 { char name[10]; //进程名 floatarrivetime; //到达时间 floatservicetime; //服务时间 floatstarttime; //开始时间 floatfinishtime; //完成时间 floatzztime; //周转时间 floatdqzztime; //带权周转时间 }; sjf b[100]; //定义短作业优先算法进程的最大数量 voidSinput(sjf *p,int N) //输入函数 { int i; printf("输入进程的名称、到达时间、服务时间:\n");

流水车间

基于遗传算法的流水车间调度方法 2.1引言流水车间(聊ow Shop)调度问题是许多实际流水线生产调度问题的简化模型,无论在离散制造工业还是在流程工业中都具有广泛的应用。研究和解决好调度问题,能极大提高企业的生产效率,从而提高企业的竞争力。自从Jolln∞n 1954年发表第一篇关于流水车间调度问题的文章以来,流水车间调度问题引起了许多学者的关注,提出了许多解决的方法。整数规划和分枝定界法是寻求最优解的常用方法,但是对于一些大规模甚至中等规模的问题,整数规划和分枝定界方法仍然不是很有效。另一方面,流水车间调度问题属NP完全问题,因此一些启发式算法被相继提出,以遗传算法、模拟退火、禁忌搜索以及人工神经网络为代表的智能化优化技术迅速发展来解决流水车间调度问题,受到人们的普遍关注。其中遗传算法以其优良的计算性能和显着的应用效果而特别引人注目,很多启发式混合方法都是在此基础上发展起来的。 遗传算法(G蛐ctic~90rithm GA)是一种模拟生物进化过程的随机搜索算法,它借用了达尔文的进化论及孟德尔的生物遗传学的思想,通过在种群内进行自然选择、遗传、变异等进化机制,实现个体适应度的提高。这体现了自然界中“物竞天择、适者生存’’的进化过程。其自组织、自适应、自学习和种群进化能力使其适合于大规模复杂优化问题,应用于全局搜索等参数优化计算领域,也适用于车间调度问题,是应用最广泛的一种演化计算方法。它作为一种非确定性的拟生态随机优化算法,在过去20年中得到了广泛的应用。由于其具有不依赖于问题模型的特性、全局最优性、随机转移性而非确定性、隐含并行性等特点,因此遗传算法更适合复杂问题的优化,比与其它优化技术相比存在显著的优势。随着计算机技术的发展,遗传算法越来越受到人们的重视,并在机器学习、模式识别、神经网络、优化控制、组合优化等领域得到了成功的应用乜¨。调度问题成为遗传算法领域里的一个热门话题,原因是该问题表现出约束组合优化问题的所有特征,并且成为测试新算法思想的范例。 2.2遗传算法(Genetic~gorithm简称G∞14浙江工业大学硕士学位论文 2.2.1遗传算法的生物学背景遗传算法是一种新兴的、发展速度非常快的、高效的随机搜索与优化的方法。遗传算法基于生物进化理论,是对生物进化的一种数抽象模拟,将达尔文进化论中的自然遗传、自然选择的机制引入到数学理论中,形成了一种具有鲜明特色的优化方法。该法作为一种搜索和自适应优化方法,主要用于求解组合优化问题以及存在不可微的复杂系统的优化问题。地球上的生物,都是经过长期进化而形成的。根据达尔文的自然选择学说,地球上的生物具有很强的繁殖能力。在繁殖过程中,大多数生物通过遗传保持相似的后代;部分生物由于变异,后代具有明显差别,甚至形成新物种。正是由于生物的不断繁殖后代,生物数目大量增加,而自然界中生物赖以生存的资源却是有限的,因此,为了生存,生物就需要竞争。生物在生存竞争中,根据对环境的适应能力,适者生存、不适者消亡,自然界中的生物,就是根据这种“优胜劣汰”的原则,不断地进行进化。遗传算法就是借用生物进化的规律,通过繁殖一竞争一再繁殖一再竞争,实现优胜劣汰,一步一步地逼近问题的最优解。遗传算法是基于自然选择和基因遗传学原理的搜索算法。它将“适者生存”这一基本的达尔文进化理论引入串结构,并且在串与串之间进行有组织但又随机的信息交换。伴随着算法的运行,优良的品质被逐步保留并加以组合,从而不断产生更佳的个体。这一过程就如生物进化一样,好的特征被不断继承下来,坏的特征被逐渐地淘汰。新一代个体中包含着上一代个体的大量信息,新一代个体不断地在总体特征上胜过旧的一代,从而使整个群体向前进化发展。遗传算法的中心问题是鲁棒性(R0bustness),所谓鲁棒性是指能在多变的环境中通过效率及功能之间的协调平衡以求生存的能力。人工系统很难达到如生物系统那样的鲁棒性。遗传算法吸取了自然生物系统“适

相关文档
最新文档