首页 > 其他 > 详细

关于电梯调度的设计 开发者:闫立新 苏海岩

时间:2014-03-19 12:01:25      阅读:413      评论:0      收藏:0      [点我收藏+]

经过讨论和设计,对于多路电梯调度,我们确立了具体的数据结构模型,主要还是采用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//电梯人数计数器 记得必须初始化为 

   int flag_inHigh//二十个楼层有无请求的标志,哪个楼层如果有请求,该标志置 

   int weight//电梯重量,记得要进行初始化为 

   int flag_out[High];

 }Lift 

 

函数接口说明: 

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

int OutOrIn(Lift &L,Passage *Queue,Passage *LiftQ;//进和出电梯的总函数 

int Update(Lift &L,Passage *Queue,Passage *LiftQ;//刷新的函数 

int RunLift &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);//计算电梯重量的函数

 

 

 

 

开发者:闫立新 苏海岩

关于电梯调度的设计 开发者:闫立新 苏海岩,布布扣,bubuko.com

关于电梯调度的设计 开发者:闫立新 苏海岩

原文:http://www.cnblogs.com/yanlixin1993/p/3607925.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!