电梯调度算法

时间:2021-01-29 14:31:28

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代替。