本次,我和马春兰同学进行结对编程,以后结对编程的内容提交在我的博客上,请老师审阅。
==========这是一个萌萌的分割线================================================
本次我们的题目是电梯调度问题,题目的详情在张翼飞老师的博客上有,我大概介绍一下。
现有一新建办公大厦,共有21层,共有四部电梯,所有电梯基本参数如下表所示:
电梯编号 | 可服务楼层 | 最大乘客数量 |
最大载重量 |
1 | 全部楼层 | 10 | 800 kg |
2 | 单层 | 10 | 800 kg |
3 | 双层 | 20 | 1600 kg |
4 | 全部楼层 | 20 | 2000 kg |
其使用规定如下:
1、楼层号为0~20,其中0号为地下一层;
2、有楼层限制的电梯不在响应楼层停靠,如单双层;
3、所有电梯采用统一按钮控制。
请根据上述要求设计并实现一个电梯控制程序,如果有图形显示就更好了。
首先,确定要干啥,通过题目,我们发现,我们要仿真4个电梯的运行,通过统一的按钮,控制电梯的调度,也就是说,电梯外面就只有一对按钮,要系统自己判断哪部电梯应该去开门,等等。。。
确定了这一点之后,再解决算法问题,我们参考了http://www.cnblogs.com/jianyungsun/archive/2011/03/16/1986439.html
博客上关于电梯算法的描述,在效率和代码复杂程度上进行了充分的考虑,最后决定选择扫描算法(SCAN)。
扫描算法:
扫描算法(SCAN)是一种按照楼层顺序依次服务请求,它让电梯在最底层和最顶层之间连续往返运行,在运行过程中响应处在于电梯运行方向相同的各楼层上的请求。它进行寻找楼层的优化,效率比较高,但它是一个非实时算法。扫描算法较好地解决了电梯移动的问题,在这个算法中,每个电梯响应乘客请求使乘客获得服务的次序是由其发出请求的乘客的位置与当前电梯位置之间的距离来决定的,所有的与电梯运行方向相同的乘客的请求在一次电向上运行或向下运行的过程中完成,免去了电梯频繁的来回移动。
算法也决定了,剩下的就是实现形式,对于电梯这种嵌入式设备来说,单片机配合LED数码管是最佳的实现方式,我们会以这种方式实现它。
SO,开工,下一章,tomorrow!