zoukankan      html  css  js  c++  java
  • 关于电梯调度的一些想法

    软工老师出了一道题目,关于电梯调度问题,假设一幢大厦有21层, 4部电梯,很多乘客使用这些电梯(旅客重量:平均70公斤最大120公斤,最小45公斤)。其他常量数据:电梯速度,开/关门时间,乘客要进出电梯的时间。具体设计一个电梯调度算法,实现合理调度。

    在搞清该用什么算法之前,先搞清电梯是怎么运行的。

    那么电梯是如何运行的?(以下是我们的想法和设计)

        假设分两种信号,外部信号与内部信号,外部信号就是电梯外乘客的请求信号,内部信号就是电梯内乘客所请求的目的地信号。

        首先,假设电梯内部没人,就没有内部信号,当有乘客发出外部信号时,电梯就会以首先到来的信号作为方向信号(上或者下),然后以自己楼层作为出发点,向这个方向进行动态遍历,电梯就开始运行,同时将遍历到的最远端作为终极停靠信号,并且在运行时不断检测,只要有本楼层到终极楼层之间的信号(无论内外),电梯就会停靠,若此时有不同方向的外部请求信号,电梯也会先到终极信号后再折回来。

        举个例子,假设电梯在第9层,有人在第12层发出请求,电梯就把上方作为遍历的方向,在从9运行到12的过程中,检测到了第14层,第18层,第5层的信号,电梯就会将18作为终极信号(假如没检测任何信号,那么12就是终极信号),假设进入到电梯的乘客此时发出了内部信号,有第15层,第7层,而15显然属于12到18之间的,电梯向上运行,依次在14,15,18停靠,然后方向改变,向下遍历信号,已经有第5层的外部信号和第7层的内部信号,5比7小,电梯就会将5作为终极停靠信号,然后在向下运行的同时继续遍历,只要出现小于5的信号,就将此信号作为终极信号,并且在从本楼层到终极楼层之间,只要检测到信号,无论内外,都会停靠。到了终极楼层5之后,电梯等待方向信号,然后继续以上式方式运行。当然,当电梯停靠在某一楼层后,若无输入信号,电梯则不会运行,一直在此楼层保持待机状态,等待信号输入。

        搞清了电梯的运行模式,接下来是需求分析,这是一幢有4个电梯的大楼,电梯的载重不都一样,假设四个电梯分别为A,B,C,D,各电梯独立运行,A,B电梯都是载重800公斤,限制10人,C电梯载重1600公斤,限制20人,D电梯载重2000公斤,限制20人,考虑到上下班高峰,为了提高电梯的效率,上班时间(7:00—8:00,13:00—14:00),假设4个电梯都没有请求信号,那么这4 个电梯都会回到1层等待,下班时间(11:00—12:00,17:00—18:00),电梯则会在20层等待,除却上下班的高峰时间,电梯就会在原位置等待,不会回到1层或者20层。经过实地调研,大型电梯上下一层的用时约为3秒,单人进出电梯用时约为2秒,故可设电梯开关门用时20秒。

        以上就是我们的想法,具体的数据结构及实现还有待商榷。

    开发日志

    3月5号 21:00—22:00 网上查阅资料

    3月7号 15:00—17:00 结合资料分析题目

    3月8号 9:00—11:30 具体分析电梯运行模式

    3月8号 15:00—17:00 继续分析电梯运行模式

    3月9号 10:00—11:30 撰写博客并完善细节

    开发人员:闫立新 苏海岩

  • 相关阅读:
    SQL Server 复制订阅
    杂谈经验与未来
    泛泰A820L (高通MSM8660 cpu) 3.4内核的CM10.1(Android 4.2.2) 測试版第二版
    hdu1280 前m大的数(数组下标排序)
    Design Pattern Adaptor 适配器设计模式
    ssh命令、ping命令、traceroute 命令所使用的协议
    Android禁止ViewPager的左右滑动
    推荐一款优雅的jquery手风琴特效
    vijos
    iOS 7 UI 过渡指南
  • 原文地址:https://www.cnblogs.com/suhaiyan/p/3590637.html
Copyright © 2011-2022 走看看