蛇优化器 (Snake Optimizer,SO)是一种新颖的自然启发的元启发式算法,以解决各种模拟蛇的特殊交配行为的优化任务。 该成果于2022年发表在中科院1区SCI期刊《Knowledge-Based Systems》上。是一个高效的算法。
本期我们将蛇优化器应用在无人机路径规划上面。代码集成度和可读性都很好,点击主函数即可运行并且自动保存运行结果,保存高质量jpg格式。
寻优三维图形如下:
寻优二维图形如下:
收敛曲线如下:
代码包括:
main函数如下:
clear;clc;close all;warning off;
feature jit off
%% 模型基本参数
% 载入地形 矩阵
filename = 'data.xlsx' ;
model.x_data = xlsread( filename , 'Xi') ;
model.y_data = xlsread(filename, 'Yi') ;
model.z_data = xlsread( filename , 'Zi') ;
model.x_grid = model.x_data(1,:) ;
model.y_grid =model.y_data(:, 1) ;
%起点 相关信息
model.xs = 10 ;
model.ys = 90 ;
model.zs = interp2( model.x_data , model.y_data, model.z_data , ...
model.xs , model.ys ,'linear' ) ; % 高度为插值得到
% 终点 相关信息
model.xt = 130 ;
model.yt = 10 ;
model.zt = interp2( model.x_data , model.y_data, model.z_data , ...
model.xt , model.yt , 'linear'); % 高度为插值得到
model.n= 5 ; % 粗略导航点设置
model.nn= 80 ; % 插值法获得的导航点总数
model.Safeh = 0.0 ; % 与障碍物的最低飞行高度
% 导航点 边界值
model.xmin= min( model.x_data( : ) ) ;
model.xmax= max ( model.x_data( : ) ) ;
model.ymin= min( model.y_data( : ) ) ;
model.ymax= max( model.y_data( : ) ) ;
model.zmin= min( model.z_data( : ) ) ;
model.zmax =model.zmin + (1+ 0.1)*( max( model.z_data(:) )-model.zmin ) ;
% 模型的其他参数
model.nVar = 3*model.n ; % 编码长度
model.pf = 10^4 ; % 惩罚系数
% 障碍物 位置坐标及半径
model.Barrier = [10,60 , 5;
40, 50,6
60, 50 , 5
100, 30, 8 ] ;
model.Num_Barrier = size(model.Barrier , 1 ); % 障碍物的数目
model.weight1 = 0.5; % 权重1 飞行线路长度权重
model.weight2 = 0.3; % 权重2 飞行高度相关权重
model.weight3 = 0.2; % 权重3 Jsmooth 指标权重
%% 算法参数设置
nPop = 30; % 种群规模
MaxIt = 500; % 最大迭代次数
dim = model.nVar; % 节点个数
lb=0; % 下界
ub=1; % 上界
%% 运行算法
fobj = @(x) MyCost(x,model); % 设置目标函数
[Best_f,Best_P,Curve, BestSol]= SO (nPop,MaxIt,lb,ub,dim,fobj);
% 绘图
PlotSolution( BestSol ,model)
% 最优结果输出
disp(['最优路径长度:',num2str(Best_f)]);