手把手教你用CPO搞定无人机集群路径规划
基于冠豪猪优化器CPO的无人机集群路径规划[1]代码中文注释完整,小白也能迅速理解[2]代码结构框架简洁,可自行增加修改[3]可替换其他群智能算法,灰狼、鲸鱼、哈里斯鹰等各种均可,加好友即可(1)点击main.m即可运行main.m中可以修改种群大小和迭代次数,如:pop=50;%种群大小(可以自己修改)maxgen=300;
基于冠豪猪优化器CPO的无人机集群路径规划 [1]代码中文注释完整,小白也能迅速理解 [2]代码结构框架简洁,可自行增加修改 [3]可替换其他群智能算法,灰狼、鲸鱼、哈里斯鹰等各种均可,加好友即可 (1)点击main.m即可运行 main.m中可以修改种群大小和迭代次数,如: pop=50;%种群大小(可以自己修改) maxgen=300;%最大迭代次数(可以自己修改) (2)PlotFinalResult.m是可以单独运行画图的 (3)SetParameter.m可以修改: 待优化点的个数 、起点和终点、障碍物 (5)结果说明 BestPosition 是每个无人机的航迹坐标 BestFit 是每个无人机的总成本 UAVfit 是 每个无人机的四个成本 ConvergenceCurve %是无人机集群的成本随迭代次数的变化 注:本价格仅代码, (6)参考文献: [1]吕石磊,范仁杰,李震,陈嘉鸿,谢家兴.基于改进蝙蝠算法和圆柱坐标系的农业无人机航迹规划[J].农业机械学报:1-19 [2]褚宏悦,易军凯.无人机安全路径规划的混沌粒子群优化研究[J].控制工程:1-8 [3]MD Phung, Ha Q P . Safety-enhanced UAV Path Planning with Spherical Vector-based Particle Swarm Optimization: arXiv, 10.1016/j.asoc.2021.107376[P]. 2021. [4]陈明强,李奇峰,冯树娟等.基于改进粒子群算法的无人机三维航迹规划[J].无线电工程,2023,53(02):394-400. [5]徐建新,孙纬,马超.基于改进粒子群算法的无人机三维路径规划[J].电光与控制:1-10 [6]骆文冠,于小兵.基于强化学习布谷鸟搜索算法的应急无人机路径规划[J].灾害学:1-10
这玩意儿到底怎么玩?
打开项目直接双击main.m开跑就完事了!咱们先瞅瞅控制面板参数:
% 在main.m里随便改这两个值
pop = 50; % 无人机数量(别超过100,不然电脑要哭)
maxgen = 300; % 迭代次数(建议200-500)
这里有个骚操作——把pop改成1就能体验单机遛弯模式。不过说真的,集群模式才是精髓,看着几十架无人机像沙丁鱼群一样避开障碍物,那叫一个治愈!
代码结构解剖室
项目里最核心的是CPO_Algorithm.m这个文件,咱们截取关键段落:
function [BestPosition, BestFit, ConvergenceCurve] = CPO_Algorithm(pop, maxgen, model)
% 初始化豪猪们的位置
Position = initialization(pop, model);
for gen=1:maxgen
% 计算每只豪猪的扎刺系数(其实就是适应度)
Fit = zeros(pop,1);
for i=1:pop
Fit(i) = fitnessFunction(Position(i,:), model);
end
% 找出最靓的那个仔
[~, idx] = min(Fit);
BestPosition = Position(idx,:);
% 更新豪猪的防御姿势(核心算法在这里!)
a = 2 - gen*(2/maxgen); % 收敛因子
for i=1:pop
A = 2*a*rand() - a;
C = 2*rand();
D = abs(C*BestPosition - Position(i,:));
Position(i,:) = BestPosition - A*D;
end
end
end
这段代码实现了CPO的核心迭代逻辑。重点注意那个a参数——它控制着豪猪的"攻击性",随着迭代次数增加逐渐收敛。想换其他算法?比如灰狼(GWO)的话,把位置更新规则换成狼群的αβδ策略就行了,其他框架完全不用动!
障碍物设置骚操作
打开SetParameter.m文件,这里藏着地图编辑器:
model.start = [0,0]; % 起飞点坐标
model.goal = [100,100]; % 目的地坐标
model.obstacle = [ % 障碍物坐标(想加多少加多少)
30 30 5; % 格式:[x坐标, y坐标, 半径]
60 70 8;
80 20 6];
实测在障碍物中间加个甜甜圈形状的禁区特别带感!只要设置多个同心圆障碍物就行,保准让无人机群上演蛇皮走位。
效果展示时间
跑完程序后打开PlotFinalResult.m,你会看到这样的神仙画面:


(假装这里有张酷炫的路径规划图)

图中的彩色曲线是各无人机的最优路径,黑色圆圈是障碍物。细心的同学会发现有些路径宁愿绕远也不直线穿越——这是因为算法里设置了碰撞惩罚系数,安全第一嘛!
如何魔改这个项目
想换算法?找到下面这个函数接口:
% 原版CPO调用
[BestPosition, BestFit, ConvergenceCurve] = CPO_Algorithm(pop, maxgen, model);
% 替换成灰狼算法的话
[BestPosition, BestFit, ConvergenceCurve] = GWO_Algorithm(pop, maxgen, model);
自己写的算法只需要保持输入输出格式一致,其他随便折腾。甚至可以在算法里混搭——比如前半程用CPO快速收敛,后半程用PSO精细搜索。
说点踩坑心得
- 种群数量不是越大越好!超过100之后计算时间指数上涨,效果提升却有限
- 障碍物半径建议控制在5-15之间,太小了没挑战,太大了容易无解
- 遇到路径抖动的情况,适当增加平滑项权重即可解决
最后扔个彩蛋:在适应度函数里加个能耗计算项,就能模拟无人机电量限制。亲眼看着电量低的无人机自动选择最短路径,那智能感绝了!




更多推荐


所有评论(0)