| 
 | 
 
2-GA算法(遗传算法)的栅格路径寻优计算 
链接:https://pan.baidu.com/s/150bjegoQh40S5HmfnQqGEQ 密码:f9tr 
 
具体链接在halcom.cn论坛,联系人QQ:3283892722 
该论坛是一个学习交流平台,我会逐一的和大家分享学习。 
欢迎大家录制视频,你可在论坛进行打赏分享。 
视频专用播放器:http://halcom.cn/forum.php?mod=viewthread&tid=258&extra=page%3D1 
 
主程序:- clc,clear,close all
 
 - warning off
 
 - global nvar
 
 - tic
 
 - %% MAP
 
 - load('data2.mat');
 
 - K = 4;             % 与节点自身相连的节点数 
 
 - [x,y,A,dij, citynum,a,b] = init_map(data2,K);
 
 - %% 目标
 
 - startpoint=39;  % 起始节点
 
 - endpoint=18;    % 终止节点
 
 - %% GA
 
 - popmin = [1, 1, 1];       % Lb
 
 - popmax =[ 51, 51, 51];    % Ub
 
 - pc = 0.75;   % 0-1之间
 
 - pm = 0.05;   % 0-1之间
 
 - nvar = 3;    % 3个未知数
 
 - itermax = 30; % 迭代次数
 
 - sizepop = 30; % 种群
 
 - %% 初始化种群
 
 - for i=1:sizepop 
 
 -     pop(i,:) = code(popmin,popmax);    % 实数编码
 
 -     [path{i}, fitness(i)] = fun_dijkstra([startpoint, pop(i,:), endpoint], A, dij );   % 目标函数值
 
 - end
 
 - [bestfitness,index] = min(fitness); % 极小值
 
 - zbest.pop = pop(index,:);        % 最佳个体
 
 - fitnessgbest = fitness;      % 个体最优
 
 - gbest = pop;                 % 最优种群
 
 - fitnesszbest = bestfitness;  % 全局最优
 
 - zbest.path = path{index};    % 最佳个体对应的最优路径
 
 - %% 迭代寻优
 
 - for i=1:itermax
 
 -     disp(['当前迭代次数:', num2str(i)])
 
 -     % 选择算子
 
 -     pop = select(sizepop,pop,fitness,popmin,popmax);
 
 -     % 交叉算子
 
 -     pop = cross(sizepop,pc,pop,popmin,popmax);
 
 -     % 变异
 
 -     pop = mut(sizepop,pm,pop,popmin,popmax);
 
 -     
 
 -     for j=1:sizepop
 
 -         [path{j}, fitness(j)] = fun_dijkstra( [startpoint, pop(j,:), endpoint], A, dij );   % 目标函数值
 
 -         if fitness(j)< fitnessgbest(j)
 
 -             fitnessgbest(j) = fitness(j);
 
 -             gbest(j,:) = pop(j,:);
 
 -         end
 
 -         if fitness(j)<fitnesszbest
 
 -             fitnesszbest = fitness(j);
 
 -             zbest.pop = pop(j,:);  % 最佳个体
 
 -             zbest.path = path{j};  % 最佳个体对应的最优路径
 
 -         end
 
 -     end
 
 -     fitness_iter(i) = fitnesszbest;
 
 - end
 
 - %% 结果显示
 
 - figure,
 
 - plot(fitness_iter,'ro-','linewidth',2)
 
 - toc
 
  
- disp('最优解')
 
 - disp(zbest.pop)
 
 - fprintf('\n')
 
  
- disp('最优解对应的最优路径')
 
 - disp(zbest.path)
 
 - fprintf('\n')
 
  
- %% 绘图
 
 - figure(3)
 
 - colormap([0 0 0;1 1 1]),pcolor(0.5:size(a,2)+0.5,0.5:size(a,1)+0.5,b)
 
 - hold on
 
 - % 节点网络结构初始化
 
 - for i=1:citynum
 
 -     plot(x(i)+0.5,y(i)+0.5,'ro','MarkerEdgeColor','r','MarkerFaceColor','g','markersize',8);
 
 -     hold on;
 
 -     text(x(i)+0.5,y(i)+0.5+0.2,num2str(i),'Color',[1 0 0]);
 
 - end
 
 - % 连线
 
 - for i=1:length(zbest.path)-1
 
 -     plot([x(zbest.path(i))+0.5,x(zbest.path(i+1))+0.5],[y(zbest.path(i))+0.5,y(zbest.path(i+1))+0.5],'b-','MarkerEdgeColor','r','MarkerFaceColor','g','markersize',8,'linewidth',2);
 
 - end
 
 - axis tight;
 
 - axis off;
 
 - hold off
 
  复制代码 
 
参考: 
【1】基于穷举法的机器人避障路径寻优(免费) 
【2】智能车辆局部避障路径规划及横向运动控制研究_陈东 
【3】3-PSO算法(粒子群算法)的栅格路径寻优计算 
 
 |   
 
 
 
 |