一、WSN模型

【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab

二、鲸鱼算法

2.1. 鲸鱼优化算法的生物机制

【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_02

图1 座头鲸的泡泡捕食示意图

据研究,鲸鱼大脑的某些区域有与人类相似的梭形细胞,而这些细胞负责人类的判断、情感和社会行为。鲸鱼的这种细胞数量是成年人类的两倍,这是它们聪明的主要原因。事实证明,鲸能像人类一样思考、学习、判断、交流,甚至变得情绪化,但显然它的智能水平要低得多。

据观察,鲸鱼(主要是虎鲸)也能发展自己的方言。而座头鲸最有趣的地方是它们特殊的捕猎方法。这种觅食行为被称为泡泡网觅食法。座头鲸喜欢在接近海面的地方捕食磷虾或小鱼。据观察,这种觅食是通过沿着一个圆圈或“9”形路径创造独特的气泡来完成的,如图1所示。在2011年之前,这一行为仅仅是基于在地表的观察进行研究。后来利用传感器展开了更深入的研究,他们捕获了9头座头鲸的300个标签衍生的泡泡网进食事件。他们发现了两个与气泡有关的动作,并将它们命名为“向上螺旋”和“双环”。在前一种策略中,座头鲸会向下潜水12米,然后开始在猎物周围制造一个螺旋形的气泡,再游向水面。值得一提的是,泡泡网捕食是一种独特的行为,只能在座头鲸身上观察到。本文介绍如何利用螺旋泡沫网捕食机制进行数学建模,以达到优化的目的。

2.2. 数学模型与优化算法

1)对猎物的环绕

座头鲸能够识别猎物的位置并将其包围。由于优化设计在搜索空间中的位置不是先验已知的,因此WOA算法假设当前的最佳候选解是目标猎物或接近最优解。在定义了最佳搜索个体之后,其他搜索个体将尝试向最佳搜索个体更新它们的位置。这一行为由以下方程表示:

【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_03​(1)

【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_04​(2)

其中t表示当前迭代,【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_05​和【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_06​是系数向量,X*是目前得到的最佳解的位置向量,【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_07​为位置向量,| |为绝对值,•为逐元素乘法。这里值得一提的是,如果存在更好的解决方案,那么应该在每次迭代中更新X。

向量【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_08​和【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_09​计算方法如下:

【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_10​(3)

【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_11​(4)

这里 【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_12​在迭代过程中(勘探和开发阶段)从2到0是线性递减的, 【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_13​是[0,1]中的一个随机向量。

【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_14

图2  二维和三维位置向量及其可能的下一个位置 (其中X*是目前获得的最佳解决方案)

图2(a)结合一个二维问题说明了公式(2)背后的原理。搜索个体的位置(X,Y)可以根据当前最佳记录的位置(X*,Y*)进行更新。围绕最佳个体的不同位置可以通过调整 【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_15​和 【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_16​向量来得到。图2(b)还描述了搜索在三维空间中可能的更新位置。需要注意的是,通过定义随机向量,可以到达图2所示关键点之间的搜索空间中的任意位置。因此式2允许任何搜索个体更新其在当前最佳解附近的位置,并模拟包围猎物。同样的概念可以扩展到n维的搜索空间,搜索个体将在超立方体中移动,以获得迄今为止最好的解决方案。

2)泡泡网攻击方法

为了建立座头鲸泡泡网行为的数学模型,设计了下面两种方法:

(1)  收缩包围机制:这种行为是通过减少式(3)中的 【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_17​来实现, 【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_18​也因此变成(-a, a)之间的一个随机量,a在迭代过程中从2减到0。设置随机值 【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_19​在[- 1,1]中,搜索个体的新位置可以定义为介于原个体位置和当前最佳个体位置之间的任何位置。图3(a)显示了在二维空间中0≤a≤1可以实现从(X,Y)变到(X*,Y*)的可能位置。

(2)   螺旋更新位置:如图3(b)所示,这种方法首先计算位于(X,Y)的鲸鱼和位于(X,Y,Y)的猎物之间的距离。然后在鲸鱼和猎物的位置之间建立一个螺旋方程,模拟座头鲸的螺旋形运动如式(5):

【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_20​(5)

这里 【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_21​表示第i条鲸到猎物的距离(目前得到的最佳解),b为对数螺旋形状的常数,l为[- 1,1]中的随机数, 是一个元素对元素的乘法。

【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_22

图3 bubbly -net搜索机制在WOA中实现(X是目前获得的最佳解决方案)

(a)收缩环绕机制    (b)螺旋更新位置

座头鲸在一个逐步缩小的圆圈内绕着猎物游动,同时沿着螺旋形的路径游动。为了模拟这种同时发生的行为,我们假设有50%的概率可以在缩小的包围机制和螺旋模型之间做出选择,以更新鲸鱼的位置。模型如下:

【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_23​(6)

其中 【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_24​是一个随机数。

3)搜寻猎物(勘探阶段)

座头鲸是根据彼此的位置随机搜索的。随机计算出的 【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_25​比-1小或比1大时,将强迫搜索个体远离参考鲸鱼。相对于开发阶段,我们根据随机选择的搜索个体来更新搜索代理在探索阶段的位置,而不是根据找到的最佳搜索个体,这一机制将使WOA可进行全局搜索。此时的数学模型为:

【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_26​(7)

【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_27​(8)

这里 【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_28​是随机一头鲸对应的随机位置,图4画出了 【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_29​时特殊解的一些可能位置。

【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_30

图4WOA算法中的勘探机制(X*是随机值)

WOA算法从一组随机解开始。在每次迭代中,搜索个体根据随机选择的搜索个体或者获得的最佳解更新其位置,将a参数由2逐步减为为0,以支持勘探和开发。当 【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_31​时,将选择一个随机的搜索个体; 【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_32​时,将选择最优解作为搜索个体。

根据p的值,WOA可以在螺旋运动和圆形运动之间进行切换,当满足终止准则时终止WOA算法

三、代码

%% 清除环境变量
clear
clc

%% 网络参数
L = 50; % 区域边长
V = 35; % 节点个数
Rs = 5; % 感知半径
Rc = 10; % 通信半径
Re = 0.1; % 感知误差
data = 1; % 离散粒度

%% SSA参数
N = 30; % 种群规模
dim = 2*V; % 维数
ub = L;
lb = 0;
Max_iter = 300;
% 初始化节点位置
X = rand(N, dim).*(ub-lb)+lb;
% 计算适应度值
for i = 1:N
fitness(i) = fun(X(i, :), L, Rs, Re, data);
end
% 初始化领导者的位置和适应度值
[bestfitness, bestindex] = max(fitness);
gbest= X(bestindex, :);
fitnessgbest = bestfitness;
num2str(fitnessgbest)]);
end

%% 结果显示
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(fitnessgbest)]);
%% 绘图
figure;
plot(Curve, 'r', 'lineWidth', 2); % 画出迭代图
title('WOA覆盖率进化曲线', 'fontsize', 12);
xlabel('迭代次数', 'fontsize', 12);
ylabel('网络覆盖率', 'fontsize', 12);
figure
for i = 1:V
axis([0 ub 0 ub]); % 限制坐标范围
sita = 0:pi/100:2*pi; % 角度[0, 2*pi]
hold on;
fill(x(i)+Rs*cos(sita), y(i)+Rs*sin(sita), 'k');
end
plot(x, y, 'r+');
title 'SSA优化覆盖';
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.

【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_33

【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_34

6.参考文献

[1] 史朝亚. 基于PSO算法无线传感器网络覆盖优化的研究[D]. 南京理工大学.

【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码_Matlab_35