标签:
结队成员:李宝全 & 黄一凡
李保全的博客首页:http://www.cnblogs.com/libaoquan/
cooding链接:https://coding.net/u/2013040101159/p/4elevator/git
4路电梯调度算法展示:http://ele.libq.ren/
结对编程题目:电梯调度
现有一新建办公大厦,共有21层,共有四部电梯,所有电梯基本参数如下表所示:
电梯编号 | 可服务楼层 | 最大乘客数量 |
最大载重量 |
1 | 全部楼层 | 10 |
800KG |
2 | 单层 | 10 |
800KG |
3 | 双层 | 20 |
1600KG |
4 | 全部楼层 | 20 |
2000KG |
其使用规定如下:
1、楼层号为0~20,其中0号为地下一层;
2、有楼层限制的电梯不在响应楼层停靠,如单双层;
3、所有电梯采用统一按钮控制
请根据上述要求设计并实现一个电梯控制程序,如果有图形显示就更好了。
需求分析
我们对于合理的电梯调度行为描述如下:
先从单部电梯的调度里流程开始讨论,电梯的初始状态为闲置状态,在外部按钮事件的响应下唤醒电梯,电梯开始运动,调度图如下:
在进行多部电梯的调度时,因为每部电梯的内部事件相互独立,所以只需要修改外部事件的响应规则即可。
到此,电梯调度问题的核心就是如何在消息队列中寻找最适楼层。这个问题很容易解决:
由于电梯楼层固定为21层,可以用一维数组InReqList[21]保存一部电梯消息队列。当数组值为InReqList[i]=0时,表示第i层没有停靠消息,电梯不需要再此层停靠;当数组值为InReqList[i]=1时,表示第i层有一个内部按钮按下消息,电梯需要在此层停靠;当数组值为InReqList[i]=2时,表示第i层有一个外部按钮按下消息,电梯需要在此层停靠;
标签:
原文地址:http://www.cnblogs.com/huangyifan/p/5356269.html