💥💥💥💥💞💞💞💞💞💞欢迎来到玄武科研社博客之家💞💞💞💞💞💞💥💥💥💥
✅博主简介:985研究生,热爱科研的Matlab仿真开发者,完整代码 论文复现 程序定制 期刊写作 科研合作 扫描文章底部QQ二维码。
🍎个人主页:玄武科研社
🏆代码获取方式:扫描文章底部QQ二维码
⛳️座右铭:行百里者,半于九十。
更多Matlab路径规划仿真内容点击👇
①Matlab路径规划(玄武科研社版)
⛳️关注微信公众号Matlab王者助手或Matlab海神之光,更多资源等你来!!
⛄一、水母算法及栅格地图简介
1 水母算法
人工水母搜索算法(artificial Jellyfish Search (JS) optimizer)是于2020年提出的一种基于新型优化算法。具有寻优能力强,收敛速度快等特点。
1.1 算法原理
人工水母搜索算法模拟水母的搜寻行为,涉及到它们跟随洋流,它们在水母群中的运动(主动运动和被动运动),这些运动之间切换的时间控制机制,以及它们汇聚成水母簇的过程。算法中,存在以上两种假定:水母要么跟随洋流,要么在群体内部移动,而“时间控制机制”控制着这些移动类型之间的转换。水母在海洋中移动寻找食物。他们更容易被吸引到食物供应量更大的地方
1.1.1 洋流
洋流含有大量的营养物质,所以水母被吸引过来。洋流的方向是由海洋中每只水母向目前位于最佳位置的水母的所有向量的平均值决定的,由公式(1)-(3)所示。
其中β=3,分配系数。
1.1.2 水母群
类型A运动是水母围绕它们自己的位置运动,每个水母的相应更新位置:
1.1.3 时间控制机制
1.1.4 种群初始化
水母位置初始化
1.1.5 边界条件
海洋分布在世界各地。地球大约是球形的,所以当水母移出有界的搜索区域时,它会回到相反的界限:
算法流程:
步骤1:初始化算法水母种群。
步骤2:评估适应度值确定初始最优位置。
步骤3:更新时间控制参数c ( t ) c(t)c(t)。
步骤4:根据洋流更新水母位置.
步骤5:更加运动类型分别更新类型A和B的水母位置。
步骤6:重新评估适应度值及更新水母最优位置。
步骤7:判断是否满足最大迭代次数,若满足,则输出最优位置和全局最优解,否则,返回步骤3重新迭代计算。
2 栅格地图
2.1 栅格法应用背景
路径规划时首先要获取环境信息, 建立环境地图, 合理的环境表示有利于建立规划方法和选择合适的搜索算法,最终实现较少的时间开销而规划出较为满意的路径。一般使用栅格法在静态环境下建立环境地图。
2.2 栅格法实质
将AGV的工作环境进行单元分割, 将其用大小相等的方块表示出来,这样栅格大小的选取是影响规划算法性能的一个很重要的因素。栅格较小的话,由栅格地图所表示的环境信息将会非常清晰,但由于需要存储较多的信息,会增大存储开销,同时干扰信号也会随之增加,规划速度会相应降低,实时性得不到保证;反之,由于信息存储量少,抗干扰能力有所增强,规划速随之增快,但环境信息划分会变得较为模糊,不利于有效路径的规划。在描述环境信息时障碍物所在区域在栅格地图中呈现为黑色,地图矩阵中标为1,可自由通行区域在栅格地图中呈现为白色,地图矩阵中标为0。路径规划的目的就是在建立好的环境地图中找到一条最优的可通行路径,所以使用栅格法建立环境地图时,栅格大小的合理设定非常关键。
2.3 10乘10的静态环境地图
10乘10的静态环境地图代码
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%建立环境地图%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function DrawMap(map)
n = size(map);
step = 1;
a = 0 : step :n(1);
b = 0 : step :n(2);
figure(1)
axis([0 n(2) 0 n(1)]); %设置地图横纵尺寸
set(gca,'xtick',b,'ytick',a,'GridLineStyle','-',...
'xGrid','on','yGrid','on');
hold on
r = 1;
for(i=1:n(1)) %设置障碍物的左下角点的x,y坐标
for(j=1:n(2))
if(map(i,j)==1)
p(r,1)=j-1;
p(r,2)=i-1;
fill([p(r,1) p(r,1) + step p(r,1) + step p(r,1)],...
[p(r,2) p(r,2) p(r,2) + step p(r,2) + step ],'k');
r=r+1;
hold on
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%栅格数字标识%%%%%%%%%%%%%%%%%%%%%%%