博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【C#】结对项目开发-电梯调度需求分析(党云龙、黄为)
阅读量:6232 次
发布时间:2019-06-21

本文共 1618 字,大约阅读时间需要 5 分钟。

1 、春晖楼实际调研

  数据

 

  电梯实际运行概况

    经过实际的调研,电梯的实际运行状况与开始的初步想法有些出入,在外部同一组电梯,按下其中一个请求按钮,一组电梯的请求信号同时亮起同时做出响应,并且电梯没有固定初始位置,初始位置默认为电梯最后到达的一楼层,在内部进入电梯后如不对电梯发出任何请求,电梯不做出任何响应,电梯运行中优先响应与电梯运行方向相同的请求,

                         

2、设计

      对于四部电梯调度进行简化来进行思考;首先我们假定有一台电梯,对于上述条件进行调度。

   

  • 电梯 
    电梯有三种状态,上升、静止、下降;同时电梯根据上述条件有乘客与重量的限制,是否超重;在最顶层上升不可用,在最低层下降不可用,求助状态,断电状态,电梯门状态,电梯所在楼层。
    Class 电梯
    {
        private int MoveStatus;//运行状态
        private int MoveDir;//运行方向
        private int MaxWeight;//重量限制
        private int WhereFloor;//所在楼层
        private bool HelpSingle;//求助信号
        private bool NoPower;//断电状态
        private bool DoorStatus;//电梯门状态
        pubulic bool OpenDoor();//打开电梯门
        pubulic bool CloseDoor();//关闭电梯门
        pubulic bool OverWeight();//检测超重
        pubulic bool ChangStatue();//改变电梯状态
       
    }
  • 运行
    单电梯情况:
    每一层,乘客发出请求,电梯响应请求。首先,进行方向判断,优先与电梯方向相同并且楼层与电梯所在楼层相近的请求。其次,待与电梯方向相同的请求执行完毕之后,电梯改变运行方向,按照之前的规则执行,直至电梯没人,电梯恢复初始位置。
    假设:电梯初始楼层在一楼,MoveRequest=0(用户请求变量),监测用户请求,此时电梯门处于关闭状态;
            1、若有用户请求,判断是否本层请求
                 若在本层,则用OpenDoor()函数打开电梯门,同时每隔固定时间检测用户是否已全部进入电梯,若已全部进入电梯,则用CloseDoor()函数关闭电梯,继续运行。
                 若不在本层,则判断时候接收到多了用户请求,若是多个请求则利用JudgeNext()函数判断该响应哪一个请求。若只有一个请求,则直接响应,判断是否需要改变运行方向MoveDir,上为1,下为-1,改变运行状态MoveStatus上升为1,静止为0,下降为-1.

                2、若无请求,则继续监视。

          JudgeNext()

          {

              if(判断请求楼层是否与电梯运行方向相同)

                {

                      for()//多个请求,依次响应

                      {

                       if(若多个请求,比较距离本楼层最近的请求)
                      {给出响应}

                      }

                 }
              else

               {

                   电梯方向响应完成后,改变方向,响应反方向的请求。规则与上面类似。

               }

           } 
        推广:四电梯情况
                与一电梯情况区别在,某人在某层同时给四部电梯发出请求,四部电梯如何响应的问题。  
                pubulic float TotleCost()//计算出此状态 到达目标层所用时间

               {

                 电梯状态随着请求的结束不断变化,每个状态时间不一样。

                }      

                BestJudgeNext()//给出最有响应

               {

                  根据四部电梯的状态,计算出到达本层并响应该请求总共所用的时间,取时间最短的电梯做出响应。

               }  

  • 特殊情况
    超重:当电梯超重时,电梯发出警告,电梯不可用,保持运行方向,待问题解决完之后,电梯可用,继续运行。
    断电:在备用电源的支持下,电梯恢复到初始位置。
    意外停止:电梯强制静止,通知发送求助状态。

3、设计窗体初稿:

     

 以图片替换的形式来展示电梯的运行过程。

 

转载于:https://www.cnblogs.com/feelwell/articles/3590819.html

你可能感兴趣的文章
TClientDataSet[22]: 数组字段与 ObjectView
查看>>
Oracle Data Guard(1)
查看>>
我的友情链接
查看>>
实现iOS图片等资源文件的热更新化(三):动态的资源文件夹
查看>>
OK6410-使用DirecetFB支持Qt4.7.0
查看>>
python获取linux系统信息、性能阀值、短信网关发送的例子
查看>>
微信公众号实现回复图文消息
查看>>
单点登录方案的比较和选择
查看>>
Android 涂鸦最佳实践
查看>>
Paste Deployment
查看>>
Ubuntu 解压错误
查看>>
eclipse项目(project)出现感叹号的一种处理办法
查看>>
CCSpawn 同步动作
查看>>
Gexmul虚拟机内存空间原理简述
查看>>
java--文件统计
查看>>
解决Oracle10修改机器名后oracledbconsoleorcl服务无法启动的问题
查看>>
IOS API中的“错误”
查看>>
PHP_常用正则资料
查看>>
java通过JDBC链接mysql报错解决办法
查看>>
猎豹浏览器抢票功能遭屏蔽 要“约谈”12306
查看>>