• 电梯调度算法---结对项目小进展


    结对项目开发-电梯调度

                              李帅--张硕

    背景   

           试想一下,我们正在构建一个高大的办公楼,它有大约电梯配置如下:大厦有21层, 4部电梯,很多乘客使用这些电梯的日常(旅客重量:平均70公斤最大120公斤,最小45公斤)。其他常量数据:电梯速度,开/关门时间,乘客的时间要在/走出电梯。

     

     

      电梯名称

    停靠层数

    乘客限制

    重量限制

         1

    所有楼层

    10

    800 kg

         2

    所有楼层

    10

    800 kg

         3

    所有楼层

    20

    1600 kg

         4

    所有楼层

    20

    2000 kg

    有关电梯调度的设计思路:

          电梯分为内外两部,这就需要进行两个调度,分别是外部调度和内部调度。

          外部调度进行的操作寻找合适的电梯,例如在某一楼层有人上楼或者下楼,在按下按钮后,外部算法会找到最快到达的电梯,将信息传递给内部电梯控制。在控制之下电梯会到达楼层。当电梯外部按下楼层上或下键时,相当于同时按下四部电梯,这个时候从四部电梯中调度一部进行响应,具体算法是,选择当前没有在运行,或者运行方向与按钮方向相同的并且要经过此楼层的电梯,如有一部,便调这个电梯,若有多部,那么就选择在满足上面条件下与所处楼层最接近的一部电梯,若没有,那么就将这个在楼层存放在等待队列中,等待资源。例如:四部电梯同时向下运行,而在15楼有人请求上楼这时就需要将这个请求放入队列,等待有电梯停下时,再进行调度,让电梯到达15层。这个例子中还有需要注意的是,在有人在15层请求上楼后,又有人在第8层请求上楼,这就需要再次对四部电梯进行选择,假如三部电梯依然向下,一部开始向15层上升,这就需要对上升的电梯进行判断,一种情况是还未到达第八层,这时就可以让电梯在8层先停,再上升至15层;另一种情况是已经超过8层,这时就应该将8加入队列,再次对电梯进行等候,然后再判断。对于电梯的上升下降过程,计划可以采用睡眠来代替,例如可以以2秒作为上升一层的时间。

           内部调度是根据电梯内部人所需要到达的楼层设计,当电梯内部按下一个楼层按钮的时候,当电梯停止或者同向可以到达的时候,系统把这个楼层设置为要停靠楼层,并将它放入停靠队列中,当电梯此时不符合条件时,将它放入“将要执行队列中”,等到电梯到达此次终点目标时再执行这个任务。如电梯上到6楼,而目标是8楼,这个时候按下2楼,那么这个电梯就是先上到8楼然后再下去2楼。

          最后一点就是人数及体重的限制了,对每个电梯设定一个特定的变量进行统计,然后比较,在将数据传入内部调度之中,进行电梯的操控。例如,如果电梯内的人数或者重量已将超过限制人数以及重量限制,那么电梯将不会在有人按下按钮的那一楼层停留。如果某一层内人数较多超过人数限制,电梯将自动报警,发出已超载的提示。

          这是最初的设计思路,考虑的问题可能并不全面,在代码的实现过程中可能会进行诸多修改。

    时间日志:

    时间

    2014.3.7

    2014.3.8

    2014.3.9

     

    李帅

    16:20-17:30

    18:45-19:20

    网上查阅资料,总结思考 比较了几种算法

    08:37-10:20我们两人在学院楼107自习室进行了商讨,对电梯调度算法有了初步的设计,并对各种情况进行了设想以及讨论。

     

    10:30—11:10 李帅同志整理了一下文档,我与坐在后排的汪洋同志交流了心得,11:15-11:54 我们三个人坐在一起对我们各两组各自的想法以及算法进行了交流。

     

    15:57-16:15

    我们两人对设计镜像最后敲定,并撰写博客。

     

    张硕

    19:30-20:37

    上网查阅资料,查看了一些前人写的算法。

  • 相关阅读:
    NW开发教程系列六:表头和表体(多表体)
    Java 正则表达式 量词 --- 三种匹配模式【贪婪型、勉强型、占有型】
    信号量与PV操作
    java的(PO,VO,TO,BO,DAO,POJO)解释
    使用Application对象简单完成网站总访问人数的统计
    更新记录后关闭子窗口并刷新父窗口的Javascript
    jquery jqPlot API 中文使用教程
    一款基于bootstrap的datetimepicker
    2013杭州赛区Ants hdu4776
    openGL中的函数调用类成员函数
  • 原文地址:https://www.cnblogs.com/zsjy/p/3590290.html
Copyright © 2020-2023  润新知