基于改进灰狼算法的无人机集群避障路径规划
首先,在种群初始化阶段,摒弃随机生成,采用Logistic混沌映射生成初始种群位置,利用混沌的遍历性和随机性,使无人机群在初始阶段能够更均匀地覆盖解空间,避免初始位置过于集中导致的早熟收敛。在标准GWO中,Alpha、Beta、Delta的权重是平均的,本设计则根据它们当前的适应度值(即避障安全度与路径长度的综合评分)动态分配权重。当进入密集障碍区(如丛林或城市峡谷),因子值升高,刚性引力减弱,集
✨ 专业领域
擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。
✅ 具体问题可以私信或查看文章底部二维码
✅ 感恩科研路上每一位志同道合的伙伴!
在无人机集群的协同模型与三维空间建模中,本设计构建了一个基于相对坐标系的分布式集群架构。不同于中心控制式,本方案中的每架无人机(灰狼个体)仅需感知邻居节点的位置与速度,这极大地降低了通信带宽压力。设计中采用三维栅格与球体包围盒相结合的方式对障碍物进行建模,对于静态地形(如山峰、建筑物),提取其高程数据生成势场分布;对于动态障碍物(如飞鸟、其他飞行器),则采用速度障碍法(Velocity Obstacle, VO)的原理,在灰狼算法的适应度函数中动态加入“碰撞风险惩罚项”。创新点在于引入了“虚拟领航者”机制,传统的灰狼算法(GWO)依靠Alpha、Beta、Delta三头狼引导,但在复杂障碍物环境中,这三头狼可能同时陷入死胡同。本设计在搜索空间中虚拟出一个不受物理限制的“全局最优指引点”,该点由全局粗略路径规划(如稀疏A*)预先生成,作为长远期的导航信标。无人机在执行灰狼算法进行局部避障时,适应度函数不仅考虑与目标的距离、与障碍物的距离,还加入了与“虚拟领航轨迹”的偏离度。这种设计保证了集群在进行激烈的局部机动避障时,整体的大方向不会偏离预定航线,实现了宏观规划与微观控制的有机结合。
(2)
针对标准灰狼算法收敛因子线性递减导致后期探测能力不足、易陷入局部极值的问题,本设计提出了“基于混沌映射与非线性收敛因子的改进GWO”。首先,在种群初始化阶段,摒弃随机生成,采用Logistic混沌映射生成初始种群位置,利用混沌的遍历性和随机性,使无人机群在初始阶段能够更均匀地覆盖解空间,避免初始位置过于集中导致的早熟收敛。其次,核心创新在于设计了基于余弦规律变化的非线性收敛因子a。在迭代初期,收敛因子长时间维持在较高水平,赋予灰狼(无人机)强大的全局搜索能力(Exploration),使其敢于在大范围内寻找可行的避障路径;在迭代后期,收敛因子快速下降,强化局部开发能力(Exploitation),使无人机能够精细调整姿态和路径以穿过狭窄的障碍物缝隙。此外,引入了“位置更新权重动态调整策略”。在标准GWO中,Alpha、Beta、Delta的权重是平均的,本设计则根据它们当前的适应度值(即避障安全度与路径长度的综合评分)动态分配权重。如果Alpha狼的位置虽然距离目标近但障碍物风险高,则降低其权重,反而通过增大Beta或Delta的权重引导群体绕行,这种动态决策机制极大地提升了无人机集群在复杂动态环境下的生存率。
import numpy as np
class ImprovedGWO:
def __init__(self, dim, size, target, obstacles):
self.dim = dim
self.pop_size = size
self.target = np.array(target)
self.obstacles = obstacles # List of (pos, radius)
self.positions = np.random.uniform(0, 100, (size, dim))
self.alpha_pos = np.zeros(dim)
self.alpha_score = float("inf")
self.beta_pos = np.zeros(dim)
self.beta_score = float("inf")
self.delta_pos = np.zeros(dim)
self.delta_score = float("inf")
def fitness(self, position):
# Distance to target
dist_target = np.linalg.norm(position - self.target)
# Obstacle penalty
penalty = 0
for obs_pos, obs_radius in self.obstacles:
d = np.linalg.norm(position - np.array(obs_pos))
if d < obs_radius + 2: # Safety margin
penalty += 1000 / (d + 0.1)
return dist_target + penalty
def update(self, max_iter, current_iter):
# Nonlinear convergence factor (Cosine decay)
a = 2 * np.cos( (np.pi / 2) * (current_iter / max_iter) )
for i in range(self.pop_size):
fitness = self.fitness(self.positions[i])
if fitness < self.alpha_score:
self.alpha_score = fitness
self.alpha_pos = self.positions[i].copy()
elif fitness < self.beta_score:
self.beta_score = fitness
self.beta_pos = self.positions[i].copy()
elif fitness < self.delta_score:
self.delta_score = fitness
self.delta_pos = self.positions[i].copy()
for i in range(self.pop_size):
r1 = np.random.random(self.dim)
r2 = np.random.random(self.dim)
A1 = 2 * a * r1 - a
C1 = 2 * r2
D_alpha = abs(C1 * self.alpha_pos - self.positions[i])
X1 = self.alpha_pos - A1 * D_alpha
r1 = np.random.random(self.dim)
r2 = np.random.random(self.dim)
A2 = 2 * a * r1 - a
C2 = 2 * r2
D_beta = abs(C2 * self.beta_pos - self.positions[i])
X2 = self.beta_pos - A2 * D_beta
r1 = np.random.random(self.dim)
r2 = np.random.random(self.dim)
A3 = 2 * a * r1 - a
C3 = 2 * r2
D_delta = abs(C3 * self.delta_pos - self.positions[i])
X3 = self.delta_pos - A3 * D_delta
# Simple average (Standard GWO) - Can be improved to weighted
self.positions[i] = (X1 + X2 + X3) / 3
# Boundary check omitted for brevity
def get_best(self):
return self.alpha_pos
在集群协同避障与队形保持方面,设计了基于“弹性连接”与“排斥-吸引平衡”的协同进化策略。为了防止无人机在避障过程中发生相互碰撞或队形散乱,设计在灰狼个体之间定义了虚拟的“弹簧力”。当两架无人机距离过近时,产生强大的排斥力,这部分排斥力直接叠加在GWO的位置更新向量上,作为修正项;当距离过远时,产生吸引力,迫使掉队的无人机加速跟上。创新之处在于“队形柔性变换因子”的引入。该因子与环境的障碍物密度成正比。在开阔空域,因子值低,刚性引力强,集群保持紧密的固定队形(如V字形)以节省能耗;当进入密集障碍区(如丛林或城市峡谷),因子值升高,刚性引力减弱,集群自动切换为松散的“流体队形”,允许个体为了避障而大幅度改变相对位置,甚至呈现单列纵队穿过狭缝。穿过障碍区后,通过记忆模块中存储的队形模板,利用改进GWO的收敛特性,快速恢复初始队形。这种基于环境感知的自适应队形变换,解决了传统刚性编队在复杂环境中频频“卡死”或频繁触发避障导致震荡的难题。

如有问题,可以直接沟通
👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)