多服务台排队系统的仿真_第1页
多服务台排队系统的仿真_第2页
多服务台排队系统的仿真_第3页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验 3- 多服务台排队系统的仿真姓名: 学号:一、目标任务已知一个系统有 N 个服务员,能力相等,服务时间服从指数分布。顾客的到达 时间间隔服从指数分布。用 Monte-Carlo 仿真,分别求按下列方案的总体平均排队 时间: M|M|N 。 N 个单通道系统并列,按 1/N 概率分裂到达流。 N 个单通道并列,挑选最短的队。要求: 给出程序设计的过程。 如果采用固定的N,则要求N>2。 至少取p二和p二两种强度运行程序。 对结果进行分析。二、编程语言Matlab三、关键代码N = 3; % 服务员人数 r = 6; % 顾客到达流强度 u = 20; % 服务员服务强度按 1.N 的

2、顺序循环排入服务T = 1000000; % 仿真运行时间avg_wait_time= ; %平均等待时间for i=1:100% 模拟排队函数server_time= , , ; %用来保存服务员下一空闲时间time = 0;%绝对时钟,初始为 0client_num =0; %顾客总数,初始为 0CRTime = 0;%顾客到达时间间隔ServeTime =0; %顾客服务时间server_id = 0; %当前进入排队窗口的服务员编号total_wait_time = 0;%系统中到达顾客的总等待时间while 1CRTime =exprnd(1/r); %按指数分布产生顾客到达时间间隔

3、time = time+ CRTime; %更新系统的绝对时钟if time > Tbreak;endclient_num= client_num + 1; %顾客数加 1ServeTime= exprnd(1/u); %按指数分布产生顾客服务间隔server_id = mod(client_num, N); %员窗口if server_id =0 server_id = N;endif server_time(1, server_id) <= time % 如果当前 server_id 号 服务员空闲,则直接接收服务server_time(1, server_id) = time

4、 + ServeTime; % 服务员下 一空闲时间为当前绝对时钟加上当前服务时间else % 否则所有服务员都在忙碌,顾客要排队等候total_wait_time = total_wait_time + server_time(1, server_id) - time; % 顾客排队等候时间为当前服务员下一空闲时间减去绝对时 钟server_time(1, server_id) = server_time(1, server_id) + ServeTime;endendavg_wait_time = avg_wait_time, total_wait_time/client_num;end%

5、 计算平均等待时间 mean_avg_wait_time = mean(avg_wait_time);fprintf(' p 二平均等待时间%n', r/u, mean_avg_wait_time); %打印平均等待时间% 绘制每次仿真的平均等待时间和总体平均等待时间线状图x = 1:100;%plot(x, avg_wait_time, x, mean_avg_wait_time); scatter(x, avg_wait_time, '.');方案二:N = 3; %服务员人数r = 6; %顾客到达流强度u = 20; %服务员服务强度avg_wait_t

6、ime= ; %平均等待时间for i=1:100% 模拟排队函数server_time= , , ; %用来保存服务员下一空闲时间time = 0;%绝对时钟,初始为 0client_num =0; %顾客总数,初始为 0CRTime = 0;%顾客到达时间间隔ServeTime =0; %顾客服务时间server_id = 0; %当前进入排队窗口的服务员编号total_wait_time = 0;%系统中到达顾客的总等待时间while 1T = 1000; % 仿真运行时间CRTime = exprnd(1/r);%按指数分布产生顾客到达时间间隔time = time + CRTime;

7、更新系统的绝对时钟endclient_num = client_num + 1; %ServeTime = exprnd(1/u); % server_id = randi(1 N); % if server_time(1, server_id) <= time %顾客数加 1 按指数分布产生顾客服务时间间隔 按 1/N 的概率排入服务员窗口如果当前 server_id 号服务员下服务员空闲,则直接接收服务server_time(1, server_id) = time + ServeTime; %一空闲时间为当前绝对时钟加上当前服务时间else %否则所有服务员都在忙碌,顾客要排队等候

