1. 前言
本次作业由我和焦任战同学结对完成,我们选择的题目是电梯调度算法,我作为驾驶员,他作为领航员。
2. 题目要求
现有一新建办公大厦,共有21层,共有四部电梯,所有电梯基本参数如下表所示,其使用规定如下:
- 楼层号为0~20,其中0号为地下一层
- 有楼层限制的电梯不在相应楼层停靠,如单双层
- 所有电梯采用统一按钮控制
- 请根据上述要求设计并实现一个电梯控制程序,使得用户平均等待时间尽可能小,如果有图形显示就更好了。
- 算法设计方面问题,大家也可以咨询助教,或者参考这篇文章 https://www.jianshu.com/p/eec35bd4e0df
- 另外大家也可以参考邹老师的这篇文章 https://www.cnblogs.com/xinz/archive/2011/03/20/1989662.html
3.完成情况
(1)解题思路
采用java自带的GUI组件,绘制用户界面,通过多线程和按钮监听模拟电梯运行
(2)运行程序
(3)图形化界面
(4)算法思路
为选择电梯函数(search)添加同步锁,多个电梯线程抢占search()函数,根据电梯上行、停止、下行状态以及到目标楼层的距离选择最优解对电梯进行调度。
(5)工作照片
4.总结
本次作业由于时间仓促笔者仅通过面向对象方式完成了整个程序,导致整体耦合性较高,对后期测试带来一些麻烦,接下来将会向面向接口或切面方式改进。用户界面通过swing组件和多线程之间调度勉强模拟出电梯的运行效果,但java自带的swing组件比较过时,后期可以采用JS代替。