`
sudalyl
  • 浏览: 101645 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

【转】 电梯调度算法 总结

阅读更多

1.传统电梯调度算法

1.1先来先服务算法(FCFS)

先来先服务(FCFS-First Come First Serve)算法,是一种随即服务算法,它不仅仅没有对寻找楼层进行优化,也没有实时性的特征,它是一种最简单的电梯调度算法。它根据乘客请求乘坐电梯的先后次序进行调度。此算法的优点是公平、简单,且每个乘客的请求都能依次地得到处理,不会出现某一乘客的请求长期得不到满足的情况[12]。这种方法在载荷较轻松的环境下,性能尚可接受,但是在载荷较大的情况下,这种算法的性能就会严重下降,甚至恶化。人们之所以研究这种在载荷较大的情况下几乎不可用的算法,有两个原因:

(1)任何调度算法在请求队列长度为1时,请求速率极低或相邻请求的间隔为无穷大时使用先来先服务算法既对调度效率不会产生影响,而且实现这种算法极其简单。

(2)先来先服务算法可以作为衡量其他算法的标准。

1.2最短寻找楼层时间优先算法(SSTF)

    最短寻找楼层时间优先(SSTF-Shortest Seek Time First) [14]算法,它注重电梯寻找楼层的优化。最短寻找楼层时间优先算法选择下一个服务对象的原则是最短寻找楼层的时间。这样请求队列中距当前能够最先到达的楼层的请求信号就是下一个服务对象。在重载荷的情况下,最短寻找楼层时间优先算法的平均响应时间较短,但响应时间的方差较大,原因是队列中的某些请求可能长时间得不到响应,出现所谓的“饿死”现象。

1.3扫描算法(SCAN)

扫描算法(SCAN)是一种按照楼层顺序依次服务请求,它让电梯在最底层和最顶层之间连续往返运行,在运行过程中响应处在于电梯运行方向相同的各楼层上的请求。它进行寻找楼层的优化,效率比较高,但它是一个非实时算法。扫描算法较好地解决了电梯移动的问题,在这个算法中,每个电梯响应乘客请求使乘客获得服务的次序是由其发出请求的乘客的位置与当前电梯位置之间的距离来决定的,所有的与电梯运行方向相同的乘客的请求在一次电向上运行或向下运行的过程中完成,免去了电梯频繁的来回移动[2]

扫描算法的平均响应时间比最短寻找楼层时间优先算法长,但是响应时间方差比最短寻找楼层时间优先算法小,从统计学角度来讲,扫描算法要比最短寻找楼层时间优先算法稳定。

1.4 LOOK算法

LOOK算法[18]是扫描算法的一种改进。对LOOK算法而言,电梯同样在最底层和最顶层之间运行。但当LOOK算法发现电梯所移动的方向上不再有请求时立即改变运行方向,而扫描算法则需要移动到最底层或者最顶层时才改变运行方向。

1.5 SATF算法

SATF(Shortest Access Time First)[15,19]算法与SSTF算法的思想类似,唯一的区别就是SATF算法将SSTF算法中的寻找楼层时间改成了访问时间。这是因为电梯技术发展到今天,寻找楼层的时间已经有了很大地改进,但是电梯的运行当中等待乘客上梯时间却不是人为可以控制。SATF算法考虑到了电梯运行过程中乘客上梯时间的影响。

2实时电梯调度算法

2.1最早截止期优先调度算法

最早截止期优先(EDF-Earliest Deadline First)[16]调度算法是最简单的实时电梯调度算法,它的缺点就是造成电梯任意地寻找楼层,导致极低的电梯吞吐率。它与FCFS调度算法类似,EDF算法是电梯实时调度算法中最简单的调度算法。它响应请求队列中时限最早的请求,是其它实时电梯调度算法性能衡量的基准和特例。

2.2 SCAN-EDF算法

SCAN-EDF[16]算法是SCAN算法和EDF算法相结合的产物。SCAN-EDF算法先按照EDF算法选择请求列队中哪一个是下一个服务对象,而对于具有相同时限的请求,则按照SCAN算法服务每一个请求。它的效率取决于有相同deadline 的数目,因而效率是有限的。

2.3 PI算法

PI(Priority Inversion)[16]算法将请求队列中的请求分成两个优先级,它首先保证高优先级队列中的请求得到及时响应,再搞优先级队列为空的情况下在相应地优先级队列中的请求。

2.4 FD-SCAN算法

FD-SCAN(Feasible Deadline SCAN)[17]算法首先从请求队列中找出时限最早、从当前位置开始移动又可以买足其时限要求的请求,作为下一次SCAN的方向。并在电梯所在楼层向该请求信号运行的过程中响应处在与电梯运行方向相同且电梯可以经过的请求信号。这种算法忽略了用SCAN算法相应其它请求的开销,因此并不能确保服务对象时限最终得到满足。

3电梯调度的高水平研究

以上两个小结介绍了几种在目前本人的能力上能进行研究的、简单的电梯调度算法。但是并不是说目前电梯调度只发展到这个层次。目前电梯的控制技术已经进入了电梯群控的时代。

随着微机在电梯系统中的应用和人工智能技术的发展,智能群控技术得以迅速发展起来。由此,电梯的群控方面陆续发展出了一批新方法,包括:基于专家系统的电梯群控方法、基于模糊逻辑的电梯群控方法、基于遗产算法的电梯群控方法、基于胜景网络的电梯群控方法和基于模糊神经网络的电梯群控方法。

电梯问题的需求分析

4.1电梯的初始状态

本人设置的电梯的初始状态,是对住宅楼的电梯的设置。

(1)建筑共有21层,其中含有地下一层(地下一层为停车场及货物运送场所)。

(2)建筑内部设有两部电梯,编号分别为A梯、B梯。

(3)电梯内部有23个按钮,其中包括开门按钮、关门按钮和楼层按钮,编号为-11234……20

(4)电梯外部含有两个按钮,即向上运行按钮和向下运行按钮。建筑顶层与地下一层例外,建筑顶层只设置有向下运行按钮,地下一层只设置有向上运行按钮。

(5)电梯开关门完成时间设定为1秒。电梯到达每层后上下人的时间设定为8秒。电梯从静止开始运行到下一层的时间设置为2秒,而运行中通过一层的时间为1秒。

(6)在凌晨200——430之间,如若没有请求信号,A梯自动停在14层,B梯自动停在6层。

(7)当电梯下到-1层后,如果没有请求信号,电梯自动回到1

4.2电梯按钮功能

电梯内部的楼层按钮:电梯内部对应每一个楼层的按钮成为楼层按钮,即本章第一结提到的编号为-11234……20的按钮。当乘客进入电梯后按下楼层按钮,此按钮显示灰色,代表不可以用。这样就表示乘客将要去往此层,电梯将开往相应层。当电梯到达该层后,按钮恢复可以使用状态。

电梯内部开门按钮:当电梯达到乘客想要去往的某楼层后,乘客需要准备离开电梯,当电梯停稳后,乘客可以按下开门按钮,电梯门将打开,让用户离开。如若电梯到了乘客曾经按下的楼层,但是无乘客按开门按钮,电梯将自动在停稳后1秒后自动开门。

电梯内部关门按钮:当所有想要乘坐电梯的乘客都进入电梯以后,准备让电梯开始运行的时候,乘客需要按下关门按钮,让电梯门关闭,使电梯进入运行状态。设置电梯的自动关门时间为8秒。

电梯外部向上按钮:此按钮表示上楼请求,当按下此按钮时,如果电梯到达按下此按钮的楼层,且电梯运行方向是向上的,那么电梯响将停下,并在电梯停稳之后自动开门,此请求被响应后,取消此请求信号。

电梯外部向下按钮:此按钮表示下楼请求,当按下此按钮时,如果电梯到达按下此按钮的楼层,且电梯运行方向是向下的,那么电梯响将停下,并在电梯停稳之后自动开门,此请求被响应后,取消此请求信号。

分享到:
评论

相关推荐

    电梯调度算法(算法合集)

    电梯调度算法是优化高层建筑内电梯运行效率的关键技术,它涉及到多门学科,如计算机科学、控制理论和人工智能。在给定的压缩包文件中,包含了一系列关于电梯调度算法的资料,涵盖了强化学习、LOOK调度、最短寻道、...

    电梯调度算法实现

    电梯调度算法是操作系统中一种重要的I/O调度策略,它的主要任务是优化磁盘读写操作的效率,提高系统的整体性能。在操作系统中,磁盘I/O操作通常比CPU计算耗时得多,因此如何有效地调度磁盘臂的移动,减少平均寻道...

    电梯调度算法(java实现)

    电梯调度算法是计算机科学中的一个重要概念,特别是在操作系统领域,它与进程管理有着密切的关系。电梯调度,也称为电梯算法,最初被引入来优化多层建筑中的电梯操作,但其核心思想同样适用于处理多个进程的CPU调度...

    模拟电梯调度算法,实现对磁盘的驱动调度

    为了提高磁盘操作的效率,操作系统采用了一系列的调度算法,其中一种就是“模拟电梯调度算法”,也称作“扫描算法”或“FCFS(First-Come, First-Served)双向扫描算法”。本实验旨在通过模拟这个算法,深入理解磁盘...

    经典电梯调度算法的简易实现

    电梯调度算法是计算机科学中的一种优化问题,常用于模拟和设计高效的电梯控制系统。在这个简易实现的项目中,我们主要关注如何使用VC++编程语言来实现这些算法。VC++是Microsoft开发的一款强大的C++集成开发环境,它...

    C语言电梯调度算法

    C语言电梯调度算法,数据结构课程设计

    电梯调度算法(源代码)

    电梯调度算法是计算机科学与工程领域中的一个重要概念,特别是在操作系统的多任务管理和自动化控制系统中。在本案例中,我们讨论的是一种用编程语言实现的电梯调度算法,它主要用于模拟实际电梯运行过程,帮助理解...

    电梯调度算法 4 Java版

    用Java写的电梯调度算法4,模拟操作系统的进程调度,图形界面

    模拟电梯调度算法(操作系统)

    模拟电梯调度算法(操作系统) 一、实验内容 模拟电梯调度算法是指在操作系统中,对磁盘的驱动调度算法。磁盘是一种高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,担负着繁重的输入...

    操作系统电梯调度算法c语言实现

    假设要求从系统中输入N个需访问的柱面号,当前磁头的移动方向由键盘输入(1代表磁头从外往内移动,-1代表磁头由内往外移动),当前磁头刚完成访问序号为M的柱面,请编程输出采用电梯调度算法得到的柱面访问序列号,...

    LOOK电梯调度算法

    采用C++对操作系统课程中的LOOK电梯调度算法进行简单的描述,望采纳

    电梯调度算法(基于C语言)

    电梯调度算法是计算机科学在实际应用中的一种体现,它通过模拟真实世界中的电梯运行情况,设计出优化的策略,使得电梯能高效、合理地服务乘客,减少等待时间。在这个项目中,我们使用C语言作为编程工具,来实现这样...

    磁盘调度算法 电梯调度算法 最短寻道时间调度算法

    自己写的磁盘调度算法,通俗易懂,其中有先来先服务调度算法,最短寻道时间调度算法、电梯调度算法

    计算机操作系统中电梯调度算法

    根据提供的信息,我们可以深入探讨计算机操作系统中的电梯调度算法这一主题。该题目主要涉及的是操作系统中的磁盘调度算法,其中电梯算法是最为常见的方法之一。在理解这部分内容时,我们需要掌握以下几个核心概念:...

    电梯调度算法_扫描算法

    根据给定的信息,本文将详细解释“电梯调度算法”(又称扫描算法,Scan Algorithm),这是一种在操作系统中用于磁盘驱动器调度的重要算法。电梯调度算法因其执行方式与实际生活中电梯的工作原理类似而得名,其核心...

    驱动调度电梯算法

    在操作系统中,驱动调度算法负责决定何时以及如何处理I/O请求,特别是在多任务环境中,多个进程可能会同时请求磁盘访问。电梯算法通过优化磁头移动路径,减少了平均寻道时间(Average Seek Time),提高了磁盘I/O...

    电梯调度的算法(c++)

    电梯调度的源代码 使用vector实现。

    驱动调度 java模拟电梯调度算法实现驱动调度

    操作系统中模拟驱动调度 java模拟电梯调度算法实现驱动调度

    操作系统电梯调度算法

    操作系统中的电梯调度算法是管理硬盘磁头移动的重要策略,它模拟了现实世界中电梯的工作方式,以高效地服务多个磁盘请求。在这个场景下,硬盘的磁头被视为“电梯”,而磁道请求则对应于建筑物中的楼层请求。电梯调度...

    磁盘调度算法电梯调度

    总结起来,电梯调度算法是操作系统中磁盘管理的关键部分,它涉及到如何高效地处理磁盘I/O请求,以提升系统整体性能。通过编写和分析模拟程序,学生不仅可以理解算法的工作原理,还能学习到如何在实际场景中优化系统...

Global site tag (gtag.js) - Google Analytics