ENM-LAP模型基于ENM-LAP模型的移动自组织网络拓扑演进的matlab仿真
Posted fpga&matlab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ENM-LAP模型基于ENM-LAP模型的移动自组织网络拓扑演进的matlab仿真相关的知识,希望对你有一定的参考价值。
1.软件版本
MATLAB2013b
2.本算法理论知识
移动自组织网络不但具有终端能量受限、无线信道状况受链路距离影响等特点,还具有节点位置的选择存在偏好的规律。本节建立基于节点位置偏好的网络拓扑演进模型,并利用复杂网络理论对其进行分析。网络拓扑结构产生过程如下:
1)增长:网络初始状态时,网络中存在少量的节点,设此时的节点数为 ,这 个节点根据彼此之间的距离和自身的覆盖范围,与周边的节点进行连接。这里,假定每个节点都与自己所有的邻居相连,这样做的目的有两个,第一是降低初始网络的复杂度,使初始节点的连接规则较为简单,第二是尽量避免孤立节点的存在,使网络处在连通图的状态。
当网络完成初始化后,在每一个时间步向网络中增加一个新节点。新节点的加入是存在节点对位置的偏好性的,即节点将遵照某种网络特点,在一定范围内选择相应的位置出现于网络中。通常定义的网络特点有节点度、节点介数、节点能量或其他物理特性等。在本文中考虑节点度作为节点加入网络的依据。式(1)给出新节点加入网络时遵循的概率表达式:
式中, 代表新增节点出现在某一个局域区域的概率。本文称局域区域为“选择区域”,其半径称为节点选择半径L。k代表网络中节点的度, 表示选取区域中所有节点的度之和。从表达式中可以看出,新增节点出现的位置是依据选择区域内节点的度之和而定的,其代表了该区域节点的活跃程度,这种活跃程度可以理解为区域内的节点较多,并且连接紧密,这在具有社会属性的移动自组织网络中具有较强的现实意义。
2)择优连接:当新节点进入网络后,该节点将选择其覆盖范围内的m个节点相连接。假定新加入的节点j连接到某个已存在于网络中的节点i的概率为 ,这个概率受到节点度、两节点之间的距离,以及节点i的剩余能量E的约束。
这里 ,即节点的剩余能量越大,两节点间的距离越近,新节点与其相连的概率越大。这里注意到为提高信道质量,新节点应尽可能的与其较近的节点相连接。 是可调参数,它可以调节能量和距离之间的关系。
在演化过程中假定网络中任意两个节点之间都可以进行直接或者间接通信,也就是说网络在构建完成的时候是连通的,没有孤立节点的存在。这个假设是合理的,举例来说,在广场上布设一个移动自组织网络,网络中的任意一个人都至少会与一个人进行联系,假如他不与任何人联系,那么他就不属于这个网络。另外假设网络规模足够大,而节点加入网络时的连边较小,在节点的覆盖范围内能够有大于个节点存在。
3.核心代码
clc;
clear;
close all;
warning off;
m0 = 9;
m = 8;
N = 500;
SCALE = 500;%
%通信半径
Radius= 90;%
alpha = 0.5;
Ec = 1/400;
E0 = 1;
%%
%局域网偏好的网络拓扑
L = 70;
X = rand(1,m0)*SCALE;
Y = rand(1,m0)*SCALE;
fed= [];
for i = 1:m0
for j = 1:m0
dist(i,j)=sqrt((X(i)-X(j))^2+(Y(i)-Y(j))^2);
end
end
indx = 0;
NN = 0;
while NN < N
indx = indx + 1;rng(indx);
%计算度
if indx == 1
X2 = X;
Y2 = Y;
end
degree1 = [];
for i = 1:length(X2)
xx= 0;
for j = 1:length(Y2)
dist=sqrt((X2(i)-X2(j))^2+(Y2(i)-Y2(j))^2);
if dist <= Radius & dist > 0
xx= xx + 1;
end
end
degree1(i) = xx;
end
degree2 = [];
di = [];
for i = 1:length(X2)
xx= 0;
for j = 1:length(Y2)
dist=sqrt((X2(i)-X2(j))^2+(Y2(i)-Y2(j))^2);
if dist <= Radius & dist > 0 & dist<= L
xx= xx + 1;
end
di(i,j) = dist;
end
degree2(i) = xx;
end
%计算节点剩余能源
if indx == 1
E(1:m0) = E0 - Ec;
tmps = E;
else
E = tmps - Ec;
E = [E,E0 - Ec];
tmps = E;
end
for i = 1:length(X2)
d = di(i,:);
fed(i) = real(E(i)^alpha*(1-d(i)/sum(d))^(1-alpha));
end
for i = 1:length(X2)
Para2(i) = fed(i)*degree1(i)/(sum(fed.*degree1));%公式3.3连接8个概率
end
%选择概率最大的m个进行连接
[Vp,Ip] = sort(Para2);
Mindx = Ip(end-m+1:end);
%新节点加入网络时遵循的概率表达式
Parea = (degree2)/sum(degree1);
[V,I] = max(Parea);
indx2 = find(Parea>=0.5*V);
%Nr = randperm(length(indx2));
Nr = floor(length(indx2)*rand)+1;
if rand > max([0.5,sum(Parea(1:m))])%加入网络时遵循的概率表达式
if rand < m*Vp(end)
Xnew = X2(indx2(Nr))+L*cos(2*pi*rand);
Ynew = Y2(indx2(Nr))+L*sin(2*pi*rand);
else
Xnew = rand(1,1)*SCALE;
Ynew = rand(1,1)*SCALE;
end
else
Xnew = rand(1,1)*SCALE;
Ynew = rand(1,1)*SCALE;
end
X2 = [X2,Xnew];
Y2 = [Y2,Ynew];
NN = length(X2);
end
figure;
[D1,I1]=sort(degree1,'descend');
P1=(Parea);
loglog(degree1(1:5:end),1e-6./Parea(1:5:end),'rx','linewidth',2);
%%
%局域网偏好的网络拓扑
Ec = 1/4000;
X = rand(1,m0)*SCALE;
Y = rand(1,m0)*SCALE;
fed= [];
for i = 1:m0
for j = 1:m0
dist(i,j)=sqrt((X(i)-X(j))^2+(Y(i)-Y(j))^2);
end
end
indx = 0;
NN = 0;
while NN < N
indx = indx + 1;rng(indx);
%计算度
if indx == 1
X2 = X;
Y2 = Y;
end
degree1 = [];
for i = 1:length(X2)
xx= 0;
for j = 1:length(Y2)
dist=sqrt((X2(i)-X2(j))^2+(Y2(i)-Y2(j))^2);
if dist <= Radius & dist > 0
xx= xx + 1;
end
end
degree1(i) = xx;
end
degree2 = [];
di = [];
for i = 1:length(X2)
xx= 0;
for j = 1:length(Y2)
dist=sqrt((X2(i)-X2(j))^2+(Y2(i)-Y2(j))^2);
if dist <= Radius & dist > 0 & dist<= L
xx= xx + 1;
end
di(i,j) = dist;
end
degree2(i) = xx;
end
%计算节点剩余能源
if indx == 1
E(1:m0) = E0 - Ec;
tmps = E;
else
E = tmps - Ec;
E = [E,E0 - Ec];
tmps = E;
end
for i = 1:length(X2)
d = di(i,:);
fed(i) = real(E(i)^alpha*(1-d(i)/sum(d))^(1-alpha));
end
for i = 1:length(X2)
Para2(i) = fed(i)*degree1(i)/(sum(fed.*degree1));%公式3.3连接8个概率
end
%选择概率最大的m个进行连接
[Vp,Ip] = sort(Para2);
Mindx = Ip(end-m+1:end);
%新节点加入网络时遵循的概率表达式
Parea = (degree2)/sum(degree1);
[V,I] = max(Parea);
indx2 = find(Parea>=0.5*V);
%Nr = randperm(length(indx2));
Nr = floor(length(indx2)*rand)+1;
if rand > max([0.5,sum(Parea(1:m))])%加入网络时遵循的概率表达式
if rand < m*Vp(end)
Xnew = X2(indx2(Nr))+L*cos(2*pi*rand);
Ynew = Y2(indx2(Nr))+L*sin(2*pi*rand);
else
Xnew = rand(1,1)*SCALE;
Ynew = rand(1,1)*SCALE;
end
else
Xnew = rand(1,1)*SCALE;
Ynew = rand(1,1)*SCALE;
end
X2 = [X2,Xnew];
Y2 = [Y2,Ynew];
NN = length(X2);
end
hold on
[D1,I1]=sort(degree1,'descend');
P1=(Parea);
loglog(degree1(1:5:end),1e-6./Parea(1:5:end),'b+','linewidth',2);
grid on
xlabel('节点度k');
ylabel('节点度分布p(k)');
legend('Ec=1/400','Ec=1/4000');
4.操作步骤与仿真结论
1.不同半径长度网络拓扑
2.在不同的选择区域半径,网络的节点度分布
由于在移动自组织网络网络中,每个节点都有一定的覆盖范围限制,因此随着的增加,节点在网络中的分布趋向于分散,所以具有较大度的节点的比例比L较小时要低。
3.在不同的节点覆盖范围时的节点度分布情况(R=50,R=75)
度较大的节点分布比例比R= 90时有所增加
4.节点能耗不同
4.2ENM-LAP模型及平均最短路径长度仿真分析
1.不同选择半径(L越大到完全覆盖整个区域网络等同BA网络,路径l越大)
2.不同覆盖范围R(R越大到完全覆盖整个区域网络等同BA网络,路径l越大)
3.不同能量
1.不同删除概率
2.不同选择半径(L越大到完全覆盖整个区域网络等同BA网络,路径l越大)
5.参考文献
A12-42
以上是关于ENM-LAP模型基于ENM-LAP模型的移动自组织网络拓扑演进的matlab仿真的主要内容,如果未能解决你的问题,请参考以下文章