产品经理不设计这个吧……
条件:200层,10台电梯,现有技术
使用场景:
1. 上下班高峰期使用
2. ...
假定信息
* 200层,每层容纳的人数是一样的
* 以速度N行驶时,不接受M层内的急停
思路
1台电梯时
- 电梯在当前楼层 上方+往上移动 时,按【向下】 = 等待电梯到达 顶楼 后,再下来 当前楼层
- 电梯在当前楼层 上方+往上移动 时,按 【向上】 = 等待电梯到达 顶楼 后,再下来 底楼,再上来 当前楼层
- 电梯在当前楼层 上方+往下移动 时,按 【向下】 = 等待电梯到达 当前楼层
- 电梯在当前楼层 上方+往下移动 时,按 【向上】 = 等待电梯到达 底楼后,再上来 当前楼层
- 电梯在当前楼层 下方+往下移动 时,按 【向下】 = 等待电梯到达 底楼 后,再上来 顶楼,再下来 当前楼层
- 电梯在当前楼层 下方+往下移动 时,按 【向上】 = 等待电梯到达 底楼 后,再上来 当前楼层
- 电梯在当前楼层 下方+往上移动 时,按 【向下】 = 等待电梯到达 顶楼 后,再下来 当前楼层
- 电梯在当前楼层 下方+往上移动 时,按 【向上】 = 等待电梯到达 当前楼层
得出规律:
- 电梯有行走方向,会保持单向行走,如果用户按下 同样方向 的按钮,会最快搭到电梯
- 顶楼、底楼如果是一个变量,那么可以减少行驶距离
- 顶楼、底楼。在 有任务 时,等于 任务队列中的最高、底楼层;
- 顶楼、底楼。在 无任务 时,等于 当前楼层
省略10000字(真的!!ಠ_ಠ
单个电梯的运作逻辑 + 多个电梯间的调度逻辑 + 高优先级调度逻辑(例:场景1 “上班高峰期时,优先先上”)
再继续写下去太长了,但是这样拆解问题后,其实已经可以摸到窍门,实际上,题主提出的只是一个情景,现实中的调度系统,会考虑更多情景,但是用这套思路,应该是可以兼容到的,
本来没想答这个问题,但是上下班老是堵电梯,让我对电梯的调度有兴趣,尝试一答后,反而对现在大楼的电梯调度系统有什么缺陷有了一个新的理解