bp神经网络的matlab代码_遗传算法(GA)求解旅行商问题(TSP)MATLAB代码讲解

bp神经网络的matlab代码_遗传算法(GA)求解旅行商问题(TSP)MATLAB代码讲解GA求解TSP问题MATLAB代码讲解https://www.zhihu.com/video/1245830251734888448​(各位小伙伴也可去bilibili同步观看,https://b23.tv/JMBG

9c57cef61cc91dd5bb0a2efc1e9b385c.png

GA求解TSP问题MATLAB代码讲解https://www.zhihu.com/video/1245830251734888448

​(各位小伙伴也可去bilibili同步观看,https://b23.tv/JMBGdY)

Hello,大家好,今天更新一期使用GA求解TSP问题的MATLAB代码讲解。各位可点击左下角阅读原文,访问优化算法交流地官方闲鱼账号


01 | 勘误

首先更正一下上一期推文代码的一个错误,在BinaryTourment_Select这个函数的第15行原来写的是R=randperm(N),但实际应该是R=randperm(NIND)。

%
%      @作者:随心390
%      @微信公众号:优化算法交流地
%
%% 二元锦标赛选择
%输入Chrom:           种群
%输入dist:            距离矩阵
%输出Selch:           二元锦标赛选择出的个体
function Selch=BinaryTourment_Select(Chrom,dist)
Obj=ObjFunction(Chrom,dist);            %计算种群目标函数值,即每个个体的总距离
FitnV=Fitness(Obj);                     %计算每个个体的适应度值,即总距离的倒数
[NIND,N]=size(Chrom);                   %NIND-种群个数、N-种群长度
Selch=zeros(NIND,N);                    %初始化二元锦标赛选择出的个体
for i=1:NIND
    R=randperm(NIND);                   %生成一个1~NIND的随机排列
    index1=R(1);                        %第一个比较的个体序号
    index2=R(2);                        %第二个比较的个体序号
    fit1=FitnV(index1,:);               %第一个比较的个体的适应度值(适应度值越大,说明个体质量越高)
    fit2=FitnV(index2,:);               %第二个比较的个体的适应度值
    %如果个体1的适应度值 大于等于 个体2的适应度值,则将个体1作为第i选择出的个体
    if fit1>=fit2
        Selch(i,:)=Chrom(index1,:);
    else
        %如果个体1的适应度值 小于 个体2的适应度值,则将个体2作为第i选择出的个体
        Selch(i,:)=Chrom(index2,:);
    end
end
end

今天主要讲一下二元锦标赛选择和轮盘赌操作具体的执行过程。


02 | 二元锦标赛选择

比如说有5个个体,每个个体的总距离分别如下(总距离越小越好):

个体1:11

个体2:12

个体3:13

个体4:14

个体5:15

初始选择出的个体为空,即Selch=[]。

那么我们需要选择5次,每次随机选出2个个体

第1次。假设选出个体1和个体3,很明显个体1总距离更小,所以个体1更好,因此第1次选择个体1,并将个体添加到Selch中,此时Selch=[个体1]。

第2次。假设选出个体2和个体4,很明显个体2总距离更小,所以个体2更好,因此第2次选择个体2,并将个体添加到Selch中,此时Selch=[个体1; 个体2]。

第3次。假设选出个体2和个体5,很明显个体2总距离更小,所以个体2更好,因此第3次选择个体2,并将个体添加到Selch中,此时Selch=[个体1; 个体2; 个体2]。

第4次。假设选出个体2和个体1,很明显个体1总距离更小,所以个体1更好,因此第4次选择个体1,并将个体添加到Selch中,此时Selch=[个体1; 个体2; 个体2; 个体1]。

第5次。假设选出个体4和个体5,很明显个体4总距离更小,所以个体4更好,因此第5次选择个体4,并将个体添加到Selch中,此时Selch=[个体1; 个体2; 个体2; 个体1; 个体4]。

选择5次后的Selch=[个体1; 个体2; 个体2; 个体1; 个体4]。


03 | 轮盘赌

%
%      @作者:随心390
%      @微信公众号:优化算法交流地
%
%输入pSwap:选择交换结构的概率
%输入pReversion:选择逆转结构的概率
%输入pInsertion:选择插入结构的概率
%输出index:最终选择哪一个邻域结构,即序号:1 2 3
function index=Roulette(pSwap,pReversion,pInsertion)
p=[pSwap pReversion pInsertion];
r=rand;
c=cumsum(p);
index=find(r<=c,1,'first');
end

因为pSwap=0.2,pReversion=0.5 ,pInsertion=0.3。

所以,p=[0.2 0.5 0.3],c=[0.2 0.7 1]。假设随机数r=0.6那么index就是从左向右找出0.6比c中元素小的第一个位置,此时index=2。


04 | MATLAB代码链接

微信关注:优化算法交流地,后台回复GATSP即可提取代码。

更多资源,尽在优化算法交流地。

往期精彩

  • 号内搜索
  • 遗传算法(GA)求解旅行商问题(TSP)附MATLAB代码
  • 车辆路径问题(VRP)合集
  • 遗传算法求解0-1背包问题(附matlab源代码)
  • 模拟退火(SA)算法求解旅行商 (TSP)问题MATLAB代码讲解
  • 多目标优化 | 基于NSGA-II的多目标0-1背包问题求解(附matlab代码)
  • 多目标优化 | NSGA-II进阶教程(全网首个三目标优化教程)
  • 机器学习 | 基于遗传算法的BP神经网络优化算法(附MATLAB代码)
  • 遗传算法求解车间调度问题(附MATLAB代码)
  • 多目标优化 | NSGA-II
  • word转换为pdf后图片失真的解决办法(全网首发)
  • 机器学习 | 简单实现Bp神经网络
  • 二维装箱问题之BL法修正版(附MATLAB代码)
  • 快速入门文献管理软件-EndNote X9
  • 最小二乘法(附MATLAB代码)
  • NSGA-II多目标优化算法讲解(附MATLAB代码)
  • 基于人工势场法的机器人二维路径规划(附MATLAB代码)
  • 基于粒子群算法的多目标搜索算法讲解(附MATLAB代码)
  • 蚁群算法通俗讲解(附MATLAB代码)

今天的文章bp神经网络的matlab代码_遗传算法(GA)求解旅行商问题(TSP)MATLAB代码讲解分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/59920.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注