1 簡介
為了有效提高無線傳感器網絡的節(jié)點覆蓋率,提出一種基于蟻獅算法的網絡覆蓋優(yōu)化方法.
2 部分代碼
%% 清除環(huán)境變量
clear;
clc;
%% 網絡參數
L = 100; % 區(qū)域邊長
V = 80; % 節(jié)點個數
Rs = 7; % 感知半徑
Rc = 14; % 通信半徑
Re = 1; % 感知誤差
data = 1; % 離散粒度
%% 初始化參數
N = 30; % 種群規(guī)模
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優(yōu)化覆蓋';
img =gcf; %獲取當前畫圖的句柄
print(img, '-dpng', '-r600', './img1.png') %即可得到對應格式和期望dpi的圖像
3 仿真結果
4 參考文獻
[1]徐欽帥, 何慶, and 魏康園. "改進蟻獅算法的無線傳感器網絡覆蓋優(yōu)化." 傳感技術學報 32.02(2019):266-275.
本文摘自 :https://blog.51cto.com/u