1 简介
为了有效提高无线传感器网络的节点覆盖率,提出一种基于蚁狮算法的网络覆盖优化方法.
2 部分代码
%% 清除环境变量 clear; clc; %% 网络参数 L = 100; % 区域边长 V = 80; % 节点个数 Rs = 7; % 感知半径 Rc = 14; % 通信半径 Re = 1; % 感知误差 data = 1; % 离散粒度 %% 初始化参数 N = 30; % 种群规模 dim = 2*V; % 维数 lb = 0; % 自变量下限 ub = L; % 自变量上限 Current_iter = 1; % 迭代次数初值 Max_iter = 300; % 最大迭代次数 %% 初始化位置 %% 初始结果显示 gbest = Elite_antlion_position; x = gbest(1:2:end); y = gbest(2:2:end); disp('初始位置:' ); for i = 1:V disp([num2str(x(i)), ' ', num2str(y(i))]); end disp(['初始覆盖率:', num2str(Elite_antlion_fitness)]); % 初始覆盖图 figure; for i = 1:V axis([0 L 0 L]); % 限制坐标范围 sita = 0:pi/100:2*pi; % 角度[0, 2*pi] hold on; fill(x(i)+Rs*cos(sita), y(i)+Rs*sin(sita), 'b'); plot(x(i)+Rs*cos(sita), y(i)+Rs*sin(sita), 'b'); end plot(x, y, 'r+'); title '初始部署'; %% 迭代 while Current_iter < Max_iter+1 end %% 绘图 figure; plot(Best_fitness, 'k', 'lineWidth', 3); % 画出迭代图 title('ALO算法覆盖率进化曲线', 'fontsize', 13); xlabel('迭代次数', 'fontsize', 12); ylabel('覆盖率', 'fontsize', 12); img =gcf; %获取当前画图的句柄 print(img, '-dpng', '-r600', './img2.png') %即可得到对应格式和期望dpi的图像 %% 初始结果显示 x = gbest(1:2:end); y = gbest(2:2:end); disp('最终位置:' ); for i = 1:V display([num2str(x(i)), ' ', num2str(y(i))]) end disp(['最终覆盖率:', num2str(Elite_antlion_fitness)]); % 最终覆盖图 figure; for i = 1:V axis([0 L 0 L]); % 限制坐标范围 sita = 0:pi/100:2*pi; % 角度[0, 2*pi] hold on; fill(x(i)+Rs*cos(sita), y(i)+Rs*sin(sita), 'g'); end plot(x, y, 'ks'); title 'ALO优化覆盖'; img =gcf; %获取当前画图的句柄 print(img, '-dpng', '-r600', './img1.png') %即可得到对应格式和期望dpi的图像
3 仿真结果
4 参考文献
[1]徐钦帅, 何庆, and 魏康园. "改进蚁狮算法的无线传感器网络覆盖优化." 传感技术学报 32.02(2019):266-275.
5 MATLAB代码与数据下载地址
见博客主页头条