MATLAB遗传算法规划机器人路径(栅格)源码

这个博客分享了一段使用MATLAB实现的遗传算法用于简单栅格路径规划的代码,包括主函数、边界检测、适用度函数、交叉、变异和初始化族群等部分。博主对原有代码进行了修改,解决了排序问题,适用于学习和作业需求。不过,由于博主对遗传算法了解有限,无法深入解答相关问题。
摘要由CSDN通过智能技术生成

MATLAB遗传算法规划机器人路径(栅格)源码

#网上路径规划的代码很多,但是简单栅格路径的规划问题,各位大佬都懒得写,小弟为你奉上,敬请食用(此代码是根据大佬的源码改写而成,由于不知大佬链接,所以就不放了,但是大佬是开源的)

主要包括以下几个部分
text1.m主函数
chack.m边界检测函数
calfitvalue.m适用度函数
crossover.m交叉函数
mutation.m变异函数
poppinit.m初始化族群
select.m
best.m

运行结果如图

链接: link.

图片: Alt

带尺寸的图片:
在这里插入图片描述
在这里插入图片描述
Alt

代码

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%函数名称:主函数text1.m
%%入口参数:无
%%出口参数:无
%%说明:无
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear 
pc=0.7;   %交叉概率
pm=0.006; %变异概率

[x,y]=popinit(500,10);   %产生初始种群
D=calfitvalue(x,y);      %计算种群适应度
for i=1:1:200           %设置进化代数
[newx,newy]=selection(x,y,D);              %选择
[newx,newy]=crossover(newx,newy,pc);       %交叉
[newx,newy]=mutation(newx,newy,pm);        %变异
D=calfitvalue(newx,newy);                  %重新计算适应度
[newx,newy]=selection(newx,newy,D);        %选择     保证交叉变异后的种群都不经过障碍物
D=calfitvalue(newx,newy);                  %重新计算适应度    选择之后的种群适应度也已经发生变化。所以必须重新计算
[bestx,besty,bestfit]=best(newx,newy,D);   %选择最佳个体
bbestx(i,:)=bestx;                         %保存最佳个体
bbesty(i,:)=besty;
bbestfit(i)=bestfit;
x=newx;
y=newy;
end
[bbbestfit,I]=max(bbestfit)                %计算选择出来的最佳个体中 适应度最大的个体,作为最优值输出
bbbestx=bbestx(I,:);
bbbesty=bbesty(I,:);

%根据适应度函数中建立的环境模型,填充障碍物
% fill([8,12,12,8,8],[8,8,12,12,8],[0,0,0])
% hold on
% fill([2,6,6],[2,2,4],[0,0,0])
% hold on
% fill([4,7,2],[6,15,15],[0,0,0])
% hold on
% fill([9,16,16],[16,10,18],[0,0,0])
% hold on
% fill([18,7,12],[1,6,2],[0,0,0])
% hold on

fill([2,4,4,2,2],[0,0,2,2,0],[0,0,0])
hold on
fill([0,2,2,4,4,0,0],[6,6,4,4,8,8,6],[0,
  • 28
    点赞
  • 233
    收藏
    觉得还不错? 一键收藏
  • 61
    评论
评论 61
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值