-
2022-04-12 20:42:17
1 简介
无线传感器网络在实际场景中的应用,实现数据的远程收集,降低人工成本,拓宽人类认识世界的途径。无线传感器网络目前已广泛运用到各个领域,例如:军事领域、环境监测、自然灾害预报、智能家居等。在无线传感器网络相关技术研究中,传感器节点部署算法的设计是其基本研究内容之一。无线传感器网络的部署问题与其应用需要高度相关,因而针对实际需要设计节点部署算法,是目前关于无线传感器网络覆盖算法研究的重点。引入人工势场中引力斥力概念进行无线传感器优化部署。
2 部分代码
%% Program Start
%清零
clc ;clear all;close all;
%设定通信半径为5
global Rc;
Rc = 5;
%设定覆盖区域为L=40的正方形
global L;
L = 5*Rc*sqrt(2);
S = L^2;
%初始化一个5*5的0矩阵,用来保存随机部署后每个网格中的节点个数
initnode_num = zeros(5,5);
node_num = 0; %用于保存节点个数
%设定网格权重
grid_weight = [2,1,3,1,1;3,2,2,1,2;4,1,2,2,1;1,2,2,3,1;2,5,1,2,1];
%计算总权重
total_weight = 0;
for i = 1:5
for j = 1:5
total_weight_temp = grid_weight(i,j);
total_weight = total_weight + total_weight_temp;
end
end
%输出总权重
total_weight
grid_weight
%% Random Deployment
%随机产生坐标,作为节点的初始位置
random_x = randi([0,ceil(L)],1,(total_weight+10));
random_y = randi([0,ceil(L)],1,(total_weight+10));
figure(1);
draw_grid(L); %画网格
for i = 1:(total_weight+10)
x1 = random_x(i);
y1 = random_y(i);
draw_round(x1,y1); %节点随机部署图
end
%% Count Initial Nodes
%计算初始化后每个单元格中的节点个数
for i = 1:(total_weight+10)
temp_x = random_x(i);
temp_y = random_y(i);
%% Calculate Attractive Force
%计算引力
attractiveforce = zeros(25,4); %初始化25*4的矩阵,存放每个网格受到的引力,由于每个网格周围有四个网格
%列坐标从小到大表示左、上、右、下,处在边缘的网格若周围没有其他网格,用0表示,即不受
%此方向的引力。另外,第一行代表(1,1)网格,第二行代表(1,2),……,第六行代表
%(2,1)网格,第七行代表(2,2)网格,……,最后一行代表(5,5)网格
for m = 1:5 %m为x轴坐标
for n = 1:5 %n为y轴坐标
j = 1;
i = add1; %i自动加1,从1到25
if (m-1)>0 %算左边网格
if grid_weight(m-1,n)>initnode_num(m-1,n)
attractiveforce(i,j) = grid_weight(m-1,n)-initnode_num(m-1,n);
else
attractiveforce(i,j) = 0;
end
else
attractiveforce(i,j) = 0;
end
%算上边网格
j = j+1;
if (n+1)<6
if grid_weight(m,n+1)>initnode_num(m,n+1)
attractiveforce(i,j) = grid_weight(m,n+1)-initnode_num(m,n+1);
else
attractiveforce(i,j) = 0;
end
else
attractiveforce(i,j) = 0;
end
%算右边网格
j = j+1;
if (m+1)<6
if grid_weight(m+1,n)>initnode_num(m+1,n)
attractiveforce(i,j) = grid_weight(m+1,n)-initnode_num(m+1,n);
else
attractiveforce(i,j) = 0;
end
else
attractiveforce(i,j) = 0;
end
%算下边网格
j = j+1;
if (n-1)>0
if grid_weight(m,n-1)>initnode_num(m,n-1)
attractiveforce(i,j) = grid_weight(m,n-1)-initnode_num(m,n-1);
else
attractiveforce(i,j) = 0;
end
else
attractiveforce(i,j) = 0;
end
end
end
attractiveforce
%% Calculate Moving Probability and Move Nodes
%计算移动概率并移动节点同时将网格中的节点移动到网格中心
for m = 1:5
for n = 1:5
k = add1;
j = 1;
while ((rejectforce(m,n)>0)&&((attractiveforce(k,1)~=0)||(attractiveforce(k,2)~=0)||(attractiveforce(k,3)~=0)||(attractiveforce(k,4)~=0)))
%当中心网格斥力大于0&&周围引力至少有一个非0时成立
j = 1;
attractiveforce_max = attractiveforce(k,j);
row = k;
col = j;
for j = 2:4 %求最大引力,即求得最大移动概率
if attractiveforce(k,j)>attractiveforce_max
attractiveforce_max = attractiveforce(k,j);
row = k;
col = j;
end
end
initnode_num(m,n) = initnode_num(m,n)-1; %相应网格节点减1
rejectforce(m,n) = rejectforce(m,n)-1; %相应的斥力也减1
attractiveforce(row,col) = attractiveforce(row,col)-1; %相应网格引力减1
%下面进行坐标转换,使通过引力获得节点的网格节点数加1
m1 = m;
n1 = n;
if col == 1
m1 = m1-1;
elseif col == 2
n1 = n1+1;
elseif col == 3
m1 = m1+1;
elseif col == 4
n1 = n1-1;
end
initnode_num(m1,n1) = initnode_num(m1,n1)+1;
end
end
end
grid_weight
initnode_num
rejectforce
figure(2); %动态调整后的节点部署
draw_grid(L); %画网格
for i = 1:5
for j = 1:5
if initnode_num(i,j)~=0
draw_round(((i-0.5)*Rc*sqrt(2)),((j-0.5)*Rc*sqrt(2)));
end
end
end
%% Detect Uncovered Grid
%监测未被覆盖的网格,0表示已经达到权重要求,负数表示未达到权重要求。
%定义覆盖成功率=动态调整后获得的权重/设定的总权重
uncovered_grid = zeros(5,5);
for i = 1:5
for j = 1:5
if initnode_num(i,j)<grid_weight(i,j)
uncovered_grid(i,j) = initnode_num(i,j)-grid_weight(i,j);
else
uncovered_grid(i,j) = 0;
end
end
end
uncovered_grid
adjusted_weight = 0;
for i = 1:5
for j =1:5
temp = uncovered_grid(i,j);
adjusted_weight = adjusted_weight+temp;
end
end
coveragesuccess_rate = (total_weight+adjusted_weight)/total_weight;
coveragesuccess_rate
%% Individually Adjust Node
%对未达到权重要求的网格进行调整,从仍然存在斥力的网格中吸引节点,由于节点运动
%需要消耗大量能量,故节点移动的相对距离不能太远,否则就失去了移动的意义,现规定
%只能从相对两个网格中心距离的网格中吸引节点。
for i = 1:5
for j = 1:5
k = 0;
while (uncovered_grid(i,j)<0)&&(k ~= 25)
k = 0;
for m = 1:5
for n = 1:5
k = k+1;
if (rejectforce(m,n)>0)&&(sqrt((m-i)^2+(n-j)^2)<=(2*sqrt(2)))
uncovered_grid(i,j) = uncovered_grid(i,j)+1;
initnode_num(i,j) = initnode_num(i,j)+1;
rejectforce(m,n) = rejectforce(m,n)-1;
initnode_num(m,n) = initnode_num(m,n)-1;
flag = 1;
break
end
end
if flag == 1
flag = 0;
break
end
end
end
end
end
uncovered_grid
initnode_num
figure(3); %画最终的节点部署
draw_grid(L); %画网格
for i = 1:5
for j = 1:5
if initnode_num(i,j)~=0
draw_round(((i-0.5)*Rc*sqrt(2)),((j-0.5)*Rc*sqrt(2)));
end
end
end
3 仿真结果
4 参考文献
[1]陈卓. 基于移动节点的无线传感器网络覆盖漏洞修复算法研究[D]. 北京交通大学.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
更多相关内容 -
WSN无线传感器网络节点覆盖优化问题的仿真
2022-05-06 19:53:42WSN无线传感器网络节点覆盖优化问题的仿真 -
【网络覆盖优化】基于matlab的网络覆盖遗传优化问题仿真
2022-04-29 19:48:10C'为对应的这些节点的覆盖范围。A为每个节点对应的覆盖范围。 基于这个目标函数,我们进行仿真,获得如下的仿真结果: clc; clear; close all; warning off; addpath 'func\GA_toolbox\' addpath 'func\' ...建立如下的目标函数:
表示的是每一代中被选择在工作状态的节点数目。
C'为对应的这些节点的覆盖范围。A为每个节点对应的覆盖范围。
基于这个目标函数,我们进行仿真,获得如下的仿真结果:
clc; clear; close all; warning off; addpath 'func\GA_toolbox\' addpath 'func\' RandStream.setDefaultStream(RandStream('mt19937ar','seed',1)); %目标区域大小 W = 10; H = 10; %网格划分 G = 20; %节点数目 NN = 200; [X,Y,R] = func_initial(W,H,NN); axis([0,W,0,H]); %根据遗传算法进行参数的拟合 MAXGEN = 60; NIND = 200; Chrom = crtbp(NIND,NN*10); %14个变量的区间 Areas = [zeros(1,NN); ones(1,NN)]; FieldD = [rep([10],[1,NN]);Areas;rep([0;0;0;0],[1,NN])]; ON_OFF = zeros(NIND,NN); ON_OFFs = zeros(MAXGEN,NN); NUMS = zeros(MAXGEN,1); fgl = zeros(MAXGEN,1); gen = 0; for a=1:1:NIND %所有节点均打开,作为其初始状态 ON_OFF(a,:) = 1; %计算对应的目标值 [f,C1] = func_obj(ON_OFF(a,:),X,Y,R,W,H,G); J(a,1) = 1/f; end Objv = (J+eps); gen = 0; while gen < MAXGEN; gen FitnV=ranking(Objv); Selch=select('sus',Chrom,FitnV); Selch=recombin('xovsp', Selch,0.99); Selch=mut(Selch,0.01); phen1=bs2rv(Selch,FieldD); for a=1:1:NIND if gen == 1 ON_OFF(a,:) = 1; else ON_OFF(a,:) = (phen1(a,:)>=0.5); end %计算对应的目标值 [f,C1] = func_obj(ON_OFF(a,:),X,Y,R,W,H,G); JJ(a,1) = 1/f; end Objvsel =(JJ+eps); [Chrom,Objv] = reins(Chrom,Selch,1,1,Objv,Objvsel); gen = gen+1; %保存参数收敛过程和误差收敛过程以及函数值拟合结论 for ii = 1:NIND [f,C1] = func_obj(ON_OFF(:,ii),X,Y,R,W,H,G); flgs(ii) = C1; end flgs2 = sort(flgs); for ii = 1:NN ON_OFFs(gen,ii) = mean(ON_OFF(:,ii))>=0.2; end Error(gen) = mean(JJ); NUMS(gen) = sum(ON_OFFs(gen,:)); fgl(gen) = mean(flgs2(3:end-2)); end figure(1); plot([2:5:60],NUMS(2:5:gen),'--rs','LineWidth',2,'MarkerEdgeColor','k','MarkerFaceColor','g','MarkerSize',10); xlabel('进化次数'); ylabel('采用的传感器节点数目'); grid on; figure(2); plot([2:5:60],fgl(2:5:gen),'--rs','LineWidth',2,'MarkerEdgeColor','k','MarkerFaceColor','g','MarkerSize',10); xlabel('进化次数'); ylabel('节点的有效覆盖率%'); grid on;
A12-16
-
【优化覆盖】移动网格求解无线传感器网络节点覆盖优化问题matlab源码
2021-09-13 19:57:13%设定覆盖区域为L=40的正方形 global L; L = 5*Rc*sqrt(2); S = L^2; %初始化一个5*5的0矩阵,用来保存随机部署后每个网格中的节点个数 initnode_num = zeros(5,5); node_num = 0; %用于保存节点个数 %设定网格...一、二维移动网格法简介
二、部分源代码%% Program Start %清零 clc ;clear all;close all; %设定通信半径为5 global Rc; Rc = 5; %设定覆盖区域为L=40的正方形 global L; L = 5*Rc*sqrt(2); S = L^2; %初始化一个5*5的0矩阵,用来保存随机部署后每个网格中的节点个数 initnode_num = zeros(5,5); node_num = 0; %用于保存节点个数 %设定网格权重 grid_weight = [2,1,3,1,1;3,2,2,1,2;4,1,2,2,1;1,2,2,3,1;2,5,1,2,1]; %计算总权重 total_weight = 0; for i = 1:5 for j = 1:5 total_weight_temp = grid_weight(i,j); total_weight = total_weight + total_weight_temp; end end %输出总权重 total_weight grid_weight %% Random Deployment %随机产生坐标,作为节点的初始位置 random_x = randi([0,ceil(L)],1,(total_weight+10)); random_y = randi([0,ceil(L)],1,(total_weight+10)); figure(1); draw_grid(L); %画网格 for i = 1:(total_weight+10) x1 = random_x(i); y1 = random_y(i); draw_round(x1,y1); %节点随机部署图 end %% Count Initial Nodes %计算初始化后每个单元格中的节点个数 for i = 1:(total_weight+10) temp_x = random_x(i); temp_y = random_y(i); %首先判断坐标轴上的点 if temp_x == 0 %y轴上的点 if temp_y == 0 initnode_num(1,1) = initnode_num(1,1) + 1; else for n = 1:L/(Rc*sqrt(2)) if (temp_y>(n-1)*Rc*sqrt(2))&&((temp_y<n*Rc*sqrt(2))||(temp_y==n*Rc*sqrt(2))) initnode_num(1,n) = initnode_num(1,n)+1; end end end end if temp_y == 0 %x轴上的点 for n = 1:L/(Rc*sqrt(2)) if (temp_x>(n-1)*Rc*sqrt(2))&&((temp_x<n*Rc*sqrt(2))||(temp_x==n*Rc*sqrt(2))) initnode_num(n,1) = initnode_num(n,1)+1; end end end %非坐标轴上的点 if (temp_x~=0)||(temp_y~=0) for m = 1:L/(Rc*sqrt(2)) for n = 1:L/(Rc*sqrt(2)) if ((temp_x>(m-1)*Rc*sqrt(2))&&((temp_x<m*Rc*sqrt(2))||(temp_x==m*Rc*sqrt(2))))&&((temp_y>(n-1)*Rc*sqrt(2))&&((temp_y<n*Rc*sqrt(2))||(temp_y==n*Rc*sqrt(2)))) initnode_num(m,n) = initnode_num(m,n)+1; end end end end end initnode_num %% Calculate Reject Force %计算斥力 rejectforce = zeros(5,5); %初始化5*5的矩阵用于存放网格斥力 for i = 1:5 for j = 1:5 %如果网格中的节点数多于网格权重,则斥力等于两者之差,否则斥力为0 if initnode_num(i,j)>grid_weight(i,j) rejectforce(i,j) = initnode_num(i,j)-grid_weight(i,j); else rejectforce(i,j) = 0; end %rejectforce(i,j) = initnode_num(i,j)-grid_weight(i,j); end end grid_weight initnode_num rejectforce %% Calculate Attractive Force %计算引力 attractiveforce = zeros(25,4); %初始化25*4的矩阵,存放每个网格受到的引力,由于每个网格周围有四个网格 %列坐标从小到大表示左、上、右、下,处在边缘的网格若周围没有其他网格,用0表示,即不受 %此方向的引力。另外,第一行代表(1,1)网格,第二行代表(1,2),……,第六行代表 %(2,1)网格,第七行代表(2,2)网格,……,最后一行代表(5,5)网格 for m = 1:5 %m为x轴坐标 for n = 1:5 %n为y轴坐标 j = 1; i = add1; %i自动加1,从1到25 if (m-1)>0 %算左边网格 if grid_weight(m-1,n)>initnode_num(m-1,n) attractiveforce(i,j) = grid_weight(m-1,n)-initnode_num(m-1,n); else attractiveforce(i,j) = 0; end else attractiveforce(i,j) = 0; end %算上边网格 j = j+1; if (n+1)<6 if grid_weight(m,n+1)>initnode_num(m,n+1) attractiveforce(i,j) = grid_weight(m,n+1)-initnode_num(m,n+1); else attractiveforce(i,j) = 0; end else attractiveforce(i,j) = 0; end %算右边网格 j = j+1; if (m+1)<6 if grid_weight(m+1,n)>initnode_num(m+1,n) attractiveforce(i,j) = grid_weight(m+1,n)-initnode_num(m+1,n); else attractiveforce(i,j) = 0; end else attractiveforce(i,j) = 0; end %算下边网格 j = j+1; if (n-1)>0 if grid_weight(m,n-1)>initnode_num(m,n-1) attractiveforce(i,j) = grid_weight(m,n-1)-initnode_num(m,n-1); else attractiveforce(i,j) = 0; end else attractiveforce(i,j) = 0; end end end attractiveforce %% Calculate Moving Probability and Move Nodes %计算移动概率并移动节点同时将网格中的节点移动到网格中心 for m = 1:5 for n = 1:5 k = add1; j = 1; while ((rejectforce(m,n)>0)&&((attractiveforce(k,1)~=0)||(attractiveforce(k,2)~=0)||(attractiveforce(k,3)~=0)||(attractiveforce(k,4)~=0))) %当中心网格斥力大于0&&周围引力至少有一个非0时成立 j = 1; attractiveforce_max = attractiveforce(k,j); row = k; col = j; for j = 2:4 %求最大引力,即求得最大移动概率 if attractiveforce(k,j)>attractiveforce_max attractiveforce_max = attractiveforce(k,j); row = k; col = j; end end initnode_num(m,n) = initnode_num(m,n)-1; %相应网格节点减1 rejectforce(m,n) = rejectforce(m,n)-1; %相应的斥力也减1 attractiveforce(row,col) = attractiveforce(row,col)-1; %相应网格引力减1 %下面进行坐标转换,使通过引力获得节点的网格节点数加1 m1 = m; n1 = n; if col == 1 m1 = m1-1; elseif col == 2 n1 = n1+1; elseif col == 3 m1 = m1+1; elseif col == 4 n1 = n1-1; end initnode_num(m1,n1) = initnode_num(m1,n1)+1; end end end grid_weight initnode_num rejectforce figure(2); %动态调整后的节点部署 draw_grid(L); %画网格 for i = 1:5 for j = 1:5 if initnode_num(i,j)~=0 draw_round(((i-0.5)*Rc*sqrt(2)),((j-0.5)*Rc*sqrt(2))); end end end %-------------------------------------------- %程序名 : i = add1() %参数说明: 无参数 %功能 : 实现加1功能 %调用方式: i = add1 %-------------------------------------------- function i = add1() persistent a if isempty(a) %判断a是否已经赋值(初始化) a=0; end a=a+1; if a >25; a = 1; end i=a;
三、运行结果
四、matlab版本及参考文献1 matlab版本
2014a2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017 -
【优化覆盖】移动网格求解无线传感器网络节点覆盖优化问题matlab源码.md
2021-09-16 21:23:43【优化覆盖】移动网格求解无线传感器网络节点覆盖优化问题matlab源码.md -
【优化覆盖】基于matlab移动网格求解无线传感器网络节点覆盖优化问题【含Matlab源码 1300期】
2021-09-07 20:09:01%设定覆盖区域为L=40的正方形 global L; L = 5*Rc*sqrt(2); S = L^2; %初始化一个5*5的0矩阵,用来保存随机部署后每个网格中的节点个数 initnode_num = zeros(5,5); node_num = 0; %用于保存节点个数 %设定网格...一、二维移动网格法简介
二、部分源代码
%% Program Start %清零 clc ;clear all;close all; %设定通信半径为5 global Rc; Rc = 5; %设定覆盖区域为L=40的正方形 global L; L = 5*Rc*sqrt(2); S = L^2; %初始化一个5*5的0矩阵,用来保存随机部署后每个网格中的节点个数 initnode_num = zeros(5,5); node_num = 0; %用于保存节点个数 %设定网格权重 grid_weight = [2,1,3,1,1;3,2,2,1,2;4,1,2,2,1;1,2,2,3,1;2,5,1,2,1]; %计算总权重 total_weight = 0; for i = 1:5 for j = 1:5 total_weight_temp = grid_weight(i,j); total_weight = total_weight + total_weight_temp; end end %输出总权重 total_weight grid_weight %% Random Deployment %随机产生坐标,作为节点的初始位置 random_x = randi([0,ceil(L)],1,(total_weight+10)); random_y = randi([0,ceil(L)],1,(total_weight+10)); figure(1); draw_grid(L); %画网格 for i = 1:(total_weight+10) x1 = random_x(i); y1 = random_y(i); draw_round(x1,y1); %节点随机部署图 end %% Count Initial Nodes %计算初始化后每个单元格中的节点个数 for i = 1:(total_weight+10) temp_x = random_x(i); temp_y = random_y(i); %首先判断坐标轴上的点 if temp_x == 0 %y轴上的点 if temp_y == 0 initnode_num(1,1) = initnode_num(1,1) + 1; else for n = 1:L/(Rc*sqrt(2)) if (temp_y>(n-1)*Rc*sqrt(2))&&((temp_y<n*Rc*sqrt(2))||(temp_y==n*Rc*sqrt(2))) initnode_num(1,n) = initnode_num(1,n)+1; end end end end if temp_y == 0 %x轴上的点 for n = 1:L/(Rc*sqrt(2)) if (temp_x>(n-1)*Rc*sqrt(2))&&((temp_x<n*Rc*sqrt(2))||(temp_x==n*Rc*sqrt(2))) initnode_num(n,1) = initnode_num(n,1)+1; end end end %非坐标轴上的点 if (temp_x~=0)||(temp_y~=0) for m = 1:L/(Rc*sqrt(2)) for n = 1:L/(Rc*sqrt(2)) if ((temp_x>(m-1)*Rc*sqrt(2))&&((temp_x<m*Rc*sqrt(2))||(temp_x==m*Rc*sqrt(2))))&&((temp_y>(n-1)*Rc*sqrt(2))&&((temp_y<n*Rc*sqrt(2))||(temp_y==n*Rc*sqrt(2)))) initnode_num(m,n) = initnode_num(m,n)+1; end end end end end initnode_num %% Calculate Reject Force %计算斥力 rejectforce = zeros(5,5); %初始化5*5的矩阵用于存放网格斥力 for i = 1:5 for j = 1:5 %如果网格中的节点数多于网格权重,则斥力等于两者之差,否则斥力为0 if initnode_num(i,j)>grid_weight(i,j) rejectforce(i,j) = initnode_num(i,j)-grid_weight(i,j); else rejectforce(i,j) = 0; end %rejectforce(i,j) = initnode_num(i,j)-grid_weight(i,j); end end grid_weight initnode_num rejectforce %% Calculate Attractive Force %计算引力 attractiveforce = zeros(25,4); %初始化25*4的矩阵,存放每个网格受到的引力,由于每个网格周围有四个网格 %列坐标从小到大表示左、上、右、下,处在边缘的网格若周围没有其他网格,用0表示,即不受 %此方向的引力。另外,第一行代表(1,1)网格,第二行代表(1,2),……,第六行代表 %(2,1)网格,第七行代表(2,2)网格,……,最后一行代表(5,5)网格 for m = 1:5 %m为x轴坐标 for n = 1:5 %n为y轴坐标 j = 1; i = add1; %i自动加1,从1到25 if (m-1)>0 %算左边网格 if grid_weight(m-1,n)>initnode_num(m-1,n) attractiveforce(i,j) = grid_weight(m-1,n)-initnode_num(m-1,n); else attractiveforce(i,j) = 0; end else attractiveforce(i,j) = 0; end %算上边网格 j = j+1; if (n+1)<6 if grid_weight(m,n+1)>initnode_num(m,n+1) attractiveforce(i,j) = grid_weight(m,n+1)-initnode_num(m,n+1); else attractiveforce(i,j) = 0; end else attractiveforce(i,j) = 0; end %算右边网格 j = j+1; if (m+1)<6 if grid_weight(m+1,n)>initnode_num(m+1,n) attractiveforce(i,j) = grid_weight(m+1,n)-initnode_num(m+1,n); else attractiveforce(i,j) = 0; end else attractiveforce(i,j) = 0; end %算下边网格 j = j+1; if (n-1)>0 if grid_weight(m,n-1)>initnode_num(m,n-1) attractiveforce(i,j) = grid_weight(m,n-1)-initnode_num(m,n-1); else attractiveforce(i,j) = 0; end else attractiveforce(i,j) = 0; end end end attractiveforce %% Calculate Moving Probability and Move Nodes %计算移动概率并移动节点同时将网格中的节点移动到网格中心 for m = 1:5 for n = 1:5 k = add1; j = 1; while ((rejectforce(m,n)>0)&&((attractiveforce(k,1)~=0)||(attractiveforce(k,2)~=0)||(attractiveforce(k,3)~=0)||(attractiveforce(k,4)~=0))) %当中心网格斥力大于0&&周围引力至少有一个非0时成立 j = 1; attractiveforce_max = attractiveforce(k,j); row = k; col = j; for j = 2:4 %求最大引力,即求得最大移动概率 if attractiveforce(k,j)>attractiveforce_max attractiveforce_max = attractiveforce(k,j); row = k; col = j; end end initnode_num(m,n) = initnode_num(m,n)-1; %相应网格节点减1 rejectforce(m,n) = rejectforce(m,n)-1; %相应的斥力也减1 attractiveforce(row,col) = attractiveforce(row,col)-1; %相应网格引力减1 %下面进行坐标转换,使通过引力获得节点的网格节点数加1 m1 = m; n1 = n; if col == 1 m1 = m1-1; elseif col == 2 n1 = n1+1; elseif col == 3 m1 = m1+1; elseif col == 4 n1 = n1-1; end initnode_num(m1,n1) = initnode_num(m1,n1)+1; end end end grid_weight initnode_num rejectforce figure(2); %动态调整后的节点部署 draw_grid(L); %画网格 for i = 1:5 for j = 1:5 if initnode_num(i,j)~=0 draw_round(((i-0.5)*Rc*sqrt(2)),((j-0.5)*Rc*sqrt(2))); end end end %-------------------------------------------- %程序名 : i = add1() %参数说明: 无参数 %功能 : 实现加1功能 %调用方式: i = add1 %-------------------------------------------- function i = add1() persistent a if isempty(a) %判断a是否已经赋值(初始化) a=0; end a=a+1; if a >25; a = 1; end i=a;
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017. -
WSN仿真-MATLAB基于COMPOW协议下的网络连通率和覆盖率
2018-04-24 17:30:02WSN仿真-MATLAB基于COMPOW协议下的网络连通率和覆盖率,附源代码(注释详尽)。WSN仿真-MATLAB基于COMPOW协议下的网络连通率和覆盖率,附源代码(注释详尽)。 -
基于网格点覆盖模型的高效传感器网络节点配置算法
2021-02-21 04:22:47基于网格点覆盖模型的高效传感器网络节点配置算法 -
matlab开发-网络覆盖问题的贪婪算法
2019-08-27 02:15:35matlab开发-网络覆盖问题的贪婪算法。解决集合覆盖问题的著名贪心算法,稍作改动 -
【WSN优化】基于移动网格求解无线传感器网络节点覆盖优化问题含Matlab源码.zip
2022-04-17 11:02:44智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真代码介绍 -
使用 MATLAB 的无线传感器网络部署:WSN 部署在 100*100 平方米的恶意节点中。-matlab开发
2021-06-01 01:19:33它具有用于在 100 * 100 m^2 区域内部署无线传感器网络的 matlab 代码(deployment.m 和 draw_circle1.m)。 SN 的范围为 30 m。 共有 29 个节点,其中 5 个节点是恶意节点。 绿色圆圈是真正的节点,红色圆圈是恶意... -
【WSN】基于改进鲸鱼算法算法实现无线传感器网络wsn节点部署优化matlab源码.md
2021-09-20 00:21:19各类代码,适合新手学习,电子书免费领取加我 -
利用matlab仿真最小发射功率下wsn的连通性和覆盖率.docx
2021-04-18 12:33:00利用matlab仿真最小发射功率下wsn的连通性和覆盖率.docx 江南大学物联网ZK1/5一题目利用MATLAB仿真最小发射功率下WSN的连通性和覆盖率。二目的(1)在固定节点个数的前提下,仿真求得使网络保持连通的最小通信半径... -
3.rar_matlab 覆盖_node coverage_传感器 覆盖_传感器覆盖_网络 覆盖
2022-07-14 21:16:33无线传感器网络的节点覆盖的研究,覆盖度可达到100 -
无线传感器网络栅栏覆盖改进
2021-01-12 21:38:56栅栏覆盖是无线传感器网络中的研究热点,鉴于移动节点的高昂造价以及在移动过程中的巨大能耗,针对高效节能的修复栅栏漏洞问题进行研究.建立静止节点的权重图,并利用迪杰斯特拉算法(Dijkstra)寻找所需最少数目的移动... -
传感器节点部署:这是用于在无线传感器网络中进行节点部署的简单代码-matlab开发
2021-06-01 00:26:20该代码可用于执行传感器网络部署,其中网格中有特定数量的节点。 这里,节点数为 100,网格为 400*400,可以相应地更改参数,也可以在您的网络中作为函数使用。 -
【优化覆盖】基于matlab人工蜂群算法求解无线网络传感覆盖优化问题【含Matlab源码 1097期】
2022-05-04 21:11:10在WSN中, 要实现较高的无线网络传感器节点覆盖率从而减少监测盲点的出现, 就必须加大无线网络传感器节点的分布密度。但是一旦无线网络传感器节点的分布密度太大, 势必产生冗余节点, 甚至导致数据传输发送冲突, 使... -
WSN无线传感器网络的PSO节点部署仿真+含代码操作演示视频
2022-05-15 23:31:03WSN无线传感器网络的PSO节点部署仿真+含代码操作演示视频 运行注意事项:使用matlab2021a或者更高版本测试,运行里面的Runme.m文件,不要直接运行子函数文件。运行时注意matlab左侧的当前文件夹窗口必须是当前工程... -
基于PSO粒子群优化的WSN无线传感器网络覆盖问题仿真_使用matlab2021a或者以上版本测试
2022-05-04 19:48:44基于PSO粒子群优化的WSN无线传感器网络覆盖问题仿真_使用matlab2021a或者以上版本测试 -
matlab_粒子群算法优化无线传感器网络覆盖
2022-06-21 10:38:06包含了多种粒子群算法的代码,标准的粒子群算法以及改进的粒子群算法的代码,并且将改进的粒子群算法(社会粒子群算法)应用在无线传感器网络的覆盖的优化问题中,这里有针对不同的感知模型,不同的节点覆盖度进行了... -
基于虚拟力算法的无线传感器网络(WSN)覆盖【matlab代码】
2022-06-05 12:46:27-将虚拟力算法用于WSN覆盖,方便改进扩展 -有中文注释,方便理解 -三个图中,左上角的图为优化前的覆盖图,右上角的图为优化后的覆盖图,下面的图为每个节点的移动轨迹 -价格实惠 -
【优化选址】基于粒子群算法实现无线传感器网络覆盖优化附matlab代码
2022-05-14 02:09:49由于无线传感器网络工作环境复杂,传感器节点更换电源不便,网络的覆盖控制问题成为研究核心,它决定了无线传感器网络对监测区域的覆盖率和网络的整体寿命,直接反映出了无线传感器网络的监测质量。采用合理的覆盖策略,... -
【GA,WSN覆盖】基于遗传优化的无线传感器网络覆盖问题的matlab仿真
2022-04-10 20:08:29网络覆盖率是衡量网络覆盖性能最重要的指标,一般定义为所有工作节点覆盖的总范围与目标区域面积大小的比值,其中传感器节点覆盖的范围取所有节点覆盖面积的并集。因此,网络覆盖率总是小于或者等于 1。 G'为... -
COMPOW 协议下的网络连接和覆盖
2020-05-22 17:12:32通过MATLAB仿真实验,还原在 COMPOW 协议下的网络连接和覆盖的关系。 实验内容: (1)假设无线传感器网络随机部署在一个单元广场上。它的通讯和覆盖 半径是已知。确定 COMPOW 协议下网络的公共传输功率。 (2)假设... -
fugai.rar_matlab 覆盖_network coverage_区域覆盖_无线传感器_覆盖 matlab
2022-07-15 18:15:07指定区域无线传感器网络节点简单覆盖程序。 -
毕设题目:Matlab优化覆盖
2021-11-26 12:58:24覆盖问题是无线传感器网络中的重要问题。覆盖问题的解决对于传感器网络中的数据收集、数据聚集、数据查询、数据挖掘等应用具有重要的意义。近年来,研究者们针对不同拓扑结构的无线传感器网络中的不同类型的覆盖问题... -
基于雪堆博弈进化的复杂网络节点覆盖方法
2021-04-19 03:51:32基于雪堆博弈进化的复杂网络节点覆盖方法【技术领域】[0001] 本发明属于网络技术领域,特别涉及一种复杂网络的节点覆盖方法,可用于分布 规划和网络优化,例如城市道路网络中监控设备最优安装位置的选择,投放广告时... -
论文研究-一种概率模型无线传感器网络覆盖算法.pdf
2019-07-22 21:00:01首先该概率模型通过调度覆盖区域内的节点状态来实现对覆盖区域监测,保证了所关注目标节点被传感器节点均匀覆盖的同时又优化了网络资源;其次对不同的覆盖区域利用概率期望值及相应定理求出满足覆盖条件下最少传感器... -
论文研究-改进的无线传感器网络节点虚拟力部署方法.pdf
2019-07-22 23:02:09提出了一种改进的虚拟力节点部署方法,在传统的基于虚拟力的网络节点部署算法的基础上,利用计算几何中的Delaunay三角剖分定义了节点之间的邻接关系,当前节点所受的虚拟力仅被限制在具有邻接关系的节点之间。... -
视角受限传感器网络强栅栏覆盖判定算法
2021-02-23 07:32:24本文通过视角受限节点传感方向的调整,设计一种分布式算法以判定网络能否提供强栅栏覆盖.算法主要思想是利用节点及邻居节点的物理位置关系构建强/弱栅栏对.另外,本文设计贪心策略优先选择邻居节点数多的候选节点构建...
收藏数
1,595
精华内容
638