2025最新算法应用:基于酶作用优化(Enzyme Action Optimizer, EAO)算法的多个无人机协同路径规划(可以自定义无人机数量及起始点),MATLAB代码

一、酶作用优化算法

酶作用优化(Enzyme Action Optimizer, EAO)算法是一种2025年提出的新型仿生优化算法,灵感源于生物系统中酶的催化机制,发表于JCR 2区期刊《The Journal of Supercomputing》。其核心思想是模拟酶与底物的特异性结合、催化反应及动态适应过程,通过平衡搜索空间的探索与开发,实现复杂优化问题的高效求解。
在这里插入图片描述

1. 核心机制与数学建模
  • 初始化:搜索代理(模拟“底物”)在解空间内随机初始化,位置满足:
    Xi(0)=LB+(UB−LB)⊙ri\mathbf{X}_i^{(0)} = \text{LB} + (\text{UB} - \text{LB}) \odot \mathbf{r}_iXi(0)=LB+(UBLB)ri
    其中LB\text{LB}LBUB\text{UB}UB为变量上下界,ri\mathbf{r}_iri(0,1)(0,1)(0,1)区间随机向量,⊙\odot表示元素乘法。初始适应度通过目标函数f(Xi(0))f(\mathbf{X}_i^{(0)})f(Xi(0))评估,最优初始位置记为Xbest(0)\mathbf{X}_{\text{best}}^{(0)}Xbest(0)

  • 自适应因子(AF):随迭代动态调整,平衡探索与开发:
    AFt=tMaxIter\text{AF}_t = \sqrt{\frac{t}{\text{MaxIter}}}AFt=MaxItert
    其中ttt为当前迭代,MaxIter\text{MaxIter}MaxIter为最大迭代次数,确保后期逐步聚焦局部搜索。

  • 候选位置生成:每次迭代中,每个底物生成两个候选位置:

    1. 基于当前最优解(模拟“酶”)的定向搜索:
      Xi,1(t)=(Xbest(t−1)−Xi(t−1))+ρi⊙sin⁡(AFt⋅(Xbest(t−1)−Xi(t−1)))\mathbf{X}_{i,1}^{(t)} = (\mathbf{X}_{\text{best}}^{(t-1)} - \mathbf{X}_i^{(t-1)}) + \rho_i \odot \sin(\text{AF}_t \cdot (\mathbf{X}_{\text{best}}^{(t-1)} - \mathbf{X}_i^{(t-1)}))Xi,1(t)=(Xbest(t1)Xi(t1))+ρisin(AFt(Xbest(t1)Xi(t1)))
      其中ρi\rho_iρi为随机向量,正弦函数引入波动以增强探索。
    2. 基于随机底物差异的多样化搜索:
      Xi,2(t)=Xi(t−1)+sc1d+AFt⋅sc2(Xbest(t−1)−Xi(t−1))\mathbf{X}_{i,2}^{(t)} = \mathbf{X}_i^{(t-1)} + sc_1 \mathbf{d} + \text{AF}_t \cdot sc_2 (\mathbf{X}_{\text{best}}^{(t-1)} - \mathbf{X}_i^{(t-1)})Xi,2(t)=Xi(t1)+sc1d+AFtsc2(Xbest(t1)Xi(t1))
      其中d\mathbf{d}d为两个随机底物的位置差,sc1,sc2sc_1, sc_2sc1,sc2为缩放因子(受酶浓度参数EC\text{EC}EC调控)。
  • 更新策略:选择适应度更优的候选位置更新底物,同时更新全局最优解Xbest\mathbf{X}_{\text{best}}Xbest,确保解始终在可行域内。
    在这里插入图片描述

2. 算法特点

EAO通过模拟酶的自适应催化特性,动态平衡广域探索(随机扰动)与局部开发(定向收敛),在多维复杂优化问题中表现出良好的收敛速度与鲁棒性。其核心优势在于利用酶-底物相互作用的特异性,实现对优质解区域的精准挖掘。

参考文献
[1]Rodan, A., Al-Tamimi, AK., Al-Alnemer, L. et al. Enzyme action optimizer: a novel bio-inspired optimization algorithm. J Supercomput 81, 686 (2025). https://doi.org/10.1007/s11227-025-07052-w.

二. 无人机路径规划数学模型

2.1 路径最优性

为了提高无人机的操作效率,规划的路径需要在特定的应用标准下达到最优。在我们的研究中,主要关注空中摄影、测绘和表面检查,因此选择最小化路径长度作为优化目标。由于无人机通过地面控制站(GCS)进行控制,飞行路径 XiX_iXi 被表示为无人机需要飞越的一系列 nnn 个航路点的列表。每个航路点对应于搜索地图中的一个路径节点,其坐标为 Pij=(xij,yij,zij)P_{ij} = (x_{ij}, y_{ij}, z_{ij})Pij=(xij,yij,zij)。通过表示两个节点之间的欧几里得距离为 路径长度成本 F1F_1F1 可以计算为:

