pair work结束
终于终于完成了!在请教了6班李栋大神后,我和我的partner吴瀚雄终于完成了电梯调度程序。
上篇发的算法本来是很好的,但是由于水平有限以及没有考虑周全,导致很多细节问题无法处理。最终我们放弃了这种效率较高的算法。最终我们的算法大概思路基于已经写好的BUS算法,基本如下:
BUS算法使电梯在每一层都要停靠并且开、关门,这是很浪费时间的,我们的改进也是针对这个问题。首先电梯的三种状态No(无人且停止)、Up(向上行进)、Down(向下行进),对于No的状态我们几乎没做改进,重点在于Up和Down。假设目前电梯正在向上行进,我们需要判断CurrentFloor+1层是否有人摁了电梯以及此部电梯(共有4部电梯)内是否有乘客要在这层(CurrentFloor的+1层)下电梯,若满足以上两种情况的任意一种,电梯才停靠此层;若两种情况都不满足,电梯不停靠。向下行进的情况亦如此。
这个算法看起来改动不大,但实际操作起来真是困难重重。刚开始我们漏了有4部电梯这一重要条件,浪费了一些时间。这个问题解决后,又出现了因为在foreach循环内使用List的Remove方法而导致的枚举错误。调试这个问题花去了大部分时间。之后的对象未实例化、数据溢出,多亏了李栋大神帮助才得以化解。
今天太晚了,UML图、运行截图和其他一些要求明天放到下一篇再写。
附图一张(王熹iTouch偷拍,清晰度见谅):