1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 机器学习(MACHINE LEARNING)MATLAB模拟排队论

机器学习(MACHINE LEARNING)MATLAB模拟排队论

时间:2023-05-12 10:17:08

相关推荐

机器学习(MACHINE LEARNING)MATLAB模拟排队论

文章目录

1 概述2 模型介绍2.1 排队服务过程2.2 排队系统的要素2.3 顾客输入过程2.4 排队结构与排队规则2.5 服务机构与服务规则3 代码实现

1 概述

生活中需要排队的地方很多,本模型用于分析和仿真现实生活中的排队现象。

排队论发源于上世纪初。当时美国贝尔电话公司发明了自动电话,以适应日益繁忙的工商业电话通讯需要。这个新发明带来了一个新问题,即通话线路与电话用户呼叫的数量关系应如何妥善解决,这个问题久久未能解决。

1909年,丹麦的哥本哈根电话公司A.K.埃尔浪(Erlang)在热力学统计平衡概念的启发下解决了这个问题。1917 年,爱尔朗发表了他的著名的文章—“自动电话交换中的概率理 论的几个问题的解决”。排队论已广泛应用于解决军事、运输、维修、生产、服务、库 存、医疗卫生、教育、水利灌溉之类的排队系统的问题,显示了强大的生命力。

2 模型介绍

(1)由于顾客到达和服务时间的随机性,

现实中的排队现象几乎不可避免;

(2)排队过程,通常是一个随机过程,

排队论又称“随机服务系统理论”;

2.1 排队服务过程

2.2 排队系统的要素

(1)顾客输入过程;

(2)排队结构与排队规则;

(3)服务机构与服务规则;

2.3 顾客输入过程

顾客源(总体):有限/无限;

顾客到达方式:逐个/逐批;(仅研究逐个情形)

顾客到达间隔:随机型/确定型;

顾客前后到达是否独立:相互独立/相互关联;

输入过程是否平稳:平稳/非平稳;(仅研究平稳性)

2.4 排队结构与排队规则

顾客排队方式:等待制/即时制(损失制);

排队系统容量:有限制/无限制;

排队队列数目: 单列/多列;

是否中途退出: 允许/禁止;

是否列间转移: 允许/禁止;

(仅研究禁止退出和转移的情形)

2.5 服务机构与服务规则

服务台(员)数目;单个/多个;

服务台(员)排列形式;并列/串列/混合;

服务台(员)服务方式;逐个/逐批;(研究逐个情形)

服务时间分布;随机型/确定型;

服务时间分布是否平稳:平稳/非平稳;(研究平稳情形)

3 代码实现

设顾客到达速率服从参数为lambda的负指数分布,服务速率为mu的负指数分布,服务强度rho = lambda / mu

则当lambda <= mu时,则rho <= 1,队伍的长度L会逐渐增长并收敛至L = lambda/(mu - lambda),平均等待时间会收敛至W = 1 / (mu - lambda)

反之若lambda > mu,rho > 1,L和W会随着到达的顾客数的增加而增加,不会收敛。

采用MATLAB生成服从负指数分布的随机数,并对队长以及等待时间进行统计,最后画图展示出排队的过程

eg:

lambda = 0.1493

mu = 0.1587

模拟结果如下

PCU也称当量交通量。

ave_t = zeros(10,100);p = zeros(10,100);nn = 10:10:5000; %到达路口的车数count = zeros(size(nn,2),100); %队列长度for d = 1:length(nn)for s = 1:100 n = nn(d); %模拟车辆数目dt = exprnd(6.7,1,n); %模拟到达时间间隔st = exprnd(6.3,1,n); %每辆车经过路口所用的时间a = zeros(1,n); %每辆车到达时刻b = zeros(1,n); %每辆车到达路口的时刻c = zeros(1,n); %每辆车离开时刻a(1) = 0;for i = 2:na(i) = a(i-1) + dt(i-1);endb(1) = 0;c(1) = b(1) + st(1);for i = 2:n%如果第i辆车到达路口比前一辆离开的时间早,则其到达路口停车线的时间为前一辆车离开时间if(a(i) <= c(i-1))b(i) = c(i-1);%如果第i辆车到达路口比前一辆离开的时间晚,则其到达路口停车线的时间为其到达时间elseb(i) = a(i);end%第i辆车离开时间为其到达路口停车线的时刻+通过路口需要的时间c(i) = b(i) + st(i);endfor i = 2:nif(a(i) <= c(i-1))count(d,s) = count(d,s) + 1;elsebreak;endendcost = zeros(1,n);for i = 1:ncost(i)=c(i)-a(i); %第i辆车在队列中等待的时间endT = c(n); %总时间p(d,s) = sum(st)/T;ave_t(d,s) = sum(cost)/n;endendpc = sum(p,2)/100; %服务强度aver_tc = sum(ave_t,2) / 100; %在队列中耗费的平均时间count = sum(count,2) / 100;%画图部分figure;subplot(2,1,1)plot(nn,aver_tc);grid on;title('平均等待时间随到达路口车辆总数变化曲线 单位:秒')xlabel('到达路口车辆总数')ylabel('平均等待时间') subplot(2,1,2)plot(nn,count);grid on;%ylim([0,2])title('队列中的交通量数随到达路口车辆总数变化曲线 单位:pcu')xlabel('到达路口车辆总数')ylabel('队列中的车辆数') set(gcf,'color','w');%p = fig2plotly(gcf,'offline',true);

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