1 简介
为了有效提高无线传感器网络的节点覆盖率,。
2 部分代码
%_________________________________________________________________________% % 基于麻雀优化的WNS覆盖优化算法,3D版 % %_________________________________________________________________________% clear all clc rng('default'); %% 设定WNS覆盖参数, %% 默认输入参数都是整数,如果想定义小数,请自行乘以系数变为整数再做转换。 %% 比如范围1*1,R=0.03可以转换为100*100,R=3; %区域范围为AreaX*AreaY*AreaZ AreaX = 100; AreaY = 100; AreaZ = 100; N = 20 ;%覆盖节点数 R = 15;%通信半径 %% 设定麻雀优化参数 pop=30; % 种群数量 Max_iteration=30; %设定最大迭代次数 lb = ones(1,3*N); ub = [AreaX.*ones(1,N),AreaY.*ones(1,N),AreaZ.*ones(1,N)]; dim = 3*N;%维度为3N,N个坐标点 fobj = @(X)fun(X,N,R,AreaX,AreaY,AreaZ);%适应度函数 [Best_pos,Best_score,SSA_curve]=SSA(pop,Max_iteration,lb,ub,dim,fobj); %开始优化 figure SSA_curve = 1 - SSA_curve;%将未覆盖率转换未覆盖率。 plot(SSA_curve,'Color','r') title('Objective space') xlabel('迭代次数'); ylabel('覆盖率'); axis tight grid on box on legend('SSA') img =gcf; %获取当前画图的句柄 print(img, '-dpng', '-r600', './img.png') %即可得到对应格式和期望dpi的图像 display(['最终得到的最优覆盖率 : ', num2str(1 - Best_score)]); %Coordinate代表覆盖的坐标点的存放 %CoordinateNumber 代表覆盖的坐标点的个数 [score,Coordinate,Best_pos,CoordinateNumber] = fun(Best_pos,N,R,AreaX,AreaY,AreaZ); figure plot3(Best_pos(1:N),Best_pos(N+1:2*N),Best_pos(2*N+1:3*N),'r.','MarkerSize',40);%绘制节点 hold on; plot3(Coordinate(1:CoordinateNumber,1),Coordinate(1:CoordinateNumber,2),Coordinate(1:CoordinateNumber,3),'b.','MarkerSize',0.1);%绘制覆盖区域 hold off; title('SSA-WSN最终结果') grid on; legend('WSN节点','覆盖区域') img =gcf; %获取当前画图的句柄 print(img, '-dpng', '-r600', './img1.png') %即可得到对应格式和期望dpi的图像
3 仿真结果
4 参考文献
[1]王振东, 汪嘉宝, 李大海. 一种增强型麻雀搜索算法的无线传感器网络覆盖优化研究[J]. 传感技术学报, 34(6):11.