1 简介

 移动机器人路径规划是一个很复杂的问题,不仅要寻求一条无碰撞的最短路径,而且还要求该路径尽可能平滑并满足一定的安全性。本论文在分析了目前各种路径规划方法优缺点的基础上,选择遗传模拟退火算法来解决静态环境下移动机器人的路径规划问题。 本文首先介绍了路径规划技术的发展现状以及应用方法,并指出了本课题的研究意义和主要研究的内容。其次通过对遗传算法和模拟退火算法的研究,分析了各自的优缺点。并把这两个算法结合构成了遗传模拟退火算法,它兼备了很强的全局和局部搜索能力。接着针对路径规划问题的特点,对遗传模拟退火算法具体应用的各个环节进行了细致的分析,包括工作环境的建立、染色体的表示和编码、适应度函数的设计、遗传算子的设计、模拟退火算法参数的分析和选取等。然后执行基于遗传模拟退火算法的路径规划算法,在此算法中:路径编码时采用快速排斥和跨立实验实现路径点连线不与障碍物边线段相交的约束条件要求。在适应度函数选择时,通过综合考虑路径的可行性、路径的光滑性和路径长度,选用不同的平滑度和间隔度函数权重形式和构造方式,制定了有效的适应度函数。模拟退火中的随机移动准则采用Metropolis准则;也使用了有效的温度更新函数。仿真结果表明,遗传模拟退火算法比标准遗传算法能够更好更快地在工作环境里规划出一条最优的路径,证明了算法的有效性和高效性。


2 部分代码

%%%%%%模拟退火遗传算法(SAGA)%%%%%%%%%%%
clear
%%%设置超参数
p_crs = 0.7;   %交叉概率
p_mut = 0.1;   %变异概率
ratio = 0.5;   %选择操作中父辈的比例
pop_num = 5000;  %种群规模
chrom_len = 7;  %染色体长度,这里代表路线的点数
iteration = 40;
T0 = 100;  %初始温度
A = 0.8;  %退火速度
% 一个个体就是一条路线
[x,y]=popinit(pop_num,chrom_len);   %产生初始种群
fit=saga_fitness(x,y, T0);      %计算种群适应度
[bestx0,besty0,fit0]=best(x,y,fit);
d0 = 0; %初始路径长度
f
end
route_fit = [fit0, route_fit];   %加上初始种群中最优个体
route_x = [bestx0; route_x];
route_y = [bestx0; route_y];
d = [d0, d];
[final_fit,idx]=max(route_fit);            %所有代中的的最佳路线
final_routex=route_x(idx,:);
final_routey=route_y(idx,:);
final_distance = min(d)             %最佳路径长度
%==========画图,可视化路线、进化过程==============
% start point
xs=0;
ys=0;
% Destination
xt=1.5;
yt=8.9;
%obstacle
xobs=[1.5 4.0 1.2];
yobs=[6.5 3.0 1.5];
robs=[1.5 1.0 0.8];
theta=linspace(0,2*pi,100);
max_area = 0;
for k=1:numel(xobs)
fill(xobs(k)+robs(k)*cos(theta),yobs(k)+robs(k)*sin(theta),[0.5 0.7 0.8]);  % 后一个参数表示RGB值
text(xobs(k), yobs(k), num2str(k))
hold on;
end
plot(xs,ys,'bs','MarkerSize',12,'MarkerFaceColor','y');
plot(xt,yt,'kp','MarkerSize',16,'MarkerFaceColor','g');
grid on;
hold on;
%%画出最短路径的路线
plot(final_routex,final_routey,'r*-',  'linewidth', 1.5);
legend('障碍物1','障碍物2','障碍物3','起点', '终点', '最短路线')
set(gca,'FontSize',16);
hold off;
% 进化过程中适应度曲线
figure,
% plot(0:1:size(route_fit,2)-1, route_fit, 'linewidth', 1.2)
plot(d, 'linewidth', 1.2)
% ylim([0.08,0.1])
title(['变异率=',num2str(p_mut),',交叉率=', num2str(p_crs), '的进化曲线']);
legend('最短路径长度值', 'Location', 'northeast');
set(gca,'FontSize',16);
d_saga = d;
save('d_saga');
load('d_saga.mat');
figure,
plot(d, 'linewidth', 1.2), hold on,
plot(d_saga, 'linewidth', 1.2);
title(['变异率=',num2str(p_mut),',交叉率=', num2str(p_crs), '的进化曲线']);
legend('SAGA最优路径值', 'GA最优路径值', 'Location', 'northeast');
set(gca,'FontSize',16);

3 仿真结果

【路径规划】基于模拟退火算法结合遗传算法求解避障路径规划问题Matlab代码_路径规划


4 参考文献

[1]蒋卓强. 基于遗传模拟退火算法的静态路径规划研究[D]. 重庆大学.

部分理论引用网络文献,若有侵权联系博主删除。

【路径规划】基于模拟退火算法结合遗传算法求解避障路径规划问题Matlab代码_模拟退火算法_02