8、total_wait_time = total_wait_time + server_time(1, server_id) - time; %顾客排队等候时间为当前服务员下一空闲时间减去绝对时钟server_time(1, server_id) = server_time(1, server_id) +ServeTime;endendavg_wait_time = avg_wait_time, total_wait_time/client_num; end打印平均% 计算平均等待时间 mean_avg_wait_time = mean(avg_wait_time);fprintf('

9、p 二平均等待时间%n', r/u, mean_avg_wait_time); %等待时间% 绘制每次仿真的平均等待时间散点图x = 1:100;scatter(x, avg_wait_time, '.');' 丿 2 £ 方案三:N = 3; %服务员人数r = 6; %顾客到达流强度u = 20; %服务员服务强度avg_wait_time= ; %平均等待时间for i=1:100% 模拟排队函数server_time= , , ; %用来保存服务员下一空闲时间time = 0;%绝对时钟,初始为 0client_num =0; %顾客总数,初始

10、为 0CRTime = 0;%顾客到达时间间隔ServeTime =0; %顾客服务时间server_id = 0; %当前进入排队窗口的服务员编号total_wait_time = 0;%系统中到达顾客的总等待时间while 1T = 1000; % 仿真运行时间CRTime = exprnd(1/r);%按指数分布产生顾客到达时间间隔time = time + CRTime;更新系统的绝对时钟endclient_num = client_num + 1; %ServeTime = exprnd(1/u); % temp = min(server_time); %顾客数加 1按指数分布产生顾

11、客服务时间间隔寻找排队时间最短的服务员窗口x, y = find(temp = min(min(server_time);server_id = y; %按队伍最短排入服务员窗口if server_time(1, server_id) <= time % 如果当前 server_id 号 服务员空闲,则直接接收服务server_time(1, server_id) = time + ServeTime; %服务员下一空闲时间为当前绝对时钟加上当前服务时间else %否则所有服务员都在忙碌,顾客要排队等候total_wait_time = total_wait_time + server_

12、time(1, server_id) - time; % 顾客排队等候时间为当前服务员下一空闲时间减去绝对时 钟server_time(1, server_id) = server_time(1, server_id) +ServeTime;endendavg_wait_time = avg_wait_time, total_wait_time/client_num; end% 计算平均等待时间 mean_avg_wait_time = mean(avg_wait_time);fprintf(' p 二平均等待时间 %n', r/u, mean_avg_wait_time);

13、%打印平均等待时间% 绘制每次仿真的平均等待时间散点图x = 1:100;scatter(x, avg_wait_time, '.');四、实验结果与分析图 1 方案一 仿真的平均等待时间散点图图2 方案一平均等待时间M|M|N1. 输入参数: 服务员人数 N, 顾客到达流强度 r, 服务员服务强度 u, 仿真 运行时间 T;2. 各变量初始值置 0: 绝对时钟 time , 服务员下一空闲时刻数组 server_time ( 其中按顺序保存每一个服务员的下一空闲时刻) , 顾客总 数 client_num , 顾客到达时间间隔 CRTime, 顾客服务时间 ServeTime

14、, 当前 进入排队 窗口的服务员编 号 server_id , 系统中顾 客总等待时 间 total_wait_time ;3. 按照指数分布产生下一顾客到达的时间间隔CRTime, time+=CRTime。 若time>T , 输出 total_wait_time/client_num ;4. Client_num +;5. 按照指数分布产生顾客到达时间间隔 ServeTime;6. 按服务员的顺序生成当前服务员的 server_id ;7. 如果当前 server_id 号服务员空闲, 则更新服务员下一空闲时间为当前绝 对时钟加上当前服务时间并存入 server_time 对应数组

15、。 否则所有服务员都 在忙碌, 顾客要排队等候, 总的排队时间加上顾客排队等候时间, 等候时间 为当前服务员下一空闲时间减去绝对时钟。 再更新当前服务员下一空闲时间加 上服务时间 ServeTime 。8. 转到 3;二:图 3 方案二 仿真的平均等待时间散点图图 4 方案二平均等待时间N 个单通道系统并列, 按 1/N 概率分裂到达流1. 输入参数: 服务员人数 N, 顾客到达流强度 r , 服务员服务强度 u, 仿真 运行时间 T;2. 各变量初始值置 0: 绝对时钟 time , 服务员下一空闲时刻数组 server_time ( 其中按顺序保存每一个服务员的下一空闲时刻) , 顾客总

16、数 client_num , 顾客到达时间间隔 CRTime, 顾客服务时间 ServeTime , 当前 进入 排 队 窗 口的 服 务 员编 号 server_id , 系 统 中顾 客 总 等待 时 间 total_wait_time ;3. 按照指数分布产生下一顾客到达的时间间隔CRTime, time+=CRTime 。 若time>T , 输出 total_wait_time/client_num;4. Client_num +5. 按照指数分布产生顾客到达时间间隔 ServeTime ;6. 按 1/N 概率生成当前服务员的 server_id ;7. 如果当前 serve

17、r_id 号服务员空闲, 则更新服务员下一空闲时间为当前绝 对时钟加上当前服务时间并存入 server_time 对应数组。 否则所有服务员都 在忙碌, 顾客要排队等候, 总的排队时间加上顾客排队等候时间, 等候时间 为当前服务员下一空闲时间减去绝对时钟。 再更新当前服务员下一空闲时间加 上服务时间 ServeTime 。8. 转到 3;' 丿 2 £ 方案三:图 4 方案三 仿真的平均等待时间散点图图 5 方案三 仿真的平均等待时间散点图N 个单通道并列, 挑选最短的队1. 输入参数: 服务员人数 N, 顾客到达流强度 r , 服务员服务强度 u, 仿真运 行时间 T;2. 各变量初始值置 0: 绝对时钟 time , 服务员下一空闲时刻数组 server_time ( 其中按顺序保存每一个服务员的下一空闲时刻) , 顾客总数 client_num , 顾 客到达时间间隔 CRTime, 顾客服务时间 ServeTime , 当前进入排队窗口的服务员 编号 server_id , 系统中顾客总等待时间 total_wait_time ;3. 按照指数分布产生下一顾客到达的时间间隔CRTime, time+=CRTime 。 若time>T , 输出 total_wait_time/client_nu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论