11061148吴文会 & 11061176王洛书
【附加题1】改进电梯调度的interface 设计, 让它更好地反映现实, 更能让学生练习算法, 更好地实现信息隐藏和信息共享。
答:
1、给每个电梯加一个目标楼层的动态数组。即我们程序中的_Target。
2、在阅读代码中,我们发现电梯关上需要5ticks,太慢了。应该在电梯里加一个可以快速关闭的按钮,并提供接口。
3、给人一个进电梯的速度,高峰期时进电梯时间必然增长,不能都视为一样。
4、在3的基础上,增加一个电梯延时关闭的接口。
[附加题4] 我们现在的题目是假设所有电梯到达所有的楼层。 在现实生活中, 多部电梯到达的楼层都不一样。如果是这样 (例如3号电梯能到达10 – 20 层, 4 号电梯能到达5-15 层),整个程序框架和你的电梯调度模块要做什么改变?
1、分析:0-5层2部电梯可达,5-10层、15-20层3部电梯可达,10-15层所有电梯都可以达到。
在设计电梯调度算法时可以考虑,10-15层的用户优先考虑乘坐3、4号电梯,15-20层的用户优先考虑坐3号电梯,5-10层的用户优先考虑坐4号电梯。在算法中确定哪个电梯呼应某用户请求时,给优先级赋一个权重,和距离、方向等因素一起考虑。
2、在我们的电梯调度模块中,是让所有电梯空闲时都返回一层。如果3号、4号有了到达楼层的限制,则规定3号、4号电梯在哪层楼空闲时,便停在哪层楼,不做改变。1、2号电梯空闲时返回一层。
3、如果可以自由选择哪部电梯到达指定楼层,或可以修改电梯的载重量,应尽量分配载重量小的电梯去指定楼层。