zoukankan      html  css  js  c++  java
  • 关于电梯调度的设计 开发者:闫立新 苏海岩

    经过讨论和设计,对于多路电梯调度,我们确立了具体的数据结构模型,主要还是采用C-LOCK算法,另外加一个多线程调度。

    数据结构:

    1.考虑到电梯的变化是一个动态变化的过程,那么要在动态过程中实现正常跳转,首先要确定各种跳转的状态, 因而这里我们使用枚举类型来表示电梯的各种状态:

     enum {updownstophomeStatehome}

    同时初始化最初状态为电梯在楼层一。

    2.对于乘客来说, 显然要有一个进入电梯与走出电梯的队列, 因而在这里我们是用的链表来实现这个过程的,同时用结构体来保存该乘客的信息:

     typedef struct passage 
    
    {
    
        int now//乘客当前所在的楼层
    
        int dis//乘客的目的地楼层 
    
        struct passage *next
    
    } Passage;

    3.虽然电梯中的状态是由枚举类型来实现的, 但是在整个程序的运行过程中,我们还是为电梯设置了一个结构体类型,以便保存更多的信息: 

    typedef struct lift 
    
    {  int count_C//计数电梯已到达的层数 
    
       int count_A//电梯人数计数器 记得必须初始化为 0 
    
       int flag_inHigh//二十个楼层有无请求的标志,哪个楼层如果有请求,该标志置 1 
    
       int weight//电梯重量,记得要进行初始化为 0 
    
       int flag_out[High];
    
     }Lift 

    函数接口说明: 

    函数中的参数均是使用的全局变量的传递,下面就将设想的主要函数及他们之间的参数的关系列出如下:

    int OutOrIn(Lift &L,Passage *Queue,Passage *LiftQ;//进和出电梯的总函数 
    
    int Update(Lift &L,Passage *Queue,Passage *LiftQ;//刷新的函数 
    
    int Run(Lift &L,Passage *Queue,Passage *LiftQ;//整个电梯各种状态转换的函数 
    
    int OpenTheDoor(Lift &L);//开门
    
    int CloseTheDoor(Lift &L);//关门 
    
    int Test(Lift &L,Passage *QueuePassage *LiftQ);// 测试电梯关门还是开门的函数 
    
    int Request(Lift &L,Passage *Queue);//发出请求信号的函数
    
    int ClosestLift((Lift &L);//调度最近的电梯的函数
    
    int Weight(Lift &L);//计算电梯重量的函数

    开发者:闫立新 苏海岩

  • 相关阅读:
    javascript中事件
    pku 1836 Alignment
    pku 3086 Triangular Sums
    [转]asp格式化日期
    用数组作checkboxlist数据源
    (转)Membership、MembershipUser和Roles类 详解
    asp中判断 checkbox 是否选中
    使用 AddRange 方法将多个 ListItem 对象添加到集合
    My97DatePicker,一个兼容所有浏览器的日历选择脚本(相当经典)
    .Net下批量删除数据的存储过程问题(用动态SQL )
  • 原文地址:https://www.cnblogs.com/yanlixin1993/p/3607925.html
Copyright © 2011-2022 走看看