随着小游戏的制作的结束,我们迎来了第二个pairproject—编写高效的电梯调度程序。我和Gaoyao同学作为一组,程序已经完成,在这里我们写上对本次pairproject的总结。
首先我们完成了邹老师要求的测试接口的编写。我们的测试框架是基于指令触发的,每当有一个乘客(在电梯内或外)按下按钮时,调用一次调度程序。这样的好处是,测试调度程序所需时间只与指令个数有关,不会出现因模拟长时间调度而需大量时间的情况。我们讨论决定了这个框架,最后伪代码由我完成。
提交了测试框架的伪代码之后,我们的任务是,根据老师提供的测试框架和接口编写调度程序。老师提供的测试框架是用时间片触发的,据此我们的调度程序分为三种情况:
- 触发时电梯正向上运动:搜索电梯上方的有向上指令的最近的可达层,如果有,则下一步到达该层;如果没有,则搜索所有有向下指令的最近的可达层,如果有,则下一步到达该层;如果仍没有,则搜索电梯下方的有向上指令的最近的可达层,如果有,则下一步到达该层;如果仍没有,这是不可能滴。
- 触发时电梯正向下运动:调度策略与1中所述相反。
- 触发时电梯静止:如果历史方向为向上,则与1中所述相同,如果历史方向为向下,则与1众所诉相反,如果历史方向为静止,则与1中所述相同。
我们的调度算法与实际电梯相似,我们相信在实际情况下会有较好的调度结果。下面奉上照片一张!
--xiaoming