《MATLAB智能算法30个案例》:第4章 基于遗传算法的TSP算法
《MATLAB智能算法30个案例》:第4章 基于遗传算法的TSP算法
- 1. 前言
- 2. MATLAB 仿真示例
- 3. 小结
1. 前言
《MATLAB智能算法30个案例分析》是2011年7月1日由北京航空航天大学出版社出版的图书,作者是郁磊、史峰、王辉、胡斐。本书案例是各位作者多年从事算法研究的经验总结。书中所有案例均因国内各大MATLAB技术论坛网友的切身需求而精心设计,其中不少案例所涉及的内容和求解方法在国内现已出版的MATLAB书籍中鲜有介绍。《MATLAB智能算法30个案例分析》采用案例形式,以智能算法为主线,讲解了遗传算法、免疫算法、退火算法、粒子群算法、鱼群算法、蚁群算法和神经网络算法等最常用的智能算法的MATLAB实现。
本书共给出30个案例,每个案例都是一个使用智能算法解决问题的具体实例,所有案例均由理论讲解、案例背景、MATLAB程序实现和扩展阅读四个部分组成,并配有完整的原创程序,使读者在掌握算法的同时更能快速提高使用算法求解实际问题的能力。《MATLAB智能算法30个案例分析》可作为本科毕业设计、研究生项目设计、博士低年级课题设计参考书籍,同时对广大科研人员也有很高的参考价值。
《MATLAB智能算法30个案例分析》与《MATLAB 神经网络43个案例分析》一样,都是由北京航空航天大学出版社出版,其中的智能算法应该是属于神经网络兴起之前的智能预测分类算法的热门领域,在数字信号处理,如图像和语音相关方面应用较为广泛。本系列文章结合MATLAB与实际案例进行仿真复现,有不少自己在研究生期间与工作后的学习中有过相关学习应用,这次复现仿真示例进行学习,希望可以温故知新,加强并提升自己在智能算法方面的理解与实践。下面开始进行仿真示例,主要以介绍各章节中源码应用示例为主,本文主要基于MATLAB2015b(32位)平台仿真实现,这是本书第四章基于遗传算法的TSP算法实例,话不多说,开始!
2. MATLAB 仿真示例
打开MATLAB,点击“主页”,点击“打开”,找到示例文件
选中GA_TSP.m.m,点击“打开”
GA_TSP.m.m源码如下:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%功能:遗传算法求解TSP问题(为选择操作从新设计后程序)
%环境:Win7,Matlab2015b
%Modi: C.S
%时间:2022-07-5
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%输入:
%D 距离矩阵
%NIND 为种群个数
%X 参数是中国34个城市的坐标(初始给定)
%MAXGEN 为停止代数,遗传到第MAXGEN代时程序停止,MAXGEN的具体取值视问题的规模和耗费的时间而定
%m 为适值淘汰加速指数,最好取为1,2,3,4,不宜太大
%Pc 交叉概率
%Pm 变异概率
%输出:
%R 为最短路径
%Rlength 为路径长度
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 清空环境
clc
clear all
close alltic
%% 加载数据
load CityPosition3 %可分别载入CityPosition1,CityPosition2,CityPosition3进行测试
% X=data;
D=Distanse(X); %生成距离矩阵
N=size(D,1); %城市个数
%% 遗传参数
NIND=100; %种群大小
MAXGEN=200; %最大遗传代数
Pc=0.9; %交叉概率
Pm=0.05; %变异概率
GGAP=0.9; %代沟
%% 初始化种群
Chrom=InitPop(NIND,N);
%% 画出随机解的路径图
DrawPath(Chrom(1,:),X)
pause(0.0001)
%% 输出随机解的路径和总距离
disp('初始种群中的一个随机值:')
OutputPath(Chrom(1,:));
Rlength=PathLength(D,Chrom(1,:));
disp(['总距离:',num2str(Rlength)]);
disp('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
%% 优化
gen=0;
figure;
hold on;box on
xlim([0,MAXGEN])
title('优化过程')
xlabel('代数')
ylabel('最优值')
ObjV=PathLength(D,Chrom); %计算路径长度
preObjV=min(ObjV);
while gen<MAXGEN%% 计算适应度ObjV=PathLength(D,Chrom); %计算路径长度% fprintf('%d %1.10f\n',gen,min(ObjV))line([gen-1,gen],[preObjV,min(ObjV)]);pause(0.0001)preObjV=min(ObjV);FitnV=Fitness(ObjV);%% 选择SelCh=Select(Chrom,FitnV,GGAP);%% 交叉操作SelCh=Recombin(SelCh,Pc);%% 变异SelCh=Mutate(SelCh,Pm);%% 逆转操作SelCh=Reverse(SelCh,D);%% 重插入子代的新种群Chrom=Reins(Chrom,SelCh,ObjV);%% 更新迭代次数gen=gen+1 ;
end
%% 画出最优解的路径图
ObjV=PathLength(D,Chrom); %计算路径长度
[minObjV,minInd]=min(ObjV);
DrawPath(Chrom(minInd(1),:),X)
%% 输出最优解的路径和总距离
disp('最优解:')
p=OutputPath(Chrom(minInd(1),:));
disp(['总距离:',num2str(ObjV(minInd(1)))]);
disp('-------------------------------------------------------------')
toc
添加完毕,点击“运行”,开始仿真,输出仿真结果如下:
初始种群中的一个随机值:
28—>30—>15—>23—>25—>11—>12—>24—>16—>14—>27—>13—>26—>10—>5—>31—>6—>4—>21—>1—>22—>9—>20—>3—>2—>17—>8—>7—>29—>19—>18—>28
总距离:44.7407
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
最优解:
14—>12—>6—>5—>23—>11—>29—>31—>30—>27—>28—>26—>25—>24—>19—>20—>21—>22—>18—>3—>17—>16—>4—>2—>8—>9—>10—>7—>13—>15—>1—>14
总距离:16.6154
-------------------------------------------------------------
时间已过 9.394610 秒。
3. 小结
TSP旅行商问题,一直是比较热门的一个优化问题,许多方法都在这个问题上有过示例与应用,从某种层面上来说,这其实也是一个规划问题,比如常见的路径规划上,不知有没做地图导航相关的同学科普一下,应该是在我们常见的导航,特别是跨城市之间的导航中有所应用,自己笔记中关于旅行商问题的也有不少示例,具体文末链接。对本章内容感兴趣或者想充分学习了解的,建议去研习书中第四章节的内容。后期会对其中一些知识点在自己理解的基础上进行补充,欢迎大家一起学习交流。
MATLAB小技巧(23)矩阵分析–模拟退火
MATLAB小技巧(26)蚁群算法TSP求解
《MATLAB智能算法30个案例》:第4章 基于遗传算法的TSP算法相关推荐
- matlab 30案例 目录,MATLAB-智能算法30个案例分析-终极版(带目录).doc
MATLAB-智能算法30个案例分析-终极版(带目录) MATLAB 智能算法30个案例分析(终极版) 1?基于遗传算法的TSP算法(王辉)? 2?基于遗传算法和非线性规划的函数寻优算法(史峰)? 3 ...
- 《MATLAB智能算法30个案例》:第19章 基于模拟退火算法的TSP算法
<MATLAB智能算法30个案例>:第19章 基于模拟退火算法的TSP算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析&g ...
- 《MATLAB智能算法30个案例》:第20章 基于遗传模拟退火算法的聚类算法
<MATLAB智能算法30个案例>:第20章 基于遗传模拟退火算法的聚类算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析& ...
- 《MATLAB智能算法30个案例》:第27章 无导师学习神经网络的分类——矿井突水水源判别
<MATLAB智能算法30个案例>:第27章 无导师学习神经网络的分类--矿井突水水源判别 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法3 ...
- MATLAB智能算法30个案例分析pdf
下载地址:网盘下载 MATLAB智能算法30个案例分析,ISBN:9787512403512,作者:史峰,王辉 等编著 下载地址:网盘下载 转载于:https://www.cnblogs.com/cf ...
- 《MATLAB智能算法30个案例》:第25章 有导师学习神经网络的回归拟合——基于近红外光谱的汽油辛烷值预测
<MATLAB智能算法30个案例>:第25章 有导师学习神经网络的回归拟合--基于近红外光谱的汽油辛烷值预测 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MA ...
- 《MATLAB智能算法30个案例》:第12章 免疫优化算法在物流配送中心选址中的应用
<MATLAB智能算法30个案例>:第12章 免疫优化算法在物流配送中心选址中的应用 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案 ...
- MATLAB智能算法30个案例分析.史峰等
<MATLAB智能算法30个案例分析>是2011年由北京航空航天大学出版社出版的图书,作者是郁磊.史峰.王辉.胡斐- <MATLAB智能算法30个案例分析>是作者多年从事算法研 ...
- 《MATLAB智能算法30个案例》:第1章 谢菲尔德大学的MATLAB遗传算法工具箱
<MATLAB智能算法30个案例>:第1章 谢菲尔德大学的MATLAB遗传算法工具箱 1. 前言 2. MATLAB 仿真示例一 3. MATLAB 仿真示例二 4. 小结 1. 前言 & ...
最新文章
- 你没听说过的Go语言惊人优点
- Ubuntu 安装flash
- 冲刺One之站立会议8 /2015-5-21
- mnn 可变输入项目实例
- LNMP-源码 nginx ,keepalived
- java stringBuilder的用法
- CGRect vs CGPoint vs CGSize
- java xca碗组口径,公路车常见杂音检查清单和解决方法(图文)
- 何小鹏:雷军造车是我“怂恿的” 我一直建议小米要造车
- 《NET 产品版权保护方案》非常全面, 《武汉.NET俱乐部》, 培训讲议
- android 连续调用方法是,android – SwitchPreferences多次调用onPreferenceChange()方法
- 物业管理系统源码java_Java小区物业管理系统 源码报告下载
- Windows配置Caffe教程
- Scala的空值删除和空值填充
- 和周杰讨论:DB2连接问题
- Tesseract综述
- MATLAB坐标轴位置调整
- 第三天---随机小方块
- PostgreSQL向量计算插件——vops
- 腾讯视频开启硬件加速