% Simulation program to realize BDCL algorithm
%
% Programmed by WangCongyi(王丛屹)
% 2010.6.16
clc;
clear;
mu=10; %信道结束率
C=10; %小区数
%m=5; %每个小区的信道数
text_time=1000; %观察时间,单位s
comenum=zeros(C+2);
leavenum=zeros(C+2);
servicenum=zeros(C+2);
borrownum=zeros(C+2);
blocknum=zeros(C+2);
block_num=zeros(C+2);
p1=zeros(C+2); %%%用于记录BDCL仿真值阻塞概率
p2=zeros(C+2); %%%用于记录FCA仿真值阻塞概率
%%%%%%%%%%%%%%%%%%%%%%%%%用实际情况仿真
for m=1:3
localnum=m+zeros(C+2);
local_num=m+zeros(C+2);
for lambda=1:15
comenum=zeros(C+2);
leavenum=zeros(C+2);
servicenum=zeros(C+2);
localnum=m+zeros(C+2);
borrownum=zeros(C+2);
blocknum=zeros(C+2);
block_num=zeros(C+2);
for t=1:(1/max(lambda,mu)):text_time
for i=2:C+1
if poissrnd(lambda)/max(lambda,mu)>1
comenum(i)=1;
else
comenum(i)=0;
end
if poissrnd(mu)/max(lambda,mu)>1
leavenum(i)=1;
else
leavenum(i)=0;
end
if comenum(i)==1
localnum(i)=localnum(i)-1;
local_num(i)=local_num(i)-1;
if localnum(i)<0
localnum(i)=0;
if localnum(i-1)>0 & localnum(i+1)>0
borrownum(i)=borrownum(i)+1;
localnum(i-1)=localnum(i-1)-1;
localnum(i+1)=localnum(i+1)-1;
else
blocknum(i)=blocknum(i)+1;
end
end
if local_num(i)<0
local_num(i)=0;
block_num(i)=block_num(i)+1;
end
end
if leavenum(i)==1
localnum(i)=localnum(i)+1;
local_num(i)=local_num(i)+1;
if localnum(i)>m
localnum(i)=m;
end
if local_num(i)>m
local_num(i)=m;
end
if local_num(i)<0
local_num(i)=0;
end
if borrownum(i)>0
localnum(i)=0;
borrownum(i)=borrownum(i)-1;
localnum(i-1)=localnum(i-1)+1;
localnum(i+1)=localnum(i+1)+1;
end
end
end
end
p1=blocknum./(text_time*lambda);
p2=block_num./(text_time*lambda);
x1(lambda)=p1(2);
x2(lambda)=p2(2);
end
y1(m,:)=x1;
y2(m,:)=x2;
end
f1=y1(1,:);
f2=y2(1,:);
f3=y1(2,:);
f4=y2(2,:);
f5=y1(3,:);
f6=y2(3,:);
figure,plot(f1,'g');hold on;grid on;
text(lambda,f1(lambda),'m=1');
plot(f2,'b');hold on;grid on;
text(lambda,f2(lambda),'m=1');
plot(f3,'g');hold on;grid on;
text(lambda,f3(lambda),'m=2');
plot(f4,'b');hold on;grid on;
text(lambda,f4(lambda),'m=2');
plot(f5,'g');hold on;grid on;
text(lambda,f5(lambda),'m=3');
plot(f6,'b');grid on;
text(lambda,f6(lambda),'m=3');
legend('BDCL','FCA','location','best');
title('仿真值');
xlabel('话务量');ylabel('阻塞率');