三种经典算法无人机三维路径规划对比(SMA、HHO、GWO三种算法),Matlab代码实现

代码功能

该MATLAB代码用于对比三种元启发式优化算法(SMA、HHO、GWO三种算法, SMA黏菌算法、HHO哈里斯鹰优化算法、GWO灰狼优化算法) 在特定优化问题上的性能,运行环境MATLABR2020b或更高 :

初始化问题模型(CreateModel)

运行三种算法求解最优解

可视化结果(收敛曲线和解的分布)

算法步骤

环境初始化

清空工作区、命令窗口和图形窗口。

问题建模

model = CreateModel()

创建优化问题(具体问题未知,可能是TSP/函数优化等)

CostFunction

定义目标函数(需最小化的代价)

参数设置

搜索空间维度:dim(通过Info(model)获取)

变量边界:下界 lb、上界 ub

算法参数:最大迭代次数 MaxIt=200,种群大小 nPop=30

运行优化算法

依次执行三种算法:

SMA_fuke2() % 黏菌算法(可能为改进版) HHO() % 哈里斯鹰优化算法 GWO() % 灰狼优化算法

代码变量:

Bestcost:全局最优代价

bestX:最优解向量

cost_history:每次迭代的最优代价记录

结果可视化

DrawSolution(results,model) 绘制

算法收敛曲线对比





部分代码

matlab 复制代码
% 绘制地形模型和威胁
function PlotModel(model)

surf(model.X,model.Y,model.H); % 绘制地形
colormap summer;                    % 绘制地形颜色
shading flat
material dull;                   % 材料颜色
camlight left;                   % 在左边的打光
lighting gouraud;                % 灯光
xlabel('x [m]');ylabel('y [m]');zlabel('z [m]');
hold on

% 圆柱体障碍
threats = model.threats;
threat_num = size(threats,1);
h=250; % 高度

for i = 1:threat_num
    threat = threats(i,:);
    threat_x = threat(1);
    threat_y = threat(2);
    threat_z = threat(3);
    threat_radius = threat(4);
    [xc,yc,zc]=cylinder(threat_radius); % 单位圆柱
    color_mat=[186,10,84]./255; %外观颜色
    % 设置中心和高度
    xc=xc+threat_x;
    yc=yc+threat_y;
    zc=zc*h+threat_z;
    c = surf(xc,yc,zc); % 圆柱体
    
    fill3(xc(1,:),yc(1,:),zc(1,:),color_mat,'edgecolor','none');
    fill3(xc(2,:),yc(2,:),zc(2,:),color_mat,'edgecolor','none');       
    set(c,'edgecolor','none','facecolor',color_mat,'FaceAlpha',.3); %设置颜色    
end

end
相关推荐
DBWYX1 小时前
PHP is the best language.
开发语言·php
何朴尧1 小时前
全局数据的处理
开发语言
Web极客码1 小时前
如何在中将网络改为桥接模式并配置固定IP地址
开发语言·网络·ubuntu·php·虚拟机
T风呤2 小时前
QT历史版本,5.15.2使用清华源半小时安装速成
开发语言·qt
晨曦5432102 小时前
针对经济学大数据的 Python 爬虫实践指南
开发语言·爬虫·python
上位机付工2 小时前
C#上位机实现报警语音播报
开发语言·c#·上位机·plc·运动控制卡·语音播报·报警播报
千千道2 小时前
QT 中使用 QSettings 读写 ini 配置文件
开发语言·qt
benben0443 小时前
Unity3D仿星露谷物语开发67之创建新的NPC
开发语言·游戏·ui·c#·游戏引擎
matdodo3 小时前
【大数据】java API 进行集群间distCP 报错unresolvedAddressException
java·大数据·开发语言
老一岁4 小时前
c++set和pair的使用
开发语言·c++