【路径规划】基于matlab黏菌算法栅格地图机器人最短路径规划【含Matlab源码 2859期】

💥💥💥💥💞💞💞💞💞💞欢迎来到玄武科研社博客之家💞💞💞💞💞💞💥💥💥💥
在这里插入图片描述
✅博主简介:985研究生,热爱科研的Matlab仿真开发者,完整代码 论文复现 程序定制 期刊写作 科研合作 扫描文章底部QQ二维码。
🍎个人主页:玄武科研社
🏆代码获取方式:扫描文章底部QQ二维码

⛳️座右铭:行百里者,半于九十。
更多Matlab路径规划仿真内容点击👇
Matlab路径规划(玄武科研社版)

⛳️关注微信公众号Matlab王者助手或Matlab海神之光,更多资源等你来!!

⛄一、黏菌算法及栅格地图简介

1 黏菌算法
SMA是根据黏菌个体的振荡捕食行为提出的一种智能优化算法,自然界中的黏菌可以根据空气中食物气味的浓度来接近食物,当黏菌静脉接触的食物浓度越高,生物振荡越强,黏菌静脉宽度增大,该区域聚集更多黏菌;当该区域食物浓度低时,黏菌转向探索其他区域。黏菌接近食物的数学模型描述如公式1所示:
在这里插入图片描述
式中,t为当前迭代次数,Xb(t)为当前最优个体位置,XA(t)和XB(t)为随机选择两个个体的位置,W为黏菌质量,代表适应度权重,vb和vc为控制参数,其中vb∈[-a,a],vc从1线性下降到0,r是[0,1]之间的随机数,控制变量p和参数a的数学模型描述如公式2和公式3所示:
在这里插入图片描述
式中,i∈1,2,3…,n,S(i)是当前个体适应度值,DF为当前最佳适应度值,tmax为最大迭代次数。权重参数W的数学模型描述如公式4所示:
在这里插入图片描述
式中,r表示取值[0,1]的随机数,bF表示当前迭代最佳适应度,S(i)表示当前个体适应度值,wf表示当前迭代最差适应度值,i=C表示种群中适应度排在前一半个体,i=O表示剩下的个体,SI(i)是适应度排序,表示气味指数。

即使黏菌找到了更好的食物来源,它们仍然会分离一些个体探索其他领域试图寻找更高质量的食物来源。因此,黏菌种群更新位置的数学模型描述如公式6所示:
在这里插入图片描述
式中,UB和LB分别表示搜索区域的上下界,rand表示取值[0,1]之间的随机数,z为自定义参数。

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
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%栅格数字标识%%%%%%%%%%%%%%%%%%%%%%%%%%%%
x_text = 1:1:n(1)*n
黏菌算法(Sticky Mould Growth Algorithm)是一种基于生物现象的启发式优化算法,用于解决路径规划问题。该算法模拟了黏菌在菌丝生长时的行为,通过模拟黏菌在环境中不断寻找和探测最短路径的过程,来求解最优路径。 在利用黏菌算法进行路径规划时,首先需要构建一个路径网络。路径网络是一个二维矩阵,通过设定起始点和目标点,以及路径的障碍物等限制条件,可以将整个环境划分成一个个小单元格。每个单元格表示一个路径节点,通过计算节点之间的距离和相互连接关系,建立起网络结构。 接下来,随机地在路径网络中选择一些节点作为初始菌群,并计算每个节点的适应度值。适应度值表示了节点上的菌丝浓度,即菌群在此节点上的寿命。初始阶段,菌群在起始点上的浓度较高,同时在网络中进行扩散和蒸发的过程。 然后,根据特定的规则和概率,菌群以一定的方式在网络中移动。菌群会选择寿命较长、菌丝浓度较高的节点作为移动的方向,并且在移动过程中会释放挥发物质,吸引菌群在环境中较短的路径上移动。 通过不断的迭代和移动,菌群会逐渐收敛于最优路径,并寻找到目标点。最后,选取适应度值最高的节点作为最优路径,并根据菌群在节点上留下的信息素浓度来计算路径的优劣程度。 在MATLAB中实现黏菌算法路径规划,可以编写相关的代码来模拟算法的过程,包括初始化路径网络、计算适应度值、移动菌群、更新信息素浓度等步骤。通过多次迭代和优化,可以得到最优的路径规划结果。 总的来说,黏菌算法是一种生物启发式优化算法,通过模拟黏菌的生长行为来进行路径规划。它在各种复杂的环境中都能获得较好的优化结果,具有较高的应用价值。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值