您现在的位置:首页 >> 智能优化 >> 内容

m基于GA遗传优化的AGV栅格地图路径规划和避障matlab仿真

时间:2022/12/14 19:15:14 点击:

  核心提示:02_104m,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y52Xk5pp

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览




3.算法概述

        遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假设解置于问题的“环境”中,并按适者生存的原则,从中选择出较适应环境的“染色体”进行复制,再通过交叉,变异过程产生更适应环境的新一代“染色体”群。这样,一代一代地进化,最后就会收敛到最适应环境的一个“染色体”上,它就是问题的最优解。

4.部分源码

Lgrid     = 3;

Speed1    = 0.75;

Speed2    = Speed1/2;

Navg      = 1;

%GA种群

Pop       = 100*Navg;%每个AVG分配100个种群   

%最大进化代数

Iteration = 200;  

%交叉概率

P1        = 0.99; 

%变异概率

P2        = 0.01;

%起点

Sp1       = 3;     

%终点

Ep1       = 313;    

%栅格地图,可以自己修改,这个图是要求中的示意图

G_matrix = zeros(20,20);

[RG,CG] = size(G_matrix);

for i1 = 1:5

    for j = 1:5

        G_matrix([5:6]+(i1-1)*3,[5:6]+(j-1)*3)=1;

    end

end

Xstart    = Sp1-CG*floor(Sp1/CG)+1;

Ystart    = floor(Sp1/CG);

Xend      = Ep1-CG*floor(Ep1/CG)+1;

Yend      = floor(Ep1/CG);

func_maps(G_matrix);

hold on

plot(Xstart,Ystart+1,'r*');

hold on

plot(Xend,Yend+1,'bs');

%由于转弯速度不一样,所以需要对转弯作为单独的目标进行优化

% %路径长度权值

% W1        = 1;     

% %转弯权重

% W2        = 4;        

cnt       = 1;  

%路径变量

Paths_save= {}; 

[R1,C1]   = size(G_matrix);

if  G_matrix(Xstart+1,Ystart+1)==1 | G_matrix(Xend+1,Yend+1)==1

    msgbox('起点或者终点和障碍物重合');  

else

    %初始化

    Path_cnt = Yend - Ystart + 1;

    pop      = zeros(Pop, Path_cnt);

    for i1 = 1:Pop

        pop(i1,1) = Sp1;

        j         = 1;

        for i2 = Ystart+1:Yend-1

            j   = j + 1;

            OK  = []; 

            for i3 = 1:C1

                %栅格

                idx = (i3-1) + (i2-1)*C1;

                if G_matrix(i2,i3) == 0

                   OK = [OK,idx];

                end

            end

            OK_idx    = length(OK);

            index     = randi(OK_idx);%随机整数

            pop(i1,j) = OK(index);

        end

        pop(i1,end)   = Ep1;

        %构成路径

        new_pop2      = func_genpath(pop(i1,:),G_matrix,C1);

        if isempty(new_pop2)==0

           Paths_save(cnt,1) = {new_pop2};

           cnt               = cnt + 1;

        end

    end

    %路径长度

    [Len_path,Len_time] = func_pathlength(Paths_save,C1);

    %目标值

    fitness   = 1./Len_time;

    minLens   = zeros(1,Iteration);

    for i1 = 1:Iteration

        i1

        %选择

        new_pop2   = func_sel(Paths_save,fitness);

        %交叉

        new_pop2   = func_cross(new_pop2,P1);

        %变异

        new_pop2   = func_mut(new_pop2, P2, G_matrix, C1);

        %更新

        Paths_save = new_pop2;

        %计算适应度值

        [Len_path,Len_time] = func_pathlength(Paths_save,C1);

        fitness             = 1./Len_time;

        [RR,CC]       = max(fitness);

        minLens(1,i1) = Len_time(1,CC);

    end

    figure;

    plot(minLens, 'b')

    xlabel('迭代'); 

    ylabel('总时间');

    [V,min_index] = max(fitness);

    minp          = Paths_save{min_index,1};

    figure

    func_maps(G_matrix);

    hold on;

    [V,Iss] = size(minp);

    for i1 = 1:Iss

        Xmin(1,i1) = mod(minp(1,i1),C1)+1; 

        Ymin(1,i1) = fix(minp(1,i1)/C1)+1;

    end

    hold on;

    plot(Xmin,Ymin,'b','linewidth',2); 

    xlabel('x'); 

    ylabel('y');

end

02_104m

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168