当前位置: 首页 > java >正文

中科院1区top期刊2025年新算法:动麦优化算法(Animated Oat Optimization ,AOO)应用于二维三维无线传感器网络WSN

提出了一种名为动麦优化算法(AOO)的新型元启发式算法,该算法受到环境中动麦自然行为的启发。AOO模拟了动画燕麦的三种独特行为:(i)通过风、水和动物等自然元素进行种子传播;(ii)在吸湿运动的影响下,动画燕麦种子的主芒发生扭曲和旋转,使整个种子能够滚动和传播;(iii)在滚动传播过程中,遇到障碍物时储存能量,在特定条件下触发推进机制以进一步传播种子。
在这里插入图片描述
为了模拟动画燕麦种子的传播过程,借鉴了Rivka Elbaum、Dennis Evangelista和其他研究人员对滚动和喷射机制以及种子传播过程中涉及的力学和运动模型进行的研究,提出了一种包括探索和开发的两阶段方法来模拟动画燕麦种子的传播过程,如图3所示。这个过程涉及三种传播模式:
在这里插入图片描述
图1 勘探开发阶段。
1.种子传播是通过风、水或动物的影响或作用实现的。
2.在传播过程中没有障碍的情况下,种子仅通过吸湿运动诱导的滚动来经历位置变化。
3.在散布过程中,当遇到障碍物时,我们假设主芒在储存能量的驱动下经历突然弹射。整个种子散布过程可以认为是主要由弹射驱动的弹丸运动。

3.2 初始化

AOO 从一组随机解开始,如公式(1)所示。

X = [ x 1 , 1 … x 1 , j … x 1 , D i m − 1 x 1 , D i m x 2 , 1 … x 2 , j … x 2 , D i m − 1 x 2 , D i m ⋮ ⋮ ⋮ x i , j … … … x i , j x N − 1 , 1 … x N − 1 , j … x N − 1 , D i m − 1 x N − 1 , D i m x N , 1 … x N , j … x N , D i m − 1 x N , D i m ] (1) X = \begin{bmatrix} x_{1,1} & \ldots & x_{1,j} & \ldots & x_{1,Dim-1} & x_{1,Dim} \\ x_{2,1} & \ldots & x_{2,j} & \ldots & x_{2,Dim-1} & x_{2,Dim} \\ \vdots & & \vdots & & \vdots & \\ x_{i,j} & \ldots & \ldots & & \ldots & x_{i,j} \\ x_{N-1,1} & \ldots & x_{N-1,j} & \ldots & x_{N-1,Dim-1} & x_{N-1,Dim} \\ x_{N,1} & \ldots & x_{N,j} & \ldots & x_{N,Dim-1} & x_{N,Dim} \end{bmatrix} \tag{1} X= x1,1x2,1xi,jxN1,1xN,1x1,jx2,jxN1,jxN,jx1,Dim1x2,Dim1xN1,Dim1xN,Dim1x1,Dimx2,Dimxi,jxN1,DimxN,Dim (1)

其中 x i x_i xi 表示第 i i i 个子群中的个体及其对应的位置信息。 D i m Dim Dim 表示问题的维度大小, N N N 表示子群中的个体数量。矩阵 X X X 中的每个 x i , j x_{i,j} xi,j 可以使用公式(2)计算:

x i , j = r × ( U B j − L B j ) + L B j , i = 1 , 2 , … , N , j = 1 , 2 , … , D i m (2) x_{i,j} = r \times (UB_j - LB_j) + LB_j, \quad i = 1, 2, \ldots, N, \, j = 1, 2, \ldots, Dim \tag{2} xi,j=r×(UBjLBj)+LBj,i=1,2,,N,j=1,2,,Dim(2)

其中 r r r 是区间 [0, 1] 内的随机数, U B j UB_j UBj L B j LB_j LBj 是给定问题第 j j j 维的上界和下界。

3.3 参数计算

在我们开发的数学模型中,动画燕麦种子传播过程的运动特征与种子主芒的长度、其质量以及滚动过程中偏心率系数相关。这些可以通过以下公式计算:

m = 0.5 × r d i m (3) m = 0.5 \times \frac{r}{dim} \tag{3} m=0.5×dimr(3)

L = N × r d i m (4) L = N \times \frac{r}{dim} \tag{4} L=N×dimr(4)

e = 0.5 × r d i m (5) e = 0.5 \times \frac{r}{dim} \tag{5} e=0.5×dimr(5)

c = 1 − ( t T ) 3 (6) c = 1 - \left(\frac{t}{T}\right)^3 \tag{6} c=1(Tt)3(6)

