电梯调度
问题:
某大厦,一共四部电梯,二十一层楼,一二两部电梯限乘客10人限重800KG,三四两部电梯限20人限重2000Kg。实现电梯正常调用,它从底部到顶部,停在每一层楼,打开门,让人们进出,然后把门关上,继续前进。之后到达顶层,它会下去。
电梯运行时间:
(大致时间 单位:秒 最高十一层)
开门时间:2.278
关门时间:2.654
开关门时间(有间歇):5.639
上升:
每层之间:7.860
一层到十一层:29.017
下降:
每层之间:7.528
十一层到一层:29.583
加速:2.457
减速:2.368
问题简单分析:
每部电梯,当电梯已坏,提示电梯已坏。
(针对某一个电梯)当没有人使用时,自动停在一层。
当有人使用时:
1.只有一人按按钮,正常运行。
2.当同时有多人,当人数或重量达到限制,提醒超载,否则正常运行。
3.在不同楼层按按钮时,电梯首先停在局里较近的楼层。
4.正在向上运行时,楼下有人按按钮,先向上走,在向下走,反之亦然。
5.上升过程中,楼上有需求,电梯停,向下运行亦然。
6.运行中,人员进出电梯,当人员,重量达到限制,自动停止,提示超载。
按钮:按下时灯亮,否则灯灭。
7. 若电梯运行方向与按钮方向相反,这时就将这个请求放入等待队列中,等待资源。举例说明就是,假如在15层有人请求上楼,而电梯在向下运行,这时就将这个请求放入队列中,另外,要注意的是在15层有人请求上楼的之后8层也发出上楼请求,被调度的那部则已经向上,这就要判断这部电梯是否已经过8层,若没有则电梯先在8层停,再上15层,若已经过,则将请求再次放入队列,再次等待,反之亦然!
电梯调度测试程序框架(接口,类):
1. 初始化:无人使用时,电梯初始值为0,停在第一层。
2. 楼层:21层,(0-20)
3. 时间:电梯开关门,运动加速减速时间
4. 按钮:开关门按钮,楼梯表示按钮,在最高最低层时,按钮不提供服务
5. 电梯(四部电梯互不影响):判断上下,是否运行,运行过程中不同楼层有需要,判断距离最近的楼层
6. 限制:人数超过标准或重量超过标准,提示超载
interface Elevator//定义电梯接口
{
int limitNum;//现载人数
int limitWeight;//限载重量
int layers_Elevator;//电梯的层数
void goUP_Elevator(int layoutsTarget,int layoutsStart);//电梯上升,参数层数
void comeDown_Elevator(int layoutsTarget, int layoutsStart);//电梯下降,层数为层数
}
interface People//人的接口
{
int weightPeople;//人的总重量
Boolean switch_Elevator(int layouts);//按电梯开关,参数为楼层数
}
interface Control//中央控制器接口
{
int numPeople;//人数
int sumWeight; //人总重量
void dispatch();//调度方法
}
姓名:薛禄坤 孙存良