• 电梯调度二


    结对开发:汪洋,辛垧

    一、开发背景

    假设我们正在构建一个高大的办公楼,它有大约电梯配置如下:大厦有21层,从地面0 , 1 ​​, ... 20 。地板0是地下停车场水平, 1楼是大堂的水平。 4部电梯,很多乘客使用这些电梯的日常(旅客重量:平均70公斤最大120公斤,最小45公斤)。其他常量数据:电梯速度,开/关门时间,乘客的时间要在/走出电梯。

    四部电梯,每部电梯有乘客人数限制和最高载重的限制如下:

    电梯名称

    停靠层数

    乘客限制

    重量限制

    1

     所有楼层

    10

    800 kg

    2

     所有楼层

    10

    800 kg

    3

     所有楼层

    20

    1600 kg

    4

     所有楼层

    20

    2000 kg

    二.实际调研

    昨天应民哥的推荐,在没被260逮住的前提下,我们了解了一下260的电梯调度情况,其中有一部手术专梯,性能优越,一般人不允许使用,两部单层梯,两部双层梯,一部单双层梯,这里我们先做简单一点的,考虑最正常的情况,也就是单双层梯,其中我们昨天记录的数据经整理如下:

    从表格统计中我们得出的结论是:

    三、开发环境

       Microsoft Visual Studio2010

    四、性能分析

     在这里假定正常情况下,电梯均停在0层,当有乘客请求电梯时,电梯运作,经过几次运作后,可能四部电梯在不同或相同的楼层,同时运行方向或相同或不同,此时,当有乘客请求电梯时,再选择一部最优电梯来满足乘客请求。当乘客进入电梯按下要到达楼层的按钮后,按照原来的运行方向进行运行,同时是每5 s楼层数改变1(假定是5秒,这里实际时还可以更改参数不论加减)。直到El_run_count[]所有值为0,电梯再下落到0层,并将状态改为停止状态。

    五、正常流程

    那么正常的流程:

    1.乘客按动外部按钮请求电梯。

    2.经过调度算法,调派最合适的一部电梯到达客户的楼层。

    3.用户进入电梯,选择要到达的目的楼层。

    4.电梯载乘客到达指定楼层。

    六、初步设计流程及框架

    首先要有一个电梯的类Elevator

    {

    Int  El_no,电梯序号(1-4)

    Int  El_st_weight,电梯标准载重;

    Boolean  El_statues,电梯是否可运行(比较是否超重)

    Int  El_go_direction,电梯运行方向(1:上,-1:下,0:停止);

    Int  El_stay_floor,此时电梯所在楼层;

    Int  El_stay_time,电梯在各层停留时间;

    Int  El_run_time_one,电梯运行一层所需的时间

    Int  El_run_time,电梯总的在运动中的运行时间

    Int   El_run_count[21];记录乘客在电梯内部按下按钮的楼层,也是乘客要到达的楼层。

    方法:

    El_req_priority(Pe_stay_floor);电梯调派的选择,电梯“优先级”。

    电梯运行的方法:El_run(  );

    }

    同时在我们的设计想法中,还有一个关键变量:Pe_go_direction

    即:乘客按动外部按钮请求电梯,外部的按钮中要记录乘客去往的方向。

    两个比较量,电梯运行时间,电梯停留时间

    四种情况,之前要记录乘客在电梯外部按下按钮要请求的方向(是上楼还是下楼)。

    1.电梯运行方向向上,乘客的请求楼层 > 电梯当前楼层

    层数之差:Pe_stay_floor - El_stay_floor;

    电梯可能停靠的层数是在count[a] ,El_stay_floor <= a <=Pe_stay_floor

    2.电梯运行方向向上,乘客的请求楼层 < 电梯当前楼层

    层数之差:40 - El_stay_floor - Pe_stay_floor

    电梯可能停靠的楼层是count[a],a>= Pe_stay_floor

    3.电梯运行方向向下,乘客的请求楼层 < 电梯当前楼层

    层数之差:El_stay_floor - Pe_stay_floor

    电梯可能停靠的楼层是count[a],Pe_stay_floor <=a<= El_stay_floor

    4.电梯运行方向向下,乘客的请求楼层 > 电梯当前楼层

    层数之差:El_stay_floor + Pe_stay_floor

    电梯可能停靠的楼层是count[a], a<= Pe_stay_floor

    七、时间记录(表格)

    时间 3月3号/16:10-17:34 3月5日/16:20-17:45 3月7日/16:15-18:00 3月8日/9:45-11:35 3月9日/10:23-11:30 3月10日/15:00-15:33 3月11日/15:00-15:20
    汪洋 查找资料 实现调度的部分 查找资料 整合电梯模拟 撰写博客一 260调研 撰写修改博客二
    辛垧 功能概括 查阅资料 队调度的修改 修改电梯模拟 撰写修改博客一 260调研 撰写博客二
  • 相关阅读:
    框架Frameset 的JS 跳转 刷新 [转]
    Javascript的变量与delete操作符
    字符串替换方法的优劣
    Nutch介绍(译)
    权限系统—数据授权模型
    Apache Synapse介绍(译)
    java动态代理
    ASM简介
    maven使用技巧——构件搜索
    springSecurity源码分析——org.springframework.security.web.FilterInvocation类
  • 原文地址:https://www.cnblogs.com/xinshang/p/3593955.html
Copyright © 2020-2023  润新知