数模(8)——排队论模型

数模(8)——排队论模型MM1 排队系统 MMS 模型 MMS 排队模型程序 S 1 时即为 MM1 排队模型 s 2 服务台数 mu 4 单个服务台一小时内服务的顾客数 lambda 3 单位时间 一小时 到达的顾客数 ro lambda mu ros ro s sum1 0 fori 0 s 1 sum1 sum1 ro i factorial i

原创为b站视频:https://www.bilibili.com/video/av

MM1排队系统:

数模(8)——排队论模型

数模(8)——排队论模型

数模(8)——排队论模型

数模(8)——排队论模型

数模(8)——排队论模型

MMS模型

数模(8)——排队论模型

数模(8)——排队论模型

数模(8)——排队论模型

数模(8)——排队论模型

数模(8)——排队论模型

MMS排队模型程序(S=1时即为MM1排队模型)

s=2;%服务台数 mu=4;%单个服务台一小时内服务的顾客数 lambda=3;%单位时间(一小时)到达的顾客数 ro=lambda/mu; ros=ro/s; sum1=0; for i=0:(s-1) sum1=sum1+ro.^i/factorial(i); end sum2=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)

MM1模型结果的直观图显示:

clear clc %* %初始化顾客源 %* %总仿真时间 Total_time = 10; %队列最大长度 N = ; %到达率与服务率 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 2009.1516 %PROGRAMLANGUAGEPROGRAMLANGUAGE events(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;

结果:

数模(8)——排队论模型

数模(8)——排队论模型

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214615.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午3:50
下一篇 2026年3月18日 下午3:51


相关推荐

  • 挂帅280亿月之暗面总裁,80后女学霸压力不小

    挂帅280亿月之暗面总裁,80后女学霸压力不小

    2026年3月12日
    2
  • 别被“龙虾”夹了钱袋子:OpenClaw 狂热背后的冷思考

    别被“龙虾”夹了钱袋子:OpenClaw 狂热背后的冷思考

    2026年3月13日
    1
  • 如何做好新人串讲

    如何做好新人串讲一 什么是新人串讲 在新同学入职之后 对当前借贷宝已有架构 核心业务从代码层面和业务层面做一个综合性的讲解 二 为什么做串讲 帮助新入职的同学快速掌握现有功能 代码的设计与实现 从而可以快速的落地新的业务需求 三 什么时间串讲合适 实习生 入职 1 个月左右社招 入职 2 周左右四 串讲方向选择 采用 1 N 形式做方向安排 其中 客户端 1 iOS Android N R

    2026年3月19日
    3
  • Taiko taiko

    Taiko taikoTaikotaikoDescription拆拆超级喜欢太鼓达人(赛后大家可自行百度规则),玩久了也对积分规则产生了兴趣,理论上连击数越多,分数增加的越快,而且还配合着击打准确度有相应的计算规则,拆拆觉得这些规则太复杂了,于是把规则自行简化了下:对于一段击打序列,我们假设Y为打中,N为未打中(没有良可之分了)我们视连续的n次击中为n连击 相应的分数为1+2+3

    2025年8月23日
    5
  • 智谱AI,彻底爆了!开源模型GLM-4.5,能力全面SOTA

    智谱AI,彻底爆了!开源模型GLM-4.5,能力全面SOTA

    2026年3月12日
    2
  • Oracle创建本地数据库实例及配置「建议收藏」

    Oracle创建本地数据库实例及配置「建议收藏」        因为以前一直都是用的mysql的数据库,所以当新工作中用到Oracle数据库的时候,一时还有点不习惯,特别是一直连接的远程数据库,更是麻烦,所以就想在本地创建一个Oracle的数据库,然后导入数据库的备份文件方便使用。然而看似简单的东西,真正动起手来,却也还是花了好一会儿工夫也才解决。所以希望能够把安装的过程记录下来,不仅方便自己以后查阅,也能督促自己开始写博客(3年前就有这样的想…

    2022年5月31日
    134

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号