• 【2016.4.2】结对编程 初章


    本次,我和马春兰同学进行结对编程,以后结对编程的内容提交在我的博客上,请老师审阅。

     

    ==========这是一个萌萌的分割线================================================

    本次我们的题目是电梯调度问题,题目的详情在张翼飞老师的博客上有,我大概介绍一下。

    现有一新建办公大厦,共有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!

  • 相关阅读:
    HDOJ 5347 MZL's chemistry 【打表】
    自定义轮播图插件
    Twitter Bootstrap:前端框架利器
    左边定宽,右边自适应两列布局
    JS 断点调试心得
    关于将多个json对象添加到数组中的测试
    普通选项卡+自动播放功能+向前/向后按钮 原生js
    线程队列、事件以及协程
    GIL锁、进程池与线程池、同步异步
    JoinableQueue类与线程
  • 原文地址:https://www.cnblogs.com/holy-angel/p/5347625.html
Copyright © 2020-2023  润新知