结对开发项目:电梯调度

小组成员:马翔  胡佳奇

项目题目:一栋21层大楼有4部电梯,电梯有自己的一些属性,如运行速度,载重,开关门时间等。编写一个程序来进行对这四部电梯的有效调度。

项目要求:避免出现 “公共汽车”最坏情况的算法。该算法把电梯作为总线,它从底部到顶部,停在每一层楼,打开门,让人们进出,然后把门关上,继续前进。之后到达顶层,它会下去。该算法能够满足所有的要求,但它显然不是最快的算法。

设计思路:将电梯的一些属性和运行特性封装成一个电梯类,通过电梯类来生成四个电梯对象。将电梯内外的乘客每一次点击摁键看成一次“请求”,将电梯的停靠看做是一次对这些请求的“响应”。设计一个调度程序算法,来实现对乘客请求的分析,并对每一次请求通过算法得出一个合适的电梯对象来进行响应,以达到最高的效率和最小的等待时间。

      调度算法的初步想法是方向距离优先,即同方向优先,再考虑距离,具体细节留待实际开发过程中解决。在电梯类中设置一个数据结构,称为响应队列。这个队列包含调度算法分配给每部电梯的乘客请求,然后电梯对象通过响应队列里的顺序来进行停靠响应,从而实现调度。

 1         class Elevator
 2         {
 3             private int speed;  //速度
 4             private int load;  //载重
 5             private int open_close;//开关门时间
 6             private int in_out;//进出门时间
 7             private int floor_now; //电梯当前楼层
 8             private int direction; //电梯当前方向
 9 
10             private int[] RespondQueue=new int [20];  //电梯响应队列
11             Elevator();  //电梯构造函数
12             //电梯运行功能函数
13             ...
14         }