失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 数学模型算法实现之排队论

数学模型算法实现之排队论

时间:2020-04-16 02:59:29

相关推荐

数学模型算法实现之排队论

排队问题

/view/475f68cb65ce0508763213a7.html排队论详解

排队论又叫随机服务系统理论或公用事业管理中的数学方法。它是研究各种各样的排队现象的。它所要解决的主要问题是:在排队现象中设法寻求能够达到服务标准的最少设备,使得在满足服务对象条件下,服务机构的花费最为经济,使服务系统效率最高。排队现象作为一种随机现象,所采用的主要工具是研究随机现象规律的概率论。它把所需研究的问题形象地描述成顾客(如电话用户、发生故障的机床等)来到服务台前(如电话线路维修工人等)要求接待,如果“服务台”已被其他顾客占用,那么就得排队等待;另一方面服务台”也时而清闲,时而忙碌。排队论就是人们通过数学方法求出顾客等待时间、排队长度等的概率分布,以便作出决策。目前排队论在社会生活的各方面已有广泛而深入的应用,如在水库用水量的调度、存储问题、生产流水线的安排、电力网的设计、铁路分车场的调度等方面都可运用排队论的基本理论来进行计算,从而获得合理的解决办法。

排队模型:

系统运行状态参数(系统状态N(t)、系统状态概率)系统运行指标参数----评价排队系统优劣(队长与排队长、逗留时间与等待时间)其他指标(忙期、忙期服务量、损失率、服务强度

%M/M/S排队模型s=3;%服务台个数mu=24;%单个服务台单位时间能服务的人数lambda=54;%单位时间到达人数ro=lambda/mu;ros=ro/s;sum1=0;for i=0:(s-1)sum1=sum1+ro.^i/factorial(i);endsum2=ro.^s/factorial(s)/(1-ros);p0=1/(sum1+sum2);p=ro.^s.*p0/factorial(s)/(1-ros);Lq=p.*ros/(1-ros);L=Lq+ro;W=L/lambda;Wq=Lq/lambda;fprintf('排队等待的平均人数为%5.2f人\n',Lq)fprintf('系统内的平均人数为%5.2f人\n',L)fprintf('平均逗留时间为%5.2f分钟\n',W*60)fprintf('平均等待时间为%5.2f分种\n',Wq*60)

%将排队过程图像化clear clc %***************************************** %初始化顾客源 %***************************************** %总仿真时间 Total_time = 20; %队列最大长度 N = 10000000000; %到达率与服务率 lambda = 10; mu = 6; %平均到达时间与平均服务时间 arr_mean = 1/lambda; ser_mean = 1/mu; arr_num = round(Total_time*lambda*2); events = []; %按负指数分布产生各顾客达到时间间隔 events(1,:) = exprnd(arr_mean,1,arr_num); %各顾客的到达时刻等于时间间隔的累积和 events(1,:) = cumsum(events(1,:)); %按负指数分布产生各顾客服务时间 events(2,:) = exprnd(ser_mean,1,arr_num); %计算仿真顾客个数,即到达时刻在仿真时间内的顾客数 len_sim = sum(events(1,:)<= Total_time); %***************************************** %计算第 1个顾客的信息 %***************************************** %第 1个顾客进入系统后直接接受服务,无需等待 events(3,1) = 0; %其离开时刻等于其到达时刻与服务时间之和 events(4,1) = events(1,1)+events(2,1); %其肯定被系统接纳,此时系统内共有 %1个顾客,故标志位置1 events(5,1) = 1; %其进入系统后,系统内已有成员序号为 1 member = [1]; for i = 2:arr_num %如果第 i个顾客的到达时间超过了仿真时间,则跳出循环 if events(1,i)>Total_time break; else number = sum(events(4,member) > events(1,i)); %如果系统已满,则系统拒绝第 i个顾客,其标志位置 0 if number >= N+1 events(5,i) = 0; %如果系统为空,则第 i个顾客直接接受服务 else if number == 0 %其等待时间为 0.1516%PROGRAMLANGUAGEPROGRAMLANGUAGEevents(3,i) = 0; %其离开时刻等于到达时刻与服务时间之和 events(4,i) = events(1,i)+events(2,i); %其标志位置 1 events(5,i) = 1; member = [member,i]; %如果系统有顾客正在接受服务,且系统等待队列未满,则 第 i个顾客进入系统 else len_mem = length(member); %其等待时间等于队列中前一个顾客的离开时刻减去其到 达时刻 events(3,i)=events(4,member(len_mem))-events(1,i); %其离开时刻等于队列中前一个顾客的离开时刻加上其服 %务时间 events(4,i)=events(4,member(len_mem))+events(2,i); %标识位表示其进入系统后,系统内共有的顾客数 events(5,i) = number+1; member = [member,i]; end end end end %仿真结束时,进入系统的总顾客数 len_mem = length(member); %***************************************** %输出结果 %***************************************** %绘制在仿真时间内,进入系统的所有顾客的到达时刻和离 %开时刻曲线图(stairs:绘制二维阶梯图) stairs([0 events(1,member)],0:len_mem); hold on; stairs([0 events(4,member)],0:len_mem,'.-r'); legend('到达时间 ','离开时间 '); hold off; grid on; %绘制在仿真时间内,进入系统的所有顾客的停留时间和等 %待时间曲线图(plot:绘制二维线性图) figure; plot(1:len_mem,events(3,member),'r-*',1: len_mem,events(2,member)+events(3,member),'k-'); legend('等待时间 ','停留时间 '); grid on;

如果觉得《数学模型算法实现之排队论》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。