F1(X)=∑j=1n−1∥PijPi,j+1→∥ F_1(X) = \sum_{j=1}^{n-1} \| \overrightarrow{P_{ij}P_{i,j+1}} \| F1(X)=j=1n1PijPi,j+1

2.2 安全性和可行性约束

除了最优性之外,规划的路径还需要确保无人机的安全操作,引导其避开操作空间中可能出现的威胁,这些威胁通常由障碍物引起。设 KKK 为所有威胁的集合,每个威胁被假设为一个圆柱体,其投影的中心坐标为 CkC_kCk,半径为 RkR_kRk,如下图 所示。
在这里插入图片描述

对于给定的路径段 ∥PijPi,j+1→∥\| \overrightarrow{P_{ij}P_{i,j+1}} \|PijPi,j+1,其相关的威胁成本与它到 CkC_kCk 的距离 dkd_kdk 成正比。考虑到无人机的直径 DDD 和到碰撞区域的危险距离 SSS,威胁成本 F2F_2F2 在障碍物集合 KKK 上计算如下:

F2(Xi)=∑j=1n−1∑k=1KTk(PijPi,j+1→), F_2(X_i) = \sum_{j=1}^{n-1} \sum_{k=1}^K T_k(\overrightarrow{P_{ij}P_{i,j+1}}), F2(Xi)=j=1n1k=1KTk(PijPi,j+1),

其中

