- 阅读个人软件开发流程(PSP)的相关资料。
- 可选的语言包括:C++,C#,Java,Python。运行环境为64bit Windows 10。
- 提交的代码要求经过代码质量分析工具的分析并消除所有的警告。如Code Quality Analysis。
- 完成项目的首个版本之后,请使用性能分析工具来找出代码中的性能瓶颈并进行改进。
- 使用单元测试对项目进行测试,并查看测试分支覆盖率等指标;并写出至少10个测试用例确保你的程序能够正确处理各种情况。如Studio Profiling Tools。
- 使用Git来管理源代码和测试用例,代码有进展即签入本地仓库,定期将进展推送到服务器上,并向主仓库发送Merge Request提交每周工作内容。签入记录不合理的项目会被抽查询问项目细节。
- 按照要求发布博客,结合结对项目的实践经历,撰写解决项目的心路历程与收获。 博客与项目明显不符的作业将取消作业成绩。
注意:要求3、4、5根据所选编程语言使用对应的开发工具来完成。
一幢21层的大厦,有4部电梯,乘客的体重:平均70kg,最大120kg,最小40g)。
其他的常量包括:电梯的速度,电梯门开关时间,乘客进出电梯的时间。
大厦的楼层为-1,0,...,20,-1层是地下停车场,1层是大厅。以下是4部电梯的参数:
电梯编号 | 服务楼层 | 乘客人数限制 | 重量限制 |
---|---|---|---|
1 | 所有楼层 | 10 | 800kg |
2 | 1-10层 | 10 | 800kg |
3 | -1,1-10层 | 20 | 1600kg |
4 | -1,1,11-20层 | 20 | 2000kg |
注意: 以上参数信息是可以修改,即电梯调度程序可以在初始化时读取配置信息来设置上述参数值。
设计一组可用于电梯调度的接口和类定义。主要考虑:
- 简单
- 如何提供足够的信息给调度器,以便于能顺利完成调度?
- 实际驱动电梯的组件是什么?
- 对何规定乘客的行为?例如当乘客需要从3层到20层时,但是当前电梯不能直达,乘客应如何行动?
模仿公交车的调度算法,实现一个“BUS”算法,这大概是用于电梯调度中性能最差的一个算法,也就是说你下一阶段实现的算法的性能至少应高于这个算法。
算法的**是:将电梯当作公交车,从-1层一直到最高层(20层),每一层都停,并且开门,让乘客进出,然后关门,继续向上走。直到最高层,再向下。
阅读项目wiki中电梯调度算法,自行了解算法的**,尝试实现其中2种算法,并进行性能的比较。
目前的这个测试程序只有命令行界面, 请给它设计UI界面, 显示乘客/电梯的运动, 并实现之。
使用相同的大厦+电梯参数,同样的乘客模拟数据,可以同时运行两个调度界面,分别加载一个调度算法,显示乘客+电梯在系统中的运行情况,并且有专门的状态显示(时间,载客人数,KPI等)。
模拟运行完之后,可以直观看到哪个调度算法是快速的。
该项目由本人与魏慧聪同学共同完成
代码位于code/elesys中,使用C++ Qt 共同实现
代码的相关文档位于根目录中