群控电梯调度算法

Java面试笔试面经、Java技术每天学习一点

公众号Java面试

关注我不迷路

1.传统电梯调度算法

1.1先来先服务算法(FCFS)

先来先服务(FCFS-First Come First Serve)算法,是一种随即服务算法,它不仅仅没有对寻找楼层进行优化,也没有实时性的特征,它是一种最简单的电梯调度算法。

它根据乘客请求乘坐电梯的先后次序进行调度。此算法的优点是公平、简单,且每个乘客的请求都能依次地得到处理,不会出现某一乘客的请求长期得不到满足的情况[12]。

这种方法在载荷较轻松的环境下,性能尚可接受,但是在载荷较大的情况下,这种算法的性能就会严重下降,甚至恶化。

人们之所以研究这种在载荷较大的情况下几乎不可用的算法,有两个原因:

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

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

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

最短寻找楼层时间优先(SSTF-Shortest Seek Time First) [14]算法,它注重电梯寻找楼层的优化。

最短寻找楼层时间优先算法选择下一个服务对象的原则是最短寻找楼层的时间。这样请求队列中距当前能够最先到达的楼层的请求信号就是下一个服务对象。关注公众号[Java面试]获取更多面试资料

在重载荷的情况下,最短寻找楼层时间优先算法的平均响应时间较短,但响应时间的方差较大,原因是队列中的某些请求可能长时间得不到响应,出现所谓的“饿死”现象。

1.3扫描算法(SCAN)

扫描算法(SCAN)是一种按照楼层顺序依次服务请求,它让电梯在最底层和最顶层之间连续往返运行,在运行过程中响应处在于电梯运行方向相同的各楼层上的请求。

它进行寻找楼层的优化,效率比较高,但它是一个非实时算法。扫描算法较好地解决了电梯移动的问题,在这个算法中,每个电梯响应乘客请求使乘客获得服务的次序是由其发出请求的乘客的位置与当前电梯位置之间的距离来决定的,所有的与电梯运行方向相同的乘客的请求在一次电向上运行或向下运行的过程中完成,免去了电梯频繁的来回移动。

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

1.4 LOOK 算法

LOOK算法[18]是扫描算法的一种改进。对LOOK算法而言,电梯同样在最底层和最顶层之间运行。

但当LOOK算法发现电梯所移动的方向上不再有请求时立即改变运行方向,而扫描算法则需要移动到最底层或者最顶层时才改变运行方向。

1.5 SAFT 算法

SATF(Shortest Access Time First)[15,19]算法与SSTF算法的思想类似,唯一的区别就是SATF算法将SSTF算法中的寻找楼层时间改成了访问时间。

这是因为电梯技术发展到今天,寻找楼层的时间已经有了很大的改进,但是电梯的运行当中等待乘客上梯时间却不是人为可以控制。

SATF算法考虑到了电梯运行过程中乘客上梯时间的影响。

2 实时电梯调度算法

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)[17]算法首先从请求队列中找出时限最早、从当前位置开始移动又可以满足其时限要求的请求,作为下一次SCAN的方向。关注公众号[Java面试]获取更多面试资料

并在电梯所在楼层向该请求信号运行的过程中响应处在与电梯运行方向相同且电梯可以经过的请求信号。

这种算法忽略了用SCAN算法相应其它请求的开销,因此并不能确保服务对象时限最终得到满足。

3 电梯调度的高水平研究

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

目前电梯的控制技术已经进入了电梯群控的时代。

随着微机在电梯系统中的应用和人工智能技术的发展,智能群控技术得以迅速发展起来。

由此,电梯的群控方面陆续发展出了一批新方法,包括:基于专家系统的电梯群控方法、基于模糊逻辑的电梯群控方法、基于遗产算法的电梯群控方法、基于胜景网络的电梯群控方法和基于模糊神经网络的电梯群控方法。

4 电梯问题的需求分析

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 电梯按钮功能

电梯内部的楼层按钮:电梯内部对应每一个楼层的按钮成为楼层按钮,即本章第一节提到的编号为-1,1,2,3,4……20的按钮。

当乘客进入电梯后按下楼层按钮,此按钮显示灰色,代表不可以用。这样就表示乘客将要去往此层,电梯将开往相应层。当电梯到达该层后,按钮恢复可以使用状态。

电梯内部开门按钮:当电梯达到乘客想要去往的某楼层后,乘客需要准备离开电梯,当电梯停稳后,乘客可以按下开门按钮,电梯门将打开,让用户离开。

如若电梯到了乘客曾经按下的楼层,但是无乘客按开门按钮,电梯将自动在停稳后1秒后自动开门。

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/252659.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

操作系统实验:驱动调度 模拟电梯调度算法 C语言实现

一:实验内容 模拟电梯调度算法,对磁盘进行移臂和旋转调度。 二.实验题目 (1).“驱动调度”进程和“接收请求”进程能否占有处理器运行,取决于磁盘的结束中断信 号和处理器调度策略。在实验中可用随机数来模拟确定这两个进程的运行顺序&…

Java实现电梯调度算法

Java实现电梯调度算法 电梯算法简介题目代码实现效果图 电梯算法简介 当磁头正在由里向外移动时,电梯调度算法所选择的下一个访问对象应是其欲访问的磁道,既在当前磁道之外,又是距离最近的。这样由里向外地访问,直至再无更外的磁道…

算法高级(39)-坐电梯时情不自禁想起的电梯调度算法实现原理

