📄 block_homework.m
字号:
%%%lambda=12;
mu=6;
s=10;
a=0;
b=0;
text_num=1000;%%%%试验次数。
systemnum=0;%%系统人数初始值为0。
C=s+5; %%即系统容量为15,即可以有5个人在等待。
block_num=0;%%%用于实际仿真 时记录出现阻塞的次数
p1=0; %%%用于记录理论值
p2=0; %%%用于记录仿真值
%%%%%%%%%%%%理论值计算
for lambda=1:50; %%%是lambda在(1:50)之间变化,画出不同的lambda的阻塞率
p1=0;
for n=0:s-1
a=a+(lambda/mu)^n/factorial(n);
for n=s:C
p(n)=((lambda/mu)^s)*((lambda/mu/s)^(n-s))/factorial(s);
b=b+p(n);
end
end
c=1/(a+b);
for n=C:s+50; %%%%%设C=S+5,即可以有5个人在等待,5个人后为阻塞的情况
p(n)=c*((lambda/mu)^s)*((lambda/mu/s)^(n-s))/factorial(s);
p1=p1+p(n); %%%%%%%产生理论的阻塞率。
end
d(lambda)=p1;
end
figure(1);
plot(d)
%%%%%%%%%%%%%%%%%%%%%%%%%用实际情况仿真
for lambda=1:50;
p2=0;
block_num=0; %%%每次循环计数器清零
systemnum=0;
m=round(rand(1,text_num)*24);%%%产生text_num个独立(1,24)的随机数。
for i=1:text_num; %%%每个 lambda都取1000个样值
for j=1:m(i); %%%每个样值都模拟到指定的时刻,然后观察该时刻是否出现阻塞。
comenum = poissrnd(lambda); %%%在(1:m(i))时间内每个时刻都赋予来的人数和服务人数的值
sevicenum= poissrnd(mu);
systemnum=systemnum+comenum-s*sevicenum;%%%%当前时刻系统人数为上时刻系统人数
%%%%与当前时刻系统来的人数减去系统服务掉的人数
if systemnum<0 %%%systemnum>=0
systemnum=0;
end
end
if systemnum>C %%%若系统人数>系统容量,则阻塞,计数器累加。
block_num=block_num+1;
end
end
p2=block_num/text_num;
f(lambda)=p2;
end
figure(2);
plot(f);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -