clc;
clear all;
tic;
N = 25; %%中间杆塔数39
m = 4; %%通信距离6
D = 60; %%18延时对转跳节点数的限制
p = 0.9216; %%节点失效概率
Rnet = 0; %%
%%linknum = 0; 链路数量
S = 0;
flag = 0; %%路径连通标志
c= []; %用于存取可行的路径
c(1) = 1;
c(N+2) = 1;
num = []; %%把路径通过的节点数量存到数组
h = 1;
tnum = []; %%t用于统计每种路径节点数的条数
tnum(1:D-1)=0;
% str = cell(6353);
%%遍历所有可能的组合,并判断可行的路径
%%总共有2^N中排列
for i = 1:1:(2^N-1)
ind = 1; %%逐个标记路径通过的节点
xnum = 2; %%路径通过的节点数量
b = dec2bin(i,N);
% for j=1:1:N
c(2:N+1) = str2num(b(:))';
xnum = sum(c);
% end
if (xnum-1) <= D
for k = 2:1:N+2
% xnum = xnum + c(k);
if c(k)==1
if k-ind>m %% 两个相邻节点不超出通信范围
flag = 1;
break;
else
ind = k;
%%linknum = linknum+1;
end
end
end
end
if flag == 1
flag = 0;
continue;
else
if (xnum-1) <= D
num(h) = xnum-2;
% str{h} = b;
h = h+1;
%%c
S = S+1;
end
end
end
for i = 1:1:h-1
tnum(num(i)) = tnum(num(i))+1;
end
for i = floor(N/m):1:max(num)
Rnet = Rnet + tnum(i)*(p^(i))*((1-p)^(N-i));
end
% Rnet = Rnet/S;
toc;
评论0