一、引言 现代社会中,不管你是在北上广、北海道、新加坡,或者是三四五六七八线的小城市,凡是有点规模的地方,高楼大厦都是比比皆是的。而在上下楼的时候,不可避免的会跟电梯打交道。而一般情况你也很少能心平气和地等…

电梯调度

在像芝加哥,纽约,东京,新加坡,香港等大城市里,每天都会有上百万的人通过电梯离开他们的大楼。但是我们却很少考虑电梯是如何调度来提供服务的,尤其是在人流高峰期,这个时候办公楼里的大多数人都…

电梯调度算法

磁盘是一种高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,担负着繁重的输入输出任务、在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请求等待处理,这时我们就需要采用一种合适的调度算法来使…

苹果主屏幕按钮怎么设置_苹果手机屏幕变大怎么恢复

如果苹果手机屏幕放大起来,其实只要同时使用三个手指快速连续点击手机屏幕两次,手机界面就会恢复正常。还可以在【设置】-【通用】-【辅助功能】中将【缩放】开关关闭。在【辅助功能】中【更大字体】选项中可以调整字体的大小。具体介绍如下:…

苹果主屏幕按钮怎么设置_Mac小技巧 Mac屏幕旋转怎么设置

相信不少的Mac用户在躺下看电子书或者电影的时候,都希望可以将Mac的电脑屏幕进行旋转!其实,这个操作是可以实现的呢!那么,你知道Mac屏幕旋转怎么设置吗?想要知道答案的话就快来阅读下面的文章吧&#xff01…

苹果屏幕旋转怎么设置_iPhone12屏幕供应商是谁 苹果12屏幕怎么查看是哪家

苹果iPhone12系列手机在10月份正式发售上市,今年的iPhone12全系列都使用了OLED屏幕,官方将这块屏幕称之为超视网膜 XDR 显示屏,那么今年的iPhone12系列屏幕供应商有哪些,怎么分辨自己手上的iPhone12屏幕来自哪家公司呢&#xff0c…

苹果手机投屏软件_苹果手机怎样投屏到笔记本?

注:本文转载自网络,不代表本平台立场,仅供读者参考,著作权属归原创者所有。我们分享此文出于传播更多资讯之目的。如有侵权,请在后台留言联系我们进行删除,谢谢! 经常用手机的小伙伴都知道&am…

怎么设置苹果手机的小圆点_苹果屏幕旋转怎么设置?关于苹果手机设置的一些小技巧...

苹果屏幕旋转怎么设置?在平常使用手机观看视频的时候,很多人希望手机屏幕可以自己旋转为横屏状态,在使用微信聊天的时候再自动转为竖屏,这种切换可以直接利用控制中心的一个功能来实现。 如何开启苹果手机的屏幕旋转?首…

苹果屏幕使用时间怎么设置_苹果手机屏幕不能旋转怎么办

很多刚刚接触苹果手机的人,可能不知道怎么使用苹果手机。那么苹果手机屏幕不能旋转怎么办呢?下面就让小编来告诉大家吧,欢迎阅读。 1、苹果手机页面未锁定的情况下从屏幕底端向上滑动,弹出小界面窗口。 2、可以看到小窗口顶部左端…

linux屏幕旋转后触控不准,手机重力感应失效解决方法 不能自动旋转屏幕怎么设置...

如今手机已经成为人们生活中必不可少的一个工具了,在使用过程也常常会遇到各种各样的问题,比如当手机重力感应失效的时候应该怎么解决呢,手机不能自动旋转屏幕要怎么设置,针对这个问题下面就为大家带来最新解决方法,希…

苹果6怎样打开html,苹果6屏幕旋转怎么设置 怎么开启和关闭【图文】

手机在使用的过程中,通常都会有两种状态,横屏与竖屏,大家的使用习惯不一样,所喜欢的状态也不一样,而且手机都会有屏幕自动旋转的情况,它会根据手机的摆放状态自己切换,比较方便大家使用&#xf…

会员管理系统,建议收藏!

你见过会员管理系统吗?在一些线下的美容院,健身房,理发店,往往会有办理会员这样的需求,所以会员管理系统应运而生。那会员管理系统有哪些作用呢? 会员卡:无需填写信息、无需实体会员卡&#xf…

会员卡系统的管理运营

下面的是会员系统的源代码和DOS命令的运行

会员卡应用管理系统源码 支持收银+积分管理+商城营销功能 含详细搭建教程

分享一个会员卡应用管理系统源码,收银积分管理商城营销系统源码,含完整的程序包和搭建教程。 系统功能一览: 1、精简强悍,会员卡,积分,在线充值,商家核销,在线下单,优惠…

C语言:会员管理系统

会员信息包括:会员号(6位数,唯一),姓名,身份证号,联系电话,状态(1表示正常,0表示挂失)。 会员管理包括:会员的添加、删除、修改&#…

云上铺会员管理系统支持什么类型会员卡?

最近很多打算购买我们系统的客户都在问我们,云上铺到底支持什么会员卡,今天趁这个机会专门给大家讲一下。 云上铺会员管理系统,作为一款独立开发设计的SAAS会员管理系统,广泛适用于美容美发,汽车美容,服装…

C语言 会员管理系统

大一上学期期末项目设计; 思路参考:【千锋教育新版C语言程序设计视频教程(适合自学,c语言初学者入门教程)】 https://www.bilibili.com/video/BV1id4y1375a/?p119&share_sourcecopy_web&vd_sourcea6401c9820…