单服务台排队系统详细设计说明书

单服务台排队系统详细设计说明书
单服务台排队系统详细设计说明书

单服务台排队系统详细设计说明书

1引言

1.1编写目的:

1.2背景:

1.3定义:

1.4参考文献: 2总体设计概述

本软件由三个模块组成,分别是:总控模块(control )、顾客到达模块(arrive )、顾客离开模块(departure )。

3类的定义

根据仿真方案的需求,定义事件表类(Table),包括:

属性:a.事件数目n_event (即事件表长度)。

b. 事件类型type_event

c. 事件发生时间time |

struct eve nt_talbe

{int type_event;

int time;

}e_t[100];

struct eve nt_talbe n ext;

int n_event;

操作:a.插入操作insert :按事件发生时间的先后将到达或离开事件插入事件表。

将事件表e_t[i]以后的值后移一位

for(j=i;i<=n_event;j++) {e_t[i+1].time=e_t[i].time;

e_t[i+1].type_event=e_t[i].type_event}

事件表长度+1

n eve nt++

返回

b.取事件操作pop:将事件表中队首的事件取出。

4程序描述

本软件的各子程序或函数如下表 4.1所示。

表4.1单服务台排队系统的子程序和函数

4. 1总控模块

1)模块描述:总控模块主要负责事件选取,推进仿真的进行。

2)功能描述:总控模块必须完成五项基本工作,包括:

a 系统初始化:状态变量取值初始化、系统参数初始化、仿真时钟初始化等。

b 时间扫描:确定下一最早发生事件的发生时间,并将仿真中推进到该时刻。

c 事件识别:检索当前仿真时刻将要发生的所有时间,并确定执行顺序。

d 事件执行:执行获得资格的当前事件的事件例程。

e 返回报告:返回报告模块的结果。

4)数据定义:本模块涉及到的变量名称和定义如下表 4.2所示。

表4.2总控模块涉及的变量和定义

5)流程逻辑:

开始

4.1.1初始化子程序INIT ()

根据仿真方案,该子程序负责初始化整个系统,包括实例化一个事件表Even t_Table 对象,设相关变量初值为0,设置第一个事件为顾客到达事件及首次事件发生时间,即

e_t[co un t].time=time+EXPON(m_arrvie_t); e_t[co un t].type_eve nt=1

4.1.2报告子程序REPORT。

根据仿真方案,该子程序用于产生服从负指数分布的随机变量,其返回值用于表示顾客

到达的随机时间间隔以及随机服务长度。

(1)参数:

(2)函数:

Float Expon(float rmean):该函数通过调用Drand()函数和公式v=-rmean*log(rand),产生

服从负指数分布的随机数,其返回值v用于变量tne[next]的生成,即用于时钟推进。

4.2顾客到达模块arrive。

1) 模块描述:该模块用于处理顾客到达事件,解决顾客到达后引发的系统状态改变以及队列状态改变的问题。

2) 功能描述:该模块主要完成以下五部分功能:

a 服务时间判断:获取当前时间,判断是否在服务时间内。

b 系统状态判断:获取服务台状态,决定仿真进程走向。

c 入队。

d 预定下一事件:预定顾客服务完成后离开事件,保证仿真模型持续地运行下

去。

e 延迟时间获取:获取顾客因在队列中等待所延迟服务的时间。

3) 数据定义

本模块涉及到的变量名称和定义如下表 4.3所示。

表4.3顾客到达模块涉及的变量和定义

4)流程逻辑:

4.3顾客离开模块depart。

1)模块描述:该模块用于处理顾客离开事件,解决顾客离开后引发的系统状态改变以及队列状态改变的问题。

2)功能描述:该模块主要完成以下四部分功能:

a 队列状态判断:获取当前队列状态,判断并决定仿真走向。

b 出队。

c 预定下一事件:预定顾客服务完成后离开事件,保证仿真模型持续地运行下

去。

d 延迟时间获取:获取顾客在队列中等待的时间。

相关主题
相关文档
最新文档