基于matlab的拥塞概率的仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于M/M/C/∞模型拥塞概率的仿真
一、M/M/C/∞模型的建立
Erlang B 公式将丢失呼叫清除系统的服务等级(GOS )定义为任意一个用户遇到呼叫拥塞的概率。
.Erlang B 模型基于以下假定:
1) 呼叫请求无记忆,即所有用户,包括拥塞用户可以在任何时间请求分配一个信道。
2) 在所有信道都被占用之前,任何空闲信道都能用来服务一个呼叫。
3) 用户占用一个信道间隔(称为服务时间)的概率是指数分布。
指数分布中较长时间的呼叫发生的概率较小。
4) 在中继资源中可用信道是有限的。
5) 业务请求是Poisson 过程,即呼叫间隔时间是指数分布的。
6) 呼叫请求到达时间间隔彼此独立。
7) 忙信道数等于服务中的用户数,拥塞概率为:
0!!C r k C k A C P A k =⎛⎫ ⎪⎝⎭⎡⎤⎣⎦∑阻塞= 其中,C 是中继信道数,A 是中继系统的负荷。
Erlang B 公式表示的中继系统称为M/M/C/∞排队系统。
第一个M 表示呼叫到达是非记忆Poisson 过程,第二个M 表示用户服务时间指数分布,C 表示可用中继信道数,∞表示对同时服务用户数没有严格限制。
其模型如下图1所示,用户到达的速率为λ,用户被服务的速率为μ,系统中有C 个信道。
图1:M/M/C/∞排队模型
基于Erlang B 的模型根据丢失呼叫清除设计,当用户发起呼叫时发现任何一个信道是空闲的,既可获得服务,否则被拥塞。
Markov 链的性质可以用来导出Erlang 公式。
考虑一个离散时间随机过程{}|0,1,2,n X n =K ,从正整数集中取值,这样该过程状态是0,1,2,i =K 。
如果该过程从当前状态i 转移到下一状态i +1,并
只依赖状态i 而与前面状态无关,则该过程称为Markov 链。
利用离散时间Markov 链,我们可以在持定业务条件下,在分离观察点观察业务情况。
一个实际中继系统的运作在时间上是连续的,但可以在小时间间隔δ内分析,δ是一个很小的正数。
如k N 是k δ时间内系统中的呼叫(占用信道)数目,k N 可以表示为:
()k N N k δ=
其中,N 是一个离散随机过程,表示在离散时间上被占用信道的数量。
转移概率,i j P 为:
{},1|i j r k k P P N j N i +===
让0δ→,可得:
()1P λδοδ∞=-+
()11ii P i λδμδοδ=--+≥
(),10i i P i λδοδ+=+≥
(),11i i P i λδοδ-=+≥
()
,,1,1i j P j i j i j i οδ=≠≠+≠-
Markov 链的状态转移图由图2表示。
图2:Erlang B 中用Markov 链状态图表示的转移概率
图2中具有C 个信道的中继系统可表示为一个Markov 链。
在该Markov 链状态图中,假定系统中0个信道被占用,即无用户。
在一个小的时间间隔后,系统继续保持0信道占用的概率为λδ-1。
从占用0信道变为占用1信道的概率为
λδ。
另一方面,从占用一个信道变成占用0信道的概率为μδ。
类似的,系统保
持为占用1信道状态的概率为μδλδ--1。
所有从一个状态转出的概率和为1。
在一段长时间后,系统到达平稳状态,具有n 信道占用。
在平稳状态,占用n 信道的概率与占用n-1信道的概率相等,并且是转移概率λδ的倍数。
这样在平稳状态条件下,
n n P n P μδλδ=-1, C n ≤
10
=∑=C
n n
P
对不同的n 值可得:
μδλδn P P n n =-1, C n ,,3,2,1Λ=
μλn P P n n =-1
μ
λ0
1P P =
利用不同n 值对上面的方程式求值:
!10n P P n
n ⎪⎪⎭
⎫ ⎝⎛=μλ
且
∑==⎪⎭⎫
⎝⎛=C
i i n n
P n P P 1
0-1!λμ
可得C 中继信道拥塞率为:
∑=⎪⎪⎭
⎫ ⎝⎛⎪⎪⎭⎫ ⎝⎛=C
n n C
C n C P 0!1!1
μλμλ 总负荷μλλ/==H A 。
代入方程式拥塞率为:
∑==C n n C
C n A C A P 0
!1!1
即为Erlang B 公式。
二、M/M/C 模型的仿真
此仿真是在MATLAB (R2009b )的平台下进行的。
利用MATLAB 仿真呼叫
接入信道过程,得出在不同呼叫速率下的拥塞率,然后用画出仿真得到的拥塞率数据和ErlangB 公式理论拥塞率曲线进行对比。
仿真步骤如下:
1)业务请求是Poisson 分布,即到达间隔时间是指数分布。
程序设计产生以λ为均值的指数分布的随机数,作为一个服务的顾客到达间隔。
2)顾客服务时间是指数分布。
程序设计产生以μ为均值的指数分布的随机数,
作为一个顾客的服务时间。
3)以0为起点,由顾客的到达间隔可以求出到达时刻arrive,从而进一步求出顾客离开时刻leave。
4)检查是否有空闲信道,若有则接入并占用信道,若无则拥塞
5)统计总共被拥塞掉的顾客数,并除以到达的顾客数,即为拥塞率。
6)增大呼叫到达率,转至步骤1)
三、仿真结果
仿真参数:信道数为20,平均服务时间为20分钟,用户数为2000,总共进行了1000次仿真,呼叫到达率lamda从0开始每次增加0.01。
拥塞概率曲线和理论拥塞概率曲线如下图所示:
图3:呼叫过程拥塞概率曲线
四、结果分析
从图3中可以看出,仿真曲线和理论曲线整体趋势基本吻合。
所以所建立的模型是正确的。
同时随着用户到达率λ的增加,而用户的服务率不变和信道的总数不变的情况下,呼叫的拥塞率逐渐增加,并且逐渐趋于平稳。
附程序
%M/M/C模型的呼叫过程阻塞概率的仿真
clc
N = 2000; %用户数
H = 30; %平均服务时间为30分,平均服务时间
lamda = 0; %泊松到达过程的参数,到达速率
mu = 1/H; %指数分布的参数
C = 30; %信道数
for i = 1 : 1 : C %channel记录接入的呼叫的离开时间leave(i) = 0;
end
%%%%%%%%%%%%%%%以话务量为变量进行呼叫过程阻塞概率的仿真%%%%%%%%%%%%%%%%%%%%%%
LOSS(1) = 0;
for k = 1:N;
lamda = lamda+0.01;
for i = 1 : 1: C
leave(i) = 0;
end
n=0; %被阻塞的用户数
%产生服从Poisson到达过程的用户到达时间
U1 = rand(N,1); %产生N个均匀分布的随机数
temp = 0;
for i = 1:1:N
arrive(i) = temp - log(U1(i))/lamda;
temp = arrive(i);
end
%产生服从指数分布的用户服务时间
U2 = rand(N,1);
for i = 1:1:N
service(i) = -log(U2(i))/mu;
end
%产生用户离开时间
for i = 1:1:N
depart(i) = arrive(i)+service(i);
end
%计算阻塞概率
for i = 1 : 1 : N
flag = 0; %标志信道是否被阻塞
for j = 1 : 1 : C
if leave(j) < arrive(i) % 若果第i个用户到达的时间小于某一个用户在j个信道中离开的时间,则说明该信道空闲,可接入第i个用户。
leave(j) = depart(i);%则此时第j个信道中用户的离开时间记为depart(i)。
flag = 1;
break;
end
end
if flag == 0 % 阻塞
n = n + 1;
end
end
LOSS(k) = n / N;
end
lamda_temp = 0.01 : 0.01 : N*0.01;
A = lamda_temp * H;%呼叫强度*保持时间=业务量plot(A,LOSS,'g');%绘制呼损率的图形
hold on;
%计算阻塞概率的理论值
A = lamda_temp * H;
for j = 1 : length(A)
sum=0.0;
for i=1:1:C
temp = (A(j)^i) /factorial(i);
sum = sum + temp;
end
Pr(j) = (A(j)^C) / (factorial(C) * sum);%呼损率公式end
plot(A, Pr, 'r');
title('呼叫过程拥塞概率的仿真结果')
xlabel('话务量(Elangs)')
ylabel('拥塞概率')
legend('仿真曲线','理论曲线')
grid on。