《多服务台排队系统的仿真4192.pdf》由会员分享,可在线阅读,更多相关《多服务台排队系统的仿真4192.pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 多服务台排队系统的仿真 Lele was written in 2021 实验 3-多服务台排队系统的仿真 姓名:学号:一、目标任务 已知一个系统有 N 个服务员,能力相等,服务时间服从指数分布。顾客的到达时间间隔服从指数分布。用 Monte-Carlo 仿真,分别求按下列方案的总体平均排队时间:M|M|N。N 个单通道系统并列,按 1/N 概率分裂到达流。N 个单通道并列,挑选最短的队。要求:给出程序设计的过程。如果采用固定的 N,则要求 N2。至少取=和=两种强度运行程序。对结果进行分析。二、编程语言 Matlab 三、关键代码 方案一:N=3;%服务员人数 r=6;%顾客到达流强度 u
2、=20;%服务员服务强度 T=1000000;%仿真运行时间 avg_wait_time=;%平均等待时间 for i=1:100%模拟排队函数 server_time=,;%用来保存服务员下一空闲时间 time=0;%绝对时钟,初始为 0 client_num=0;%顾客总数,初始为 0 CRTime=0;%顾客到达时间间隔 ServeTime=0;%顾客服务时间 server_id=0;%当前进入排队窗口的服务员编号 total_wait_time=0;%系统中到达顾客的总等待时间 while 1 CRTime=exprnd(1/r);%按指数分布产生顾客到达时间间隔 time=time+
3、CRTime;%更新系统的绝对时钟 if time T break;end client_num=client_num+1;%顾客数加 1 ServeTime=exprnd(1/u);%按指数分布产生顾客服务间隔 server_id=mod(client_num,N);%按 1.N 的顺序循环排入服务员窗口 if server_id=0 server_id=N;end if server_time(1,server_id)T break;end client_num=client_num+1;%顾客数加 1 ServeTime=exprnd(1/u);%按指数分布产生顾客服务时间间隔 serv
4、er_id=randi(1 N);%按 1/N 的概率排入服务员窗口 if server_time(1,server_id)T break;end client_num=client_num+1;%顾客数加 1 ServeTime=exprnd(1/u);%按指数分布产生顾客服务时间间隔 temp=min(server_time);%寻找排队时间最短的服务员窗口 x,y=find(temp=min(min(server_time);server_id=y;%按队伍最短排入服务员窗口 if server_time(1,server_id)T,输出 total_wait_time/client_n
5、um;4.Client_num+;5.按 照 指 数 分 布 产 生 顾 客 到 达 时 间 间 隔ServeTime;6.按服务员的顺序生成当前服务员的 server_id;7.如果当前 server_id 号服务员空闲,则更新服务员下一空闲时间为当前绝对时钟加上当前服务时间并存入 server_time对应数组。否则所有服务员都在忙碌,顾客要排队等候,总的排队时间加上顾客排队等候时间,等候时间为当前服务员下一空闲时间减去绝对时钟。再更新当前服务员下一空闲时间加上服务时间 ServeTime。8.转到 3;方案二:图 3 方案二仿真的平均等待时间散点图 图 4 方案二平均等待时间 N 个单通
6、道系统并列,按 1/N 概率分裂到达流 1.输入参数:服务员人数 N,顾客到达流强度 r,服务员服务强度 u,仿真运行时间T;2.各变量初始值置 0:绝对时钟 time,服务员下一空闲时刻数组 server_time(其中按顺序保存每一个服务员的下一空闲时刻),顾客总数 client_num,顾客到达时间间隔 CRTime,顾客服务时间 ServeTime,当前进入排队窗口的服务员编号 server_id,系统中顾客总等待时间 total_wait_time;3.按照指数分布产生下一顾客到达的时间间隔 CRTime,time+=CRTime。若 timeT,输出total_wait_time/
7、client_num;4.Client_num+;5.按照指数分布产生顾客到达时间间隔 ServeTime;6.按 1/N 概率生成当前服务员的 server_id;7.如果当前 server_id 号服务员空闲,则更新服务员下一空闲时间为当前绝对时钟加上当前服务时间并存入server_time对应数组。否则所有服务员都在忙碌,顾客要排队等候,总的排队时间加上顾客排队等候时间,等候时间为当前服务员下一空闲时间减去绝对时钟。再更新当前服务员下一空闲时间加上服务时间 ServeTime。8.转到 3;方案三:图 4 方案三仿真的平均等待时间散点图 图 5 方案三仿真的平均等待时间散点图 N 个单通
8、道并列,挑选最短的队 1.输入参数:服务员人数 N,顾客到达流强度 r,服务员服务强度 u,仿真运行时间 T;2.各变量初始值置0:绝对时钟 time,服务员下一空闲时刻数组 server_time(其中按顺序保存每一个服务员的下一空闲时刻),顾客总数 client_num,顾客到达时间间隔 CRTime,顾客服务时间 ServeTime,当前进入排队窗口的服务员编号 server_id,系统中顾客总等待时间total_wait_time;3.按照指数分布产生下一顾客到达的时间间隔CRTime,time+=CRTime。若 timeT,输出total_wait_time/client_num;4.Client_num+;5.按照指数分布产生顾客到达时间间隔 ServeTime;6.按服务员下一空闲时刻数组server_time中最小的时刻生成当前服务员的 server_id;7.如果当前server_id 号服务员空闲,则更新服务员下一空闲时间为当前绝对时钟加上当前服务时间并存入 server_time对应数组。否则所有服务员都在忙碌,顾客要排队等候,总的排队时间加上顾客排队等候时间,等候时间为当前服务员下一空闲时间减去绝对时钟。再更新当前服务员下一空闲时间加上服务时间 ServeTime。8.转到 3;