不管是写字楼,还是大型商城,让你最头痛的便是乘电梯,尤其是在赶韶光的时候。
每天早上,那些差5分钟就迟到的程序员,在等电梯时,一样平常会做两件事:
第一,在心里骂电梯慢;

第二,在心里暗杀着电梯调度如何优化;
前者可能是写字楼里上班族惯有的精神类疾病,但后者肯定是程序员的职业病。
本文对“骂电梯”不给予任何辅导性建议。
但提及电梯调度算法,我以为还是可以给大家科普一下,好为大家在等电梯之余,丁宁韶光而做出一点贡献。(电梯调度算法可以参考各种硬盘换道算法,下面内容整理自网络)
传统电梯调度算法
1.1 先来先做事算法(FCFS)
先来先做事(FCFS-First Come First Serve)算法,是一种随即做事算法,它不仅仅没有对探求楼层进行优化,也没有实时性的特色,它是一种最大略的电梯调度算法。
它根据搭客要求乘坐电梯的先后次序进行调度。此算法的优点是公正、大略,且每个搭客的要求都能依次地得到处理,不会涌现某一搭客的要求长期得不到知足的情形。
这种方法在载荷较轻松的环境下,性能尚可接管,但是在载荷较大的情形下,这种算法的性能就会严重低落,乃至恶化。
人们之以是研究这种在载荷较大的情形下险些不可用的算法,有两个缘故原由:
任何调度算法在要求行列步队长度为1时,要求速率极低或相邻要求的间隔为无穷大时利用先来先做事算法既对调度效率不会产生影响,而且实现这种算法极其大略。先来先做事算法可以作为衡量其他算法的标准。1.2 最短探求楼层韶光优先算法(SSTF)
最短探求楼层韶光优先(SSTF-Shortest Seek Time First)算法,它看重电梯探求楼层的优化。
最短探求楼层韶光优先算法选择下一个做事工具的原则是最短探求楼层的韶光。
这样要求行列步队中距当前能够最先到达的楼层的要求旗子暗记便是下一个做事工具。
在重载荷的情形下,最短探求楼层韶光优先算法的均匀相应韶光较短,但相应韶光的方差较大,缘故原由是行列步队中的某些要求可能永劫光得不到相应,涌现所谓的“饿去世”征象。
1.3 扫描算法(SCAN)
扫描算法(SCAN) 是一种按照楼条理序依次做事要求,它让电梯在最底层和最顶层之间连续来回运行,在运行过程中相应处在于电梯运行方向相同的各楼层上的要求。
它进行探求楼层的优化,效率比较高,但它是一个非实时算法。扫描算法较好地办理了电梯移动的问题,在这个算法中,每个电梯相应搭客要求使搭客得到做事的次序是由其发出要求的搭客的位置与当前电梯位置之间的间隔来决定的。
所有的与电梯运行方向相同的搭客的要求在一次电向上运行或向下运行的过程中完成,免去了电梯频繁的来回移动。
扫描算法的均匀相应韶光比最短探求楼层韶光优先算法长,但是相应韶光方差比最短探求楼层韶光优先算法小,从统计学角度来讲,扫描算法要比最短探求楼层韶光优先算法稳定。
1.4 LOOK 算法
LOOK 算法是扫描算法(SCAN)的一种改进。对LOOK算法而言,电梯同样在最底层和最顶层之间运行。
但当 LOOK 算法创造电梯所移动的方向上不再有要求时立即改变运行方向,而扫描算法则须要移动到最底层或者最顶层时才改变运行方向。
1.5 SATF 算法
SATF(Shortest Access Time First)算法与 SSTF 算法的思想类似,唯一的差异便是 SATF 算法将 SSTF 算法中的探求楼层韶光改成了访问韶光。
这是由于电梯技能发展到本日,探求楼层的韶光已经有了很大地改进,但是电梯的运行当中等待搭客上梯韶光却不是人为可以掌握。
SATF 算法考虑到了电梯运行过程中搭客上梯韶光的影响。
实时电梯调度算法
2.1 最早截止期优先调度算法
最早截止期优先(EDF-Earliest Deadline First)调度算法是最大略的实时电梯调度算法,它的缺陷便是造成电梯任意地探求楼层,导致极低的电梯吞吐率。
它与 FCFS 调度算法类似,EDF 算法是电梯实时调度算法中最大略的调度算法。
它相应要求行列步队中时限最早的要求,是其它实时电梯调度算法性能衡量的基准和特例。
2.2 SCAN-EDF 算法
SCAN-EDF 算法是 SCAN 算法和 EDF 算法相结合的产物。SCAN-EDF 算法先按照 EDF 算法选摘要求列队中哪一个是下一个做事工具,而对付具有相同时限的要求,则按照 SCAN 算法做事每一个要求。它的效率取决于有相同 deadline 的数目,因而效率是有限的。
2.3 PI 算法
PI(Priority Inversion)算法将要求行列步队中的要求分成两个优先级,它首先担保高优先级行列步队中的要求得到及时相应,再搞优先级行列步队为空的情形下在相应地优先级行列步队中的要求。
2.4 FD-SCAN 算法
FD-SCAN(Feasible Deadline SCAN)算法首先从要求行列步队中找出时限最早、从当前位置开始移动又可以买足其时限哀求的要求,作为下一次 SCAN 的方向。
并在电梯所在楼层向该要求旗子暗记运行的过程中相应处在与电梯运行方向相同且电梯可以经由的要求旗子暗记。
这种算法忽略了用 SCAN 算法相应其它要求的开销,因此并不能确保做事工具时限终极得到知足。
算法根本阅读:8 种排序算法:从事理到改进,再到代码兑现透彻解析
电梯调度高水平研究
以上两结先容了几种大略的电梯调度算法。
但是并不是说目前电梯调度只发展到这个层次。目前电梯的掌握技能已经进入了电梯群控的时期。
随着微机在电梯系统中的运用和人工智能技能的发展,智能群控技能得以迅速发展起来。
由此,电梯的群控方面陆续发展出了一批新方法,包括:基于专家系统的电梯群控方法、基于模糊逻辑的电梯群控方法、基于遗产算法的电梯群控方法、基于胜景网络的电梯群控方法和基于模糊神经网络的电梯群控方法。
电梯问题的需求剖析
4.1 电梯的初始状态
本人设置的电梯的初始状态,是对住宅楼的电梯的设置。
(1)建筑共有21层,个中含有地下一层(地下一层为停车场)。
(2)建筑内部设有两部电梯,编号分别为A梯、B梯。
(3)电梯内部有23个按钮,个中包括开门按钮、关门按钮和楼层按钮,编号为-1,1,2,3,4……20。
(4)电梯外部含有两个按钮,即向上运行按钮和向下运行按钮。建筑顶层与地下一层例外,建筑顶层只设置有向下运行按钮,地下一层只设置有向上运行按钮。
(5)电梯开关门完成韶光设定为1秒。电梯到达每层后高下人的韶光设定为8秒。电梯从静止开始运行到下一层的韶光设置为2秒,而运行中通过一层的韶光为1秒。
(6)在凌晨2:00——4:30之间,如若没有要求旗子暗记,A梯自动停在14层,B梯自动停在6层。
(7)当电梯下到-1层后,如果没有要求旗子暗记,电梯自动回到1层。
4.2 电梯基本功能
每一架电梯都有一个编号,以方便监控与维修。每一架电梯都有一实时监控器,卖力监控电梯高下,向电梯升降盒发送启动、制动、加速、减速、开关电梯门的旗子暗记。若电梯发生故障,还应向相应的电梯卖力人发送求救旗子暗记。
4.3 电梯按钮功能
电梯内部的楼层按钮:电梯内部对应每一个楼层的按钮成为楼层按钮,即本章第一结提到的编号为 -1,1,2,3,4……20的按钮。当搭客进入电梯后按下楼层按钮,此按钮显示灰色,代表不可以用。
这样就表示搭客将要去往此层,电梯将开往相应层。当电梯到达该层后,按钮规复可以利用状态。
电梯内部开门按钮:当电梯达到搭客想要去往的某楼层后,搭客须要准备离开电梯,当电梯停稳后,搭客可以按下开门按钮,电梯门将打开,让用户离开。
如若电梯到了搭客曾经按下的楼层,但是无搭客按开门按钮,电梯将自动在停稳后1秒后自动开门。
电梯内部关门按钮:当所有想要乘坐电梯的搭客都进入电梯往后,准备让电梯开始运行的时候,搭客须要按下关门按钮,让电梯门关闭,使电梯进入运行状态。设置电梯的自动关门韶光为8秒。
电梯外部向上按钮:此按钮表示上楼要求,当按下此按钮时,如果电梯到达按下此按钮的楼层,且电梯运行方向是向上的,那么电梯响将停下,并在电梯停稳之后自动开门,此要求被相应后,取消此要求旗子暗记。
电梯外部向下按钮:此按钮表示下楼要求,当按下此按钮时,如果电梯到达按下此按钮的楼层,且电梯运行方向是向下的,那么电梯响将停下,并在电梯停稳之后自动开门,此要求被相应后,取消此要求旗子暗记。
结束语
你肯能意识到哪个算法都不是一个最佳方案,只是它确实办理了一定情形的问题。
但是对一个精良的程序员而言,研究各种算法是无比快乐的。大概你下一次口试,就有关于调度算法的问题。