结对开发项目:电梯调度
小组成员:马翔 胡佳奇
项目题目:一栋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 }