其中 m m m 表示动画燕麦种子的质量, r r r 是 0 到 1 之间的随机数, d i m dim dim 是目标问题的维度, N N N 是种群大小, L L L 是动画燕麦种子主芒的长度, e e e 是种子滚动过程中的偏心率系数, t t t 是当前迭代次数, T T T 是最大迭代次数, c c c 是动态调整因子。

3.4 探索阶段

在部分动画燕麦种子从植物上掉落后,它们的传播主要通过风、水或动物的影响或作用实现。这种传播模式表现出显著的随机性,允许在广泛的解空间中进行探索。位置更新如下:

W = e r × ( 2 × r d i m − 1 ) ⊗ U B (7) W = \frac{e}{r} \times (2 \times r_{dim} - 1) \otimes UB \tag{7} W=re×(2×rdim1)UB(7)

{ X i + 1 ( i ) = 1 N × ∑ i = 1 N X i ( i ) + W , if mod ( i , N / 10 ) = 0 , X i + 1 ( i ) = X b e s t + W , if mod ( i , N / 10 ) = 1 , X i + 1 ( i ) = X i ( i ) + W , else. (8) \begin{cases} X_{i+1}(i) = \frac{1}{N} \times \sum_{i=1}^{N} X_i(i) + W, \text{if } \text{mod}(i, N/10) = 0, \\ X_{i+1}(i) = X_{best} + W, \text{if } \text{mod}(i, N/10) = 1, \\ X_{i+1}(i) = X_i(i) + W, \text{else.} \end{cases} \tag{8} Xi+1(i)=N1×i=1NXi(i)+W,if mod(i,N/10)=0,Xi+1(i)=Xbest+W,if mod(i,N/10)=1,Xi+1(i)=Xi(i)+W,else.(8)

其中 U B UB UB 是目标问题的上界, X i + 1 ( i ) X_{i+1}(i) Xi+1(i) 是第 i + 1 i+1 i+1 代中第 i i i 个个体的位置, X b e s t X_{best} Xbest 是种群中最佳个体的位置。

3.5 开发阶段

在这个阶段,剩余的动画燕麦种子将根据是否遇到障碍物分为两种传播方法。此外,我们假设两种情况的概率相等。

在没有障碍物的情况下,种子位置的变化通过吸湿滚动实现,这是由湿度引起的应力梯度驱动的。受 Lindner 等人 [2] 的启发,他们证明了细胞微纤维取向控制各向异性膨胀,我们使用临界曲率进行快照屈曲来模拟这种运动。滚动机制通过扭矩公式的偏心旋转数学表达:

A = U B − ⌊ U B × t × sin ⁡ ( 2 × π × r ) T ⌋ (9) A = UB - \left\lfloor \frac{UB \times t \times \sin(2 \times \pi \times r)}{T} \right\rfloor \tag{9} A=UBTUB×t×sin(2×π×r)(9)

R = ( m × e + L 2 ) × r d i m ( − A , A ) d i m (10) R = \left(m \times e + L^2\right) \times \frac{r_{dim}(-A, A)}{dim} \tag{10} R=(m×e+L2)×dimrdim(A,A)(10)

Levy ( dim ) = 0.01 × μ × σ ∣ v ∣ 1 / β (11) \text{Levy}(\text{dim}) = 0.01 \times \frac{\mu \times \sigma}{|v|^{1/\beta}} \tag{11} Levy(dim)=0.01×v1/βμ×σ(11)

σ = ( Γ ( 1 + β ) × sin ⁡ ( π β 2 ) Γ ( 1 2 ) × β × 2 ( β − 1 ) / 2 ) 1 / β (12) \sigma = \left(\frac{\Gamma(1+\beta) \times \sin\left(\frac{\pi \beta}{2}\right)}{\Gamma\left(\frac{1}{2}\right) \times \beta \times 2^{(\beta-1)/2}}\right)^{1/\beta} \tag{12} σ= Γ(21)×β×2(β1)/2Γ(1+β)×sin(2πβ) 1/β(12)

{ X i + 1 ( i ) = X b e s t + R + c × Levy ( dim ) ⊗ X b e s t B = U B − ⌊ U B × t × cos ⁡ ( 2 × π × r ) T ⌋ (13) \begin{cases} X_{i+1}(i) = X_{best} + R + c \times \text{Levy}(\text{dim}) \otimes X_{best} \\ B = UB - \left\lfloor \frac{UB \times t \times \cos(2 \times \pi \times r)}{T} \right\rfloor \end{cases} \tag{13} {Xi+1(i)=Xbest+R+c×Levy(dim)XbestB=UBTUB×t×cos(2×π×r)(13)

其中 r d i m ( − A , A ) r_{dim}(-A, A) rdim(A,A) 是从 − A -A A A A A 的随机矩阵,其维度与目标问题的维度匹配。在 Levy 飞行中, μ \mu μ 表示期望位置或平均值,通常用于调整步长大小, r r r 是 0 到 1 之间的随机值。这种随机性有助于控制飞行过程中运动的方向和距离。 σ \sigma σ 是步长分布的尺度参数,控制步长分布的宽度并确定步长变化的范围。 v v v 表示当前速度向量,反映粒子或个体的运动状态。 β \beta β 是稳定分布的参数,决定步长分布的形状并影响步长变化的随机性和多样性。最后, Γ \Gamma Γ 表示伽马函数,是阶乘函数的连续扩展,用于计算非整数参数的阶乘值。在使用 Levy 飞行时,我们只需要预定义问题的维度,本文中 β \beta β 设置为 1.5。

当种子在传播过程中遇到障碍物时,我们假设主芒在储存能量后经历由喷射驱动的喷射运动。整个种子传播过程以投射运动为特征。为了模拟这一过程,我们使用简化的投射运动模型进行位置更新,位置更新公式如下:

k = 0.5 × r (14) k = 0.5 \times r \tag{14} k=0.5×r(14)

x = 3 × r d i m (15) x = 3 \times \frac{r}{dim} \tag{15} x=3×dimr(15)

θ = π × r (16) \theta = \pi \times r \tag{16} θ=π×r(16)

α = 2 π × e r T (17) \alpha = \frac{2}{\pi} \times e^{\frac{r}{T}} \tag{17} α=π2×eTr(17)

J = 2 × k × x 2 × sin ⁡ ( 2 θ ) m g × r d i m ( − B , B ) d i m × ( 1 − α ) (18) J = \frac{2 \times k \times x^2 \times \sin(2\theta)}{mg} \times \frac{r_{dim}(-B, B)}{dim} \times (1 - \alpha) \tag{18} J=mg2×k×x2×sin(2θ)×dimrdim(B,B)×(1α)(18)

X i ( i ) = X b e s t + J + c × Levy ( dim ) ⊗ X b e s t (19) X_i(i) = X_{best} + J + c \times \text{Levy}(\text{dim}) \otimes X_{best} \tag{19} Xi(i)=Xbest+J+c×Levy(dim)Xbest(19)

其中 k k k 是种子主芒的弹性系数, x x x 是主芒在能量储存期间用于喷射的长度, θ \theta θ 是投射轨迹与地面之间的角度, α \alpha α 是投射运动期间的空气阻力系数, r r r 是 0 到 1 之间的随机数, r ′ r' r 是 0 到 1 之间的随机数。

3.6 AOO 分析

在这里插入图片描述
图1 AOO算法流程图
在这里插入图片描述

4.1 二元感知模型

在当前无线传感器网络(WSN)覆盖场景中,最常见且理想的感知模型是二元感知模型[27]。如图2所示, Q 1 Q_1 Q1 Q 2 Q_2 Q2代表平面区域内的两个随机点。 Q 1 Q_1 Q1位于传感器的检测区域内,其感知概率为1。 Q 2 Q_2 Q2的感知概率为0,因为它位于传感器的检测区域之外。二元感知模型的公式可以表示为:

P ( M i , Q ) = { 1 , d ( M i , Q ) ≤ r 0 , d ( M i , Q ) > r (1) P(M_i, Q) = \begin{cases} 1, & d(M_i, Q) \leq r \\ 0, & d(M_i, Q) > r \end{cases} \tag{1} P(Mi,Q)={1,0,d(Mi,Q)rd(Mi,Q)>r(1)

其中, M M M表示监控区域内的传感器节点,所有节点具有相同的感知半径 r r r,节点集表示为 ( M 1 , M 2 , M 3 ⋯ M n ) (M_1, M_2, M_3 \cdots M_n) (M1,M2,M3Mn) d ( M , Q ) d(M, Q) d(M,Q)是监控点 Q Q Q与传感器节点 M M M之间的欧几里得距离。 P ( M i , Q ) P(M_i, Q) P(Mi,Q)是传感器节点 M M M检测点 Q Q Q的概率。
在这里插入图片描述

4.1.2 传感器节点的二维和三维覆盖模型

无线传感器网络的监控区域被划分为二维矩形区域 E × F E \times F E×F和三维监控区域 E × F × L E \times F \times L E×F×L,其中在监控区域内部署了 n n n个传感器节点。

在二维区域中,传感器节点 M i M_i Mi的位置坐标为 ( X i , Y i ) (X_i, Y_i) (Xi,Yi),监控节点 Q Q Q的位置坐标为 ( X j , Y j ) (X_j, Y_j) (Xj,Yj)。传感器节点 M i M_i Mi和目标监控点 Q Q Q之间的欧几里得距离定义为:

d ( M i , Q ) = ( X i − X j ) 2 + ( Y i − Y j ) 2 (2) d(M_i, Q) = \sqrt{(X_i - X_j)^2 + (Y_i - Y_j)^2} \tag{2} d(Mi,Q)=(XiXj)2+(YiYj)2 (2)

在三维区域中,传感器节点 M i M_i Mi的位置坐标为 ( X i , Y i , Z i ) (X_i, Y_i, Z_i) (Xi,Yi,Zi),监控节点 Q Q Q的位置坐标为 ( X j , Y j , Z j ) (X_j, Y_j, Z_j) (Xj,Yj,Zj)。传感器节点 M i M_i Mi和目标监控点 Q Q Q之间的欧几里得距离定义为:

d ( M i , Q ) = ( X i − X j ) 2 + ( Y i − Y j ) 2 + ( Z i − Z j ) 2 (3) d(M_i, Q) = \sqrt{(X_i - X_j)^2 + (Y_i - Y_j)^2 + (Z_i - Z_j)^2} \tag{3} d(Mi,Q)=(XiXj)2+(YiYj)2+(ZiZj)2 (3)

此外,多个节点可以覆盖监控区域内的同一目标点。节点集 M M M检测监控点 Q Q Q的概率由下式给出:

P ( M , Q ) = 1 − ∏ i = 1 n ( 1 − P ( M i , Q ) ) (4) P(M, Q) = 1 - \prod_{i=1}^{n}(1 - P(M_i, Q)) \tag{4} P(M,Q)=1i=1n(1P(Mi,Q))(4)

覆盖率可以定义为监控区域总面积中所有传感器节点覆盖的比例[28]。因此,在二维WSN环境中的覆盖率表示为:

Cov 2 D = ∑ Q ∈ E × F P ( M , Q ) E × F (5) \text{Cov}_{2D} = \frac{\sum_{Q \in E \times F} P(M, Q)}{E \times F} \tag{5} Cov2D=E×FQE×FP(M,Q)(5)

在三维WSN环境中的覆盖率表示为:

Cov 3 D = ∑ Q ∈ E × F × L P ( M , Q ) E × F × L (6) \text{Cov}_{3D} = \frac{\sum_{Q \in E \times F \times L} P(M, Q)}{E \times F \times L} \tag{6} Cov3D=E×F×LQE×F×LP(M,Q)(6)
在这里插入图片描述

完整代码

%%Animated Oat Optimization Algorithm
function [Best_Score,Best_X,convergence_curve]= AOO(pop_size,iter_max,lb,ub,dim,fobj)%% initialize% search_history,ave_fit,x_1stBest_Score=inf; convergence_curve=zeros(iter_max,1);search_history = zeros(iter_max*pop_size, dim); % search historyave_fit = zeros(iter_max, 1); % average fitnessx_1st= zeros(iter_max, dim); % 1st trajectoryx = 3 * rand(1, pop_size) / dim;m = 0.5 * rand(1, pop_size) / dim;L = pop_size / dim * rand(1, pop_size);e = m;g = 9.8/dim;X=initialization(pop_size,dim,ub,lb);for i = 1:pop_sizePop_Fit(i) = fobj(X(i,:));if Pop_Fit(i)<Best_ScoreBest_Score=Pop_Fit(i);Best_X=X(i,:);endendconvergence_curve(1) = Best_Score;%% iteration partfor t = 1 :1:iter_maxtheta = pi * rand(1,pop_size);c = (1 -  t / iter_max)^3;P = levy(pop_size,dim,1.5);for i = 1 :pop_sizeif rand > 0.5W = c/pi *(2 * rand(1,dim) - 1) .* ub  ;if mod(i,pop_size/10) == 0X(i,:) = mean(X) + W;elseif mod(i,pop_size/10) == 1X(i,:) = Best_X + W ;elseX(i,:) = X(i,:) + W ;endelseif rand > 0.5A = ub - abs(ub * t * sin(2 * pi * rand) / iter_max);R = (m(i) * e(i) + L(i) ^2) /dim * unifrnd( -A , A, 1, dim);X(i,:) = Best_X + R  + c * P(i,:) .* Best_X  ;elsek = 0.5 + 0.5 * rand;B = ub - abs(ub * t * cos(2 * pi * rand) / iter_max);alpha = 1 / pi * exp((randi([0,t]) / iter_max));J = 2 * k * x(i)^2 * sin (2 * theta(i)) / m(i) / g * (1 - alpha) /dim  * unifrnd( -B , B, 1, dim);X(i,:) = Best_X + J + c * P(i,:) .* Best_X ;endendendX = boundaryCheck(X, lb, ub);Pop_Fit = fobj(X);for i=1:pop_sizePop_Fit(i) = fobj(X(i,:));if Pop_Fit(i)<Best_ScoreBest_Score=Pop_Fit(i);Best_X=X(i,:);endendsearch_history ((t-1)*pop_size+1:t*pop_size,:)=X; % search historyave_fit(t) = mean(Pop_Fit); % average fitnessx_1st(t,:)= X(1,:); % 1st trajectoryconvergence_curve(t)=Best_Score;end
end
function [ X ] = boundaryCheck(X, lb, ub)for i=1:size(X,1)FU=X(i,:)>ub;FL=X(i,:)<lb;X(i,:)=(X(i,:).*(~(FU+FL)))+ub.*FU+lb.*FL;end
end
function X=initialization(SearchAgents_no,dim,ub,lb)Boundary_no= size(ub,2); % numnber of boundariesif Boundary_no==1X=rand(SearchAgents_no,dim).*(ub-lb)+lb;end% If each variable has a different lb and ubif Boundary_no>1for i=1:dimub_i=ub(i);lb_i=lb(i);X(:,i)=rand(SearchAgents_no,1).*(ub_i-lb_i)+lb_i;endend
endfunction [z] = levy(n,m,beta)num = gamma(1+beta)*sin(pi*beta/2); % used for Numerator den = gamma((1+beta)/2)*beta*2^((beta-1)/2); % used for Denominatorsigma_u = (num/den)^(1/beta);% Standard deviationu = random('Normal',0,sigma_u,n,m); v = random('Normal',0,1,n,m);z =u./(abs(v).^(1/beta));end

Wang R B, Hu R B, Geng F D, et al. The Animated Oat Optimization Algorithm: A Nature-Inspired Metaheuristic for Engineering Optimization and a Case Study on Wireless Sensor Networks[J]. Knowledge-Based Systems, 2025: 113589.

http://www.xdnf.cn/news/3101.html

相关文章:

  • PXI总线开关卡80个交叉点组成的中密度 PXI矩阵开关模块
  • python合并word中的run
  • IP 地址和 MAC 地址是如何转换的
  • PLC与工业电脑:有什么区别?
  • LeetCode209_长度最小的子数组
  • 《跨端开发变革者:解码阿里Ant Container Engine的底层逻辑》
  • 比亚迪再获国际双奖 以“技术为王”书写中国汽车出海新篇章
  • 五款提效工具
  • 理想药用植物的特征综述-理想中药材”的系统定义-文献精读125
  • 鸿蒙文件上传-从前端到后端详解,对比jq请求和鸿蒙arkts请求区别,对比new FormData()和鸿蒙arktsrequest.uploadFile
  • 合并多个Excel文件到一个文件,并保留格式
  • PostgreSQL Patroni集群组件作用介绍:Patroni、etcd、HAProxy、Keepalived、Watchdog
  • SpringBoot+EasyExcel+Mybatis+H2实现导入
  • 力扣面试150题--删除排序链表中的重复元素 II
  • 4.29[Q]NLP-Exp2
  • uni-app - 小程序使用高德地图完整版
  • Snap7西门子PLC通信协议
  • 【Python魔法方法(特殊方法)】
  • VSCode Verilog编辑仿真环境搭建
  • 松灵PiPER强势突围,攻克具身智能“数据壁垒”
  • [逆向工程]深入理解计算机中的“栈”
  • 内容/社区APP增长:用Deeplink让用户分享的内容“一键直达”
  • 4.2.4 MYSQL的缓存策略
  • C++中vector的扩容过程是怎样的?
  • ARP渗透学习1
  • 农村供水智能化远程监控解决方案
  • std::optional 类是个啥?
  • esp32将partitions.csv文件启用到工程项目中的配置
  • antd pro4 升级 antd5
  • 深入解析:实现一个详细的日志过滤器(LogFilter)