Tk(PijPi,j+1→)={0,if dk>S+D+Rk(S+D+Rk)−dk,if D+Rk<dk≤S+D+Rk∞,if dk≤D+Rk T_k(\overrightarrow{P_{ij}P_{i,j+1}}) = \begin{cases} 0, & \text{if } d_k > S + D + R_k \\ (S + D + R_k) - d_k, & \text{if } D + R_k < d_k \leq S + D + R_k \\ \infty, & \text{if } d_k \leq D + R_k \end{cases} Tk(PijPi,j+1)=0,(S+D+Rk)dk,,if dk>S+D+Rkif D+Rk<dkS+D+Rkif dkD+Rk

在操作过程中,飞行高度通常被限制在给定的最小和最大高度之间,例如在调查和搜索应用中,需要相机以特定的分辨率和视场收集视觉数据,从而限制飞行高度。设最小和最大高度分别为 hminh_{\text{min}}hminhmaxh_{\text{max}}hmax。与航路点 PijP_{ij}Pij 相关的高度成本计算为:

Hij={∣hij−hmax+hmin2∣,if hmin≤hij≤hmax∞,otherwise H_{ij} = \begin{cases} |h_{ij} - \frac{h_{\text{max}} + h_{\text{min}}}{2}|, & \text{if } h_{\text{min}} \leq h_{ij} \leq h_{\text{max}} \\ \infty, & \text{otherwise} \end{cases} Hij={hij2hmax+hmin,,if hminhijhmaxotherwise

其中 hijh_{ij}hij 表示相对于地面的飞行高度,如下图所示。
在这里插入图片描述

可以看出,HijH_{ij}Hij 保持平均高度并惩罚超出范围的值。对所有航路点求和得到高度成本:

F3(X)=∑j=1nHij F_3(X) = \sum_{j=1}^n H_{ij} F3(X)=j=1nHij

平滑成本评估转弯率和爬升率,这对于生成可行路径至关重要。如下图 所示。
在这里插入图片描述

转弯角 ϕij\phi_{ij}ϕij 是两个连续路径段 Pij′Pi,j+1′→\overrightarrow{P'_{ij}P'_{i,j+1}}PijPi,j+1Pi,j+1′Pi,j+2′→\overrightarrow{P'_{i,j+1}P'_{i,j+2}}Pi,j+1Pi,j+2 在水平面 Oxy 上的投影之间的角度。设 k→\overrightarrow{k}k 是 z 轴方向的单位向量,投影向量可以计算为:

Pij′Pi,j+1′→=k→×(PijPi,j+1→×k→) \overrightarrow{P'_{ij}P'_{i,j+1}} = \overrightarrow{k} \times (\overrightarrow{P_{ij}P_{i,j+1}} \times \overrightarrow{k}) PijPi,j+1=k×(PijPi,j+1×k)

因此,转弯角计算为:

ϕij=arctan⁡(∥Pij′Pi,j+1′→×Pi,j+1′Pi,j+2′→∥PijPi,j+1′→⋅Pi,j+1′Pi,j+2′→) \phi_{ij} = \arctan\left( \frac{\| \overrightarrow{P'_{ij}P'_{i,j+1}} \times \overrightarrow{P'_{i,j+1}P'_{i,j+2}} \|}{\overrightarrow{P_{ij}P'_{i,j+1}} \cdot \overrightarrow{P'_{i,j+1}P'_{i,j+2}}} \right) ϕij=arctanPijPi,j+1Pi,j+1Pi,j+2PijPi,j+1×Pi,j+1Pi,j+2

爬升角 ψij\psi_{ij}ψij 是路径段 PijPi,j+1→\overrightarrow{P_{ij}P_{i,j+1}}PijPi,j+1 与其在水平面上的投影 Pij′Pi,j+1′→\overrightarrow{P'_{ij}P'_{i,j+1}}PijPi,j+1 之间的角度,由下式给出:

ψij=arctan⁡(zi,j+1−zij∥Pij′Pi,j+1′→∥) \psi_{ij} = \arctan\left( \frac{z_{i,j+1} - z_{ij}}{\| \overrightarrow{P'_{ij}P'_{i,j+1}} \|} \right) ψij=arctanPijPi,j+1zi,j+1zij

然后,平滑成本计算为:

F4(X)=a1∑j=1n−2ϕij+a2∑j=1n−1∣ψij−ψj−1∣ F_4(X) = a_1 \sum_{j=1}^{n-2} \phi_{ij} + a_2 \sum_{j=1}^{n-1} |\psi_{ij} - \psi_{j-1}| F4(X)=a1j=1n2ϕij+a2j=1n1ψijψj1

其中 a1a_1a1a2a_2a2 分别是转弯角和爬升角的惩罚系数。

2.3 总体成本函数

2.3.1 单个无人成本计算

考虑到路径 XXX 的最优性、安全性和可行性约束,iii 个无人机总体成本函数可以定义为以下形式:

fi(X)=∑k=14bkFk(Xi) f_i(X) = \sum_{k=1}^4 b_k F_k(X_i) fi(X)=k=14bkFk(Xi)

其中 bkb_kbk 是权重系数,F1(Xi)F_1(X_i)F1(Xi)F4(Xi)F_4(X_i)F4(Xi) 分别是路径长度、威胁、平滑度和飞行高度相关的成本。决策变量是 XXX,包括 nnn 个航路点 Pij=(xij,yij,zij)P_{ij} = (x_{ij}, y_{ij}, z_{ij})Pij=(xij,yij,zij) 的列表,使得 Pij∈OP_{ij} \in OPijO,其中 OOO 是无人机的操作空间。根据这些定义,成本函数 FFF 是完全确定的,可以作为路径规划过程的输入。

2.3.2 多无人机总成本计算

若共有mmm 个无人机,其总成本为单个无人机成本和,计算公式如下:
fitness(X)=∑i=1mfi(X) fitness(X) = \sum_{i=1}^mf_i(X) fitness(X)=i=1mfi(X)
参考文献:
[1] Phung M D , Ha Q P .Safety-enhanced UAV path planning with spherical vector-based particle swarm optimization[J].Applied Soft Computing, 2021(2):107376.DOI:10.1016/j.asoc.2021.107376.

三、部分代码及结果

close all
clear
clc
% dbstop if all error
pop=100;%种群大小(可以修改)
maxgen=200;%最大迭代(可以修改)

%% 模型建立
model=Create_Model();
UAVnum=4;%无人机数量(可以修改)  必须与无人机的起始点保持一致

%% 初始化每个无人机的模型
for i=1:UAVnum
    ModelUAV(i).model=model;
end

%% 第一个无人机 起始点
start_location = [120;200;100];
end_location = [800;800;150];
ModelUAV(1).model.start=start_location;
ModelUAV(1).model.end=end_location;
%% 第二个无人机 起始点
start_location = [400;100;100];
end_location = [900;600;150];
ModelUAV(2).model.start=start_location;
ModelUAV(2).model.end=end_location;
%% 第三个无人机 起始点
start_location = [200;150;150];
end_location =[850;750;150];
ModelUAV(3).model.start=start_location;
ModelUAV(3).model.end=end_location;
%% 第四个无人机 起始点
start_location = [100;100;150];
end_location = [800;730;150];
ModelUAV(4).model.start=start_location;
ModelUAV(4).model.end=end_location;
%% 第5个无人机 起始点
% start_location = [500;100;130];
% end_location = [850;650;150];
% ModelUAV(5).model.start=start_location;
% ModelUAV(5).model.end=end_location;
% %% 第6个无人机 起始点
% start_location = [100;100;150];
% end_location =   [800;800;150];
% ModelUAV(6).model.start=start_location;
% ModelUAV(6).model.end=end_location;

五个无人机:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

四、完整MATLAB代码见下方名片

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值