优化调度算法
㈠ 什么是智能优化算法
群体智能优化算法是一类基于概率的随机搜索进化算法,各个算法之间存在结构、研究内容、计算方法等具有较大的相似性。因此,群体智能优化算法可以建立一个基本的理论框架模式:
Step1:设置参数,初始化种群;
Step2:生成一组解,计算其适应值;
Step3:由个体最有适应着,通过比较得到群体最优适应值;
Step4:判断终止条件示否满足?如果满足,结束迭代;否则,转向Step2;
各个群体智能算法之间最大不同在于算法更新规则上,有基于模拟群居生物运动步长更新的(如PSO,AFSA与SFLA),也有根据某种算法机理设置更新规则(如ACO)。
(1)优化调度算法扩展阅读
优化算法有很多,经典算法包括:有线性规划,动态规划等;改进型局部搜索算法包括爬山法,最速下降法等,模拟退火、遗传算法以及禁忌搜索称作指导性搜索法。而神经网络,混沌搜索则属于系统动态演化方法。
优化思想里面经常提到邻域函数,它的作用是指出如何由当前解得到一个(组)新解。其具体实现方式要根据具体问题分析来定。
㈡ 求遗传算法车辆调度优化问题的建模模型和MATLAB源代码
1、要看你组合优化是属于哪种问题,一般的组合优化都是混合整数线性或非线性的,那么就不行了,因此要对遗传算法改进才能计算。2、如果有现成的工具箱求解你的组合优化问题肯定要方便些,但碰到具体问题,可能要对参数进行一些设置更改,所以最好能有编程基础,那样就可以自己修改工具箱里面的参数或策略了对你的补充问题,组合优化问题一般都是用matlab和lingo实现吧。建议买一本数学建模的书看一看,都涉及到组合优化问题,也可以下载论文看看。lingo对编程要简单些,主要是求混合规划,缺点是似乎还不能用上多目标问题,一般的组合优化都属于多目标问题。但是matlab功能强大的多。
㈢ 求一个遗传算法进行电力系统优化调度 代码
发一份自编的MATLAB遗传算法代码,用简单遗传算法(Simple Genetic Algorithm or Standard Genetic Algorithm ,SGA)求取函数最大值,初版编写于7年前上学期间,当时是MATLAB 5.x,在算法运行效率方面做了修改,主要是采用矩阵操作减少了循环。
遗传算法为群体优化算法,也就是从多个初始解开始进行优化,每个解称为一个染色体,各染色体之间通过竞争、合作、单独变异,不断进化。
优化时先要将实际问题转换到遗传空间,就是把实际问题的解用染色体表示,称为编码,反过程为解码,因为优化后要进行评价,所以要返回问题空间,故要进行解码。SGA采用二进制编码,染色体就是二进制位串,每一位可称为一个基因;解码时应注意将染色体解码到问题可行域内。
遗传算法模拟“适者生存,优胜劣汰”的进化机制,染色体适应生存环境的能力用适应度函数衡量。对于优化问题,适应度函数由目标函数变换而来。一般遗传算法求解最大值问题,如果是最小值问题,则通过取倒数或者加负号处理。SGA要求适应度函数>0,对于<0的问题,要通过加一个足够大的正数来解决。这样,适应度函数值大的染色体生存能力强。
遗传算法有三个进化算子:选择(复制)、交叉和变异。
SGA中,选择采用轮盘赌方法,也就是将染色体分布在一个圆盘上,每个染色体占据一定的扇形区域,扇形区域的面积大小和染色体的适应度大小成正比。如果轮盘中心装一个可以转动的指针的话,旋转指针,指针停下来时会指向某一个区域,则该区域对应的染色体被选中。显然适应度高的染色体由于所占的扇形区域大,因此被选中的几率高,可能被选中多次,而适应度低的可能一次也选不中,从而被淘汰。算法实现时采用随机数方法,先将每个染色体的适应度除以所有染色体适应度的和,再累加,使他们根据适应度的大小分布于0-1之间,适应度大的占的区域大,然后随机生成一个0-1之间的随机数,随机数落到哪个区域,对应的染色体就被选中。重复操作,选出群体规模规定数目的染色体。这个操作就是“优胜劣汰,适者生存”,但没有产生新个体。
交叉模拟有性繁殖,由两个染色体共同作用产生后代,SGA采用单点交叉。由于SGA为二进制编码,所以染色体为二进制位串,随机生成一个小于位串长度的随机整数,交换两个染色体该点后的那部分位串。参与交叉的染色体是轮盘赌选出来的个体,并且还要根据选择概率来确定是否进行交叉(生成0-1之间随机数,看随机数是否小于规定的交叉概率),否则直接进入变异操作。这个操作是产生新个体的主要方法,不过基因都来自父辈个体。
变异采用位点变异,对于二进制位串,0变为1,1变为0就是变异。采用概率确定变异位,对每一位生成一个0-1之间的随机数,看是否小于规定的变异概率,小于的变异,否则保持原状。这个操作能够使个体不同于父辈而具有自己独立的特征基因,主要用于跳出局部极值。
遗传算法认为生物由低级到高级进化,后代比前一代强,但实际操作中可能有退化现象,所以采用最佳个体保留法,也就是曾经出现的最好个体,一定要保证生存下来,使后代至少不差于前一代。大致有两种类型,一种是把出现的最优个体单独保存,最后输出,不影响原来的进化过程;一种是将最优个体保存入子群,也进行选择、交叉、变异,这样能充分利用模式,但也可能导致过早收敛。
由于是基本遗传算法,所以优化能力一般,解决简单问题尚可,高维、复杂问题就需要进行改进了。
下面为代码。函数最大值为3905.9262,此时两个参数均为-2.0480,有时会出现局部极值,此时一个参数为-2.0480,一个为2.0480。算法中变异概率pm=0.05,交叉概率pc=0.8。如果不采用最优模式保留,结果会更丰富些,也就是算法最后不一定收敛于极值点,当然局部收敛现象也会有所减少,但最终寻得的解不一定是本次执行中曾找到过的最好解。
(注:一位网名为mosquitee的朋友提醒我:原代码的变异点位置有问题。检验后发现是将最初的循环实现方法改为矩阵实现方法时为了最优去掉mm的第N行所致,导致变异点位置发生了变化,现做了修改,修改部分加了颜色标记,非常感谢mosquitee,2010-4-22)
% Optimizing a function using Simple Genetic Algorithm with elitist preserved
%Max f(x1,x2)=100*(x1*x1-x2).^2+(1-x1).^2; -2.0480<=x1,x2<=2.0480
% Author: Wang Yonglin ([email protected])
clc;clear all;
format long;%设定数据显示格式
%初始化参数
T=100;%仿真代数
N=80;% 群体规模
pm=0.05;pc=0.8;%交叉变异概率
umax=2.048;umin=-2.048;%参数取值范围
L=10;%单个参数字串长度,总编码长度2L
bval=round(rand(N,2*L));%初始种群
bestv=-inf;%最优适应度初值
%迭代开始
for ii=1:T
%解码,计算适应度
for i=1:N
y1=0;y2=0;
for j=1:1:L
y1=y1+bval(i,L-j+1)*2^(j-1);
end
x1=(umax-umin)*y1/(2^L-1)+umin;
for j=1:1:L
y2=y2+bval(i,2*L-j+1)*2^(j-1);
end
x2=(umax-umin)*y2/(2^L-1)+umin;
obj(i)=100*(x1*x1-x2).^2+(1-x1).^2; %目标函数
xx(i,:)=[x1,x2];
end
func=obj;%目标函数转换为适应度函数
p=func./sum(func);
q=cumsum(p);%累加
[fmax,indmax]=max(func);%求当代最佳个体
if fmax>=bestv
bestv=fmax;%到目前为止最优适应度值
bvalxx=bval(indmax,:);%到目前为止最佳位串
optxx=xx(indmax,:);%到目前为止最优参数
end
Bfit1(ii)=bestv; % 存储每代的最优适应度
%%%%遗传操作开始
%轮盘赌选择
for i=1:(N-1)
r=rand;
tmp=find(r<=q);
newbval(i,:)=bval(tmp(1),:);
end
newbval(N,:)=bvalxx;%最优保留
bval=newbval;
%单点交叉
for i=1:2:(N-1)
cc=rand;
if cc<pc
point=ceil(rand*(2*L-1));%取得一个1到2L-1的整数
ch=bval(i,:);
bval(i,point+1:2*L)=bval(i+1,point+1:2*L);
bval(i+1,point+1:2*L)=ch(1,point+1:2*L);
end
end
bval(N,:)=bvalxx;%最优保留
%位点变异
mm=rand(N,2*L)<pm;%N行
mm(N,:)=zeros(1,2*L);%最后一行不变异,强制赋0
bval(mm)=1-bval(mm);
end
%输出
plot(Bfit1);% 绘制最优适应度进化曲线
bestv %输出最优适应度值
optxx %输出最优参数
㈣ 为什么节能调度算法一般都是np-hard问题
什么是NP问题
概念1:
在计算机学科中,存在多项式时间的算法的一类问题,称之为P类问题;而像梵塔问题、推销员旅行问题、(命题表达式)可满足问题这类,至今没有找到多项式时间算法解的一类问题,称之为NP类问题。
概念2:
多项式时间(Polynomial time)在计算复杂度理论中,指的是一个问题的计算时间m(n)不大于问题大小n的多项式倍数。任何抽象机器都拥有一复杂度类,此类包括可于此机器以多项式时间求解的问题。
以数学描述的话,则可说m(n) = O(n),此n为一常数值(依问题而定)
拿推销员旅行问题为例,假设推销员亨利有向6个城市推销公司产品的任务,并规定了一个旅行预算。他手中有一张航班票价表,他要从A城开始走遍图中的6个城市后返回A城,并且不超出预算,请你帮他找出应走的路线。如果给出的预算宽裕,则任务很简单;如果预算比较紧张,你就得认真设计路线了。你得考虑每一种可能的次序,以使旅费最少。
而NP问题中最困难的问题称之为NP完全问题(NP-complete),已经证明的包括:电话网络的最优几何设计、格子棋的最佳走法。根据库克定理,任意一个NP完全问题如果能够在多项式时间内解决,则所有的NP问题都能在多项式时间内解决,而至今这一问题仍无答案。
什么是非确定性问题呢?有些计算问题是确定性的,比如加减乘除之类,你只要按照公式推导,按部就班一步步来,就可以得到结果。但是,有些问题是无法按部就班直接地计算出。比如,找大质数的问题。有没有一个公式,你一套公式,就可以一步步推算出来,下一个质数应该是多少呢?这样的公式是没有的。再比如,大的合数分解质因数的问题,有没有一个公式,把合数代进去,就直接可以算出,它的因子各自是多少?也没有这样的公式。
这种问题的答案,是无法直接计算得到的,只能通过间接的“猜算”来得到结果。这也就是非确定性问题。而这些问题的通常有个算法,它不能直接告诉你答案是什么,但可以告诉你,某个可能的结果是正确的答案还是错误的。这个可以告诉你“猜算”的答案正确与否的算法,假如可以在多项式时间(多项式时间: 运行时间最多是输入量的多项式函数)内算出来,就叫做多项式非确定性问题。而如果这个问题的所有可能答案,都是可以在多项式时间内进行正确与否的验算的话,就叫完全多项式非确定问题。
完全多项式非确定性问题可以用穷举法得到答案,一个个检验下去,最终便能得到结果。但是这样算法的复杂程度,是指数关系,因此计算的时间随问题的复杂程度成指数的增长,很快便变得不可计算了。人们发现,所有的完全多项式非确定性问题,都可以转换为一类叫做满足性问题的逻辑运算问题。既然这类问题的所有可能答案,都可以在多项式时间内计算,人们于是就猜想,是否这类问题,存在一个确定性算法,可以在指数时间内,直接算出或是搜寻出正确的答案呢?这就是着名的NP=P?的猜想。
解决这个猜想,无非两种可能,一种是找到一个这样的算法,只要针对某个特定NP完全问题找到一个算法,所有这类问题都可以迎刃而解了,因为他们可以转化为同一个问题。另外的一种可能,就是这样的算法是不存在的。那么就要从数学理论上证明它为什么不存在。
前段时间轰动世界的一个数学成果,是几个印度人提出了一个新算法,可以在多项式时间内,证明某个数是或者不是质数,而在这之前,人们认为质数的证明,是个非多项式问题。可见,有些看来好象是非多项式的问题,其实是多项式问题,只是人们一时还不知道它的多项式解而已。
什么叫做NP问题,什么叫做NPC问题?
首先说明一下问题的复杂性和算法的复杂性的区别,下面只考虑时间复杂性。算法的复杂性是指解决问题的一个具体的算法的执行时间,这是算法的性质;问题的复杂性是指这个问题本身的复杂程度,是问题的性质。比如对于排序问题,如果我们只能通过元素间的相互比较来确定元素间的相互位置,而没有其他的附加可用信息,则排序问题的复杂性是O(nlgn),但是排序算法有很多,冒泡法是O(n^2),快速排序平均情况下是O(nlgn)等等,排序问题的复杂性是指在所有的解决该问题的算法中最好算法的复杂性。问题的复杂性不可能通过枚举各种可能算法来得到,一般都是预先估计一个值,然后从理论上证明。
为了研究问题的复杂性,我们必须将问题抽象,为了简化问题,我们只考虑一类简单的问题,判定性问题,即提出一个问题,只需要回答yes或者no的问题。任何一般的最优化问题都可以转化为一系列判定性问题,比如求图中从A到B的最短路径,可以转化成:从A到B是否有长度为1的路径?从A到B是否有长度为2的路径?。。。从A到B是否有长度为k的路径?如果问到了k的时候回答了yes,则停止发问,我们可以说从A到B的最短路径就是k。
如果一个判定性问题的复杂度是该问题的一个实例的规模n的多项式函数,则我们说这种可以在多项式时间内解决的判定性问题属于P类问题。P类问题就是所有复杂度为多项式时间的问题的集合。
㈤ 怎么优化hadoop任务调度算法
首先介绍了Hadoop平台下作业的分布式运行机制,然后对Hadoop平台自带的4种任务调度器做分析和比较,最后在分析JobTracker类文件的基础上指出了创建自定义任务调度器所需完成的工作。
首先Hadoop集群式基于单服务器的,只有一个服务器节点负责调度整个集群的作业运行,主要的具体工作是切分大数据量的作业,指定哪些Worker节点做Map工作、哪些Worker节点做Rece工作、与Worker节点通信并接受其心跳信号、作为用户的访问入口等等。其次,集群中的每个Worker节点相当于一个器官,运行着主节点所指派的具体作业。这些节点会被分为两种类型,一种是接收分块之后的作业并做映射工作。另一种是负责把前面所做的映射工作按照约定的规则做一个统计。
Task-Tracker通过运行一个简单循环来定期地发送心跳信号(heartbeat)给JobTracker.这个心跳信号会把TaskTracker是否还在存活告知JobTracker,TaskTracker通过信号指明自己是否已经准备
好运行新的任务.一旦TaskTracker已经准备好接受任务,JobTracker就会从作业优先级表中选定一个作业并分配下去.至于到底是执行Map任务还是Rece任务,是由TaskTracker的任务槽所决定的.默认的任务调度器在处理Rece任务之前,会优先填满空闲的Map任务槽.因此,如果TaskTracker满足存在至少一个空闲任务槽时,JobTracker会为它分配Map任务,否则为它选择一个Rece任务.TaskTracker在运行任务的时候,第一步是从共享文件系统中把作业的JAR文件复制过来,从而实现任务文件的本地化.第二步是TaskTracker为任务新建一个本地文件夹并把作业文件解压在此目录中.第三步是由Task-Tracker新建一个TaskRunner实例来运行该任务.
Hadoop平台默认的调度方案就是JobQueueTaskScheler,这是一种按照任务到来的时间先后顺序而执行的调度策略.这种方式比较简单,JobTracker作为主控节点,仅仅是依照作业到来的先后顺序而选择将要执行的作业.当然,这有一定的缺陷,由于Hadoop平台是默认将作业运行在整个集群上的,那么如果一个耗时非常大的作业进入执行期,将会导致其余大量作业长时间得不到运行.这种长时间运行的优先级别并不高的作业带来了严重的作业阻塞,使得整个平台的运行效率处在较低的水平.Hadoop平台对这种FIFO(FirstINAndFirstOut)机制所给出的解决办法是调用SetJobPriority()方法,通过设置作业的权重级别来做平衡调度.
FairScheler是一种“公平”调度器,它的目标是让每个用户能够公平地共享Hadoop集群计算能力.当只有一个作业运行的时候,它会得到整个集群的资源.随着提交到作业表中作业的增多,Hadoop平台会把集群中空闲出来的时间槽公平分配给每个需要执行的作业.这样即便其中某些作业需要较长时间运行,平台仍然有能力让那些短作业在合理时间内完成[3].FairScheler支持资源抢占,当一个资源池在一定时段内没有得到公平共享时,它会终止该资源池所获得的过多的资源,同时把这些释放的资源让给那些资源不足的资源池.
Hadoop平台中的CapacityScheler是由Yahoo贡献的,在调度器上,设置了三种粒度的对象:queue,job,task.在该策略下,平台可以有多个作业队列,每个作业队列经提交后,都会获得一定数量的TaskTracker资源.具体调度流程如下.
(1)选择queue,根据资源库的使用情况从小到大排序,直到找到一个合适的job.
(2)选择job,在当前所选定的queue中,按照作业提交的时间先后以及作业的权重优先级别进行排序,选择合适的job.当然,在job选择时还需要考虑所选作业是否超出目前现有的资源上限,以及资源池中的内存是否够该job的task用等因素.
(3)选择task,根据本地节点的资源使用情况来选择合适的task.
虽然Hadoop平台自带了几种调度器,但是上述3种调度方案很难满足公司复杂的应用需求.因此作为平台的个性化使用者,往往需要开发自己的调度器.Hadoop的调度器是在JobTracker中加载和调用的,因此开发一个自定义的调度器就必须搞清楚JobTracker类文件的内部机制.作为Hadoop平台的核心组件,JobTracker监控着整个集群的作业运行情况并对资源进行管理调度.每个Task-Tracker每隔3s通过heartbeat向JobTracker汇报自己管理的机器的一些基本信息,包括内存使用量、内存的剩余量以及空闲的slot数目等等[5].一
旦JobTracker发现了空闲slot,便会调用调度器中的AssignTask方法为该TaskTracker分配task。
㈥ 车辆优化调度理论与方法
国外车辆优化调度研究已广泛用于生产、生活的各个方面,如报纸投递及线路的优化、牛奶配送及送达线路的优化、电话预订货物的车辆载货和线路设计、垃圾车的线路优化及垃圾站选址优化、连锁商店的送货及线路优化等等。目前,研究水平已有很大发展,其理论成果除在汽车运输领域外,在水运、航空、通讯、电力、工业管理、计算机应用等领域也有一定的应用,还用于航空乘务员轮班安排、轮船公司运送货物经过港口与货物安排的优化设计、交通车线路安排、生产系统中的计划与控制等多种组合优化问题。 在国内,该问题的系统研究还不多见。近年来本书作者及课题组成员承担了国家自然科学基金《城市货运汽车的科学调度》、《货运车辆调度优化理论及应用研究》和四川省重点软科学课题《城市货运卡车集中优化调度研究》等项目的研究工作,对车辆优化调度的基础理论及各类问题进行了较为系统的研究,开发了基于地理信息系统的可视化物流配送车辆优化调度系统软件包,2000年11月在深圳第二届中国高新技术成果交易会上发布,受到好评和重视;发表了三十多篇相关论文;获得过一项省部级科技进步二等奖。2001年又获得了国家自然科学基金项目《不确定信息条件下动态车辆路径》。
本书展示的主要是国家自然科学基金项目《货运车辆调度优化理论及应用研究》(编号79700019)的研究成果,在多项课题的研究中,取得一批成果,这本书反映的仅仅是一个侧面。在课题的研究和书稿的写作过程中,参阅了大量的国内外文献,书稿也反映了相关方面目前国际的前沿动态。该领域的研究内容非常广泛,本书还有许多方面未涉及,期望在新的课题研究中取得突破。
作者:李军
出 版 社:中国物资出版社
作者简介:李军,1967年生,管理学博士,西南交通大学经济管理学院教授。主要教学和科学研究领域为物流工程、决策分析、博弈理论及应用。主持和完成国家自然科学基金资助项目及其他省部级以上项目10余项,并获得省科技进步二等奖一项,发表论文30余篇。主编、参编教材三本,获得铁道部优秀教材一等奖、二等奖各一项。
目录
第一章 绪论
1.1 物流配送车辆优化调度的概述
1.2 物流配送车辆优化调度的研究动态和水平
1.3 货运车辆优化调度问题的分类
第二章 基本理论
2.1 组合优化与计算复杂性
2.2 启发式算法理论
2.3 遗传算法理论
第三章 基本问题
3.1 图的基本概念
3.2 最小生成树
3.3 最短路问题
3.4 最大流问题
3.5 最小费用流问题
3.6 中国邮递员问题
3.7 旅行商问题
第四章 集货或送货非满载车辆优化调度启发式算法
4.1 引言
4.2 模型分析
4.3 C—W节约启发式算法
4.4 分派启发式算法
4.5 多车场多车型问题
第五章 集货和送货一体化非满载车辆优化调度启发式算法
5.1 引言
5.2 网络启发式算法
5.3 组合启发式算法
第六章 非满载车辆优化调度遗传算法
6.1 自然数编码遗传算法理论研究
6.2 旅行商问题的遗传算法
6.3 一般车辆优化调度问题的遗传算法
6.4 时间窗车辆优化调度问题的遗传算法
第七章 单车型满载车辆的优化调度
7.1 引言
7.2 调度解的获得
7.3 解的调整
7.4 解的连通化
7.5 线路的组织与调整
第八章 多车型满载车辆的优化调度启发式算法
8.1 概述
8.2 算法分析
8.3 实例分析
第九章 车辆优化调度算法的计算机实现
9.1 系统基础数据
9.2 系统算法实例
第十章 基于地理信息系统的物流配送可视化车辆优化调度系统
10.1 系统基础设计
10.2 系统集成结构设计
10.3 系统总体设计
参考文献
㈦ 生产管理中 调度的 多级多机 是什么意思 有什么优化算法解决
我做调度多年,但没听说过这个词,英文叫什么?
我的理解是:多分层,多机器
也就是排计划的时候要考虑到产品的多层性,和在多个机器上生产的特性
所以,如果能有效得利用运筹学的原理,在最短的时间内做最多的产品,不浪费人力,工时,地方,成本就是最优化的调度
㈧ 多目标优化算法有哪些
主要内容包括:多目标进化算法、多目标粒子群算法、其他多目标智能优化算法、人工神经网络优化、交通与物流系统优化、多目标生产调度和电力系统优化及其他。
㈨ 作业调度的功能是什么作业调度算法应考虑的主要因素是什么
1、作业调度的主要功能是:
根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。然后再将新创建的进程插入就绪队列,准备执行。
2、主要考虑因素:
要考虑数据结构的设计、程序执行时间、数据的状态、是否使得I / O 设备得以充分利用等因素。
通常情况下,对于简单的时间触发式调度器来说,待命任务列表的数据结构的设计要尽可能缩短;最坏情况下,程序在调度器关键部分的执行时间,以防止其他任务一直在待命列表中,无法及时执行。
因此,在这种调度器中,应尽可能避免抢占式任务,甚至应该关闭调度器之外的所有中断。当然,待命任务列表的数据结构也应根据这个系统需要的最大任务数量做进一步的优化。
(9)优化调度算法扩展阅读
调度算法应该做到:
1 、在单位时间内运行尽可能多的作业。
2 、作业调度时应使处理机保持忙碌的状态。
3 、使 I / O 设备得以充分利用。为适应一个进程在不同时间段的运行特点,I/O完成时,提高优先级;时间片用完时,降低优先级。
4 、对所有作业公平合理。
5、仅当较高优先级的队列为空,才调度较低优先级的队列中的进程执行。如果进程执行时有新进程进入较高优先级的队列,则抢先执行新进程,并把被抢先的进程投入原队列的末尾。
㈩ 目前常用的磁盘调度算法有哪几种每种算法优先考虑的问题是什么
(1)先来先服务(FCFS,First-Come First-Served)
此算法根据进程请求访问磁盘的先后次序进行调度。
(2)最短寻道时间优先(SSTF ,ShortestSeekTimeFirst)
该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但这种调度算法却不能保证平均寻道时间最短。
(3)扫描(SCAN)算法
SCAN算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。
(4)循环扫描(CSCAN)算法
CSCAN算法规定磁头单向移动,避免了扫描算法导致的某些进程磁盘请求的严重延迟。
(5) N-Step-SCAN和FSCAN调度算法
1) N-Step-SCAN算法。为克服前述SSTF、SCAN、CSCAN等调度算法都可能出现的磁臂停留在某处不动的情况即磁臂粘着现象,将磁盘请求队列分成若干个长度为N的子队列,按先来先服务算法依次处理这些子队列,而各队列分别以扫描算法进行处理。
2) FSCAN算法
FSCAN算法实质上是N步SCAN算法的简化。它只将磁盘请求访问队列分成两个子队列。一是当前所有请求磁盘I/O的进程形成的队列,由磁盘调度按SCAN算法进行处理。另一个队列则是在 扫描期间,新出现的所有请求磁盘I/O进程的队列,放入另一等待处理的请求队列。这样,所有的新请求都将被推迟到下一次扫描时处理。