电梯调度设计思路-结对项目开发(李帅 张硕)

---恢复内容开始---

 

背景   

 

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

 

 

 

 

 

  电梯名称

停靠层数

乘客限制

重量限制

     1

所有楼层

10

800 kg

     2

所有楼层

10

800 kg

     3

所有楼层

20

1600 kg

     4

所有楼层

20

2000 kg

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

电梯分为内外两部分,所以这设计时,将整个调度分为两部分:外部调度和内部调度。

外部调度所要进行的操作是,在楼层中有人请求电梯后,寻找到合适的电梯(也就是最先到达那一层的电梯)。例如,在第八层有人要上楼,在按下按钮请求电梯后,外部算法会找到最快到达的电梯,并将信息传递给内部的电梯控制。之后电梯会到达相应的楼层,也就是第八层。

现在说明一下外部调度算法的设计思路,当在电梯外部按下下楼层或上楼层键时,相当于同时对四部电梯发出请求。算法要做的是找出最近最快能到达的一部电梯,然后进行响应,到达所需楼层。具体算法是,先对四部电梯进行判断,优先选择当前没有运行的,或者运行方向与按钮方向相同的并且会经过这一楼层的电梯。如果存在一部,则调用这部,若存在多部,就选择在满足上述条件下与发出请求所处楼层最接近的一部,若没有这类电梯即四部电梯都在运行中且与电梯运行方向与按钮方向相反,这时就将这个请求放入等待队列中,等待资源。举例说明就是,假如在15层有人请求上楼,而四部电梯都在向下运行,这时就将这个请求放入队列中,当有电梯停靠时,便调度这部电梯,释放请求。另外,要注意的是在15层有人请求上楼的之后8层也发出上楼请求,这时如果三部电梯依然向下未停靠,而被调度的那部则已经向上,这就要判断这部电梯是否已经过8层,若没有则电梯先在8层停,再上15层,若已经过,则将请求再次放入队列,再次等待。

内部调度是根据电梯内部人所发出的请求调度电梯,当电梯内部按下一个楼层按钮的时候,当电梯停止或者同向可以到达的时候,系统把这个楼层设为停靠层,放入停靠的链表中,将所有请求按到达先后顺序拍好。当不符合条件时,将请求放入“将要执行队列”,排好位置,等到电梯到达终点后再执行。如电梯上到6楼,而目标是8楼,这个时候按下2楼,那么这个电梯就是先上到8楼然后再下去2楼。再如,先有人请求10楼,又有人请求9楼,这时需要将请求排序。

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

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

时间

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

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

     

---恢复内容结束---

posted @ 2014-03-09 18:10  季节的风  阅读(528)  评论(1编辑  收藏  举报