小组成员:吴煜10061149 全风楠10061186
先上和我结对的全疯男blog链接,关于作业要求的博客部分他写的很好了,我就不浪费笔墨,和他合作很愉快
http://www.cnblogs.com/quanfengnan/
这篇博客主要是完成这次作业的一些感想和“牢骚”
结对编程确实对提高效率很有帮助,两个人互相督促会少很多惰性,遗憾的是经过一个十一长假的休息,一次出去秋游的周末,一个被运动会打扰的coding time,我们实际投入到作业的时间不是很充分,电梯算法相对其他组同学效率有点低,但相信我们对这次作业的积极态度和想法会弥补的。
在写算法时,一个很头疼的问题就是这个电梯系统没有一份详尽的文档,或者说压根就没有文档。看来在软件工程中,尤其是团队和维护性的工程中,没有文档对开发人员简直就是噩梦啊。我们花了几个小时粗略的读了下代码匆匆上手,却到处碰壁,连电梯的运行机制都没搞清。无奈之下,我硬是单步执行好几百行才对这个项目恍然大悟。
由于错误的估计了作业工程量,我们的算法有点弱,但是创意性的利用bus算法去优化我们的调度算法。
简单说我们的调度算法是基于指令驱动的,在小样本,乘客密度小时,用队列先入先出的方式最快速的满足外部请求,对内部请求则进行排序依次停靠合适楼层。合理的算法对外部请求也应该有一个顺次的排序,我没有做,一个是疏于大范围的改动数据结构,再来本着请求先相应的思想,这种算法也无可厚非。实际运行结果第一个80左右,第二个三四百左右,第三个近1000,我理解是因为第三个xml体现了下班高峰,乘客从分散的楼层回家 ,所以在电梯外等待的时间过长。很多同学用了外部命令排序后效果提升一倍左右,这个是值得我借鉴的地方,但同时会牺牲一小部分人苦苦等电梯,而这部分时间被平均掉了。
为了提升效率,我将四部电梯中的一部改装成了bus,只有三部电梯相应指令,bus则自顾自的运行着,这种方法牺牲了稀疏乘客如passenger1的效率,运行结果一百多点;但是第三种情况下改善了一半,因为很多下班的人坐bus就可以顺利到达,而不用等电梯送走别人而苦苦不接自己。更进一步,现实中的人是“高智商”的,如果他可以衡量自己是坐bus回家还是做正常的电梯,那么效率自然更高一些。