简单电梯调度程序
偷了个懒,拿寒假作业改改
模块划分
其实没什么可以说的,跟寒假作业差不多,就是把World
类和Elevator
类合并了一下
Elevator
类:维护已入厢乘客容器,当前楼层,负责处理入厢出厢,维护等待状态,运行主循环。Passenger
类:其对象记录乘客信息。Scheduler
类:(核心)决定电梯的上升下降和停靠,持有Elevator
对象的引用,可访问所有需要的信息,可以有自己的状态,可插拔。
实现方法
预估时间法
每一秒,电梯只有向上,向下,停靠三种操作,我们可以预估每种操作所需时间,选取时间最小的。
仍然是使用移植的Stolf大佬的算法。
这里必须给Stolf大佬赞一个,几乎所有参数都不硬编码,只需要改几个变量和宏就可以了。
遇到的困难
好像我遇到的困难都比较奇怪
1. Visual Studio无法构建CMake项目
Visual Studio打开CMake项目后持续创建cmd.exe进程,就是不构建项目,原因未知,网上找不到有相似问题的。
Workaround: 创建Visual C++项目,把源代码移过去。
Solution: 重装VS解决