[Matlab] 遗传算法求解TSP入门

引言:主要依据《 MATLAB智能算法30个案例分析(第2版)》一书,梳理一下,如何利用遗传算法求解TSP(旅行商问题),以及学习遗传算法需要熟悉的MAtlab常用函数,帮助季子木消化理解该知识点,故撰写此文。

了解遗传算法的基本原理

遗传算法可以用来干什么

遗传算法是现代启发式算法中的一种,就是为了解决手算和计算机枚举计算不可能在短时间内得到精确解而采用的,一种退而求其次得到近似最优解的进化算法,进化是指在有限的迭代次数内能通过一些策略(主要是概率)使得随着迭代次数的增加能更快的逼近最优解。

遗传算法是怎样干的

(1)确定遗传算法染色体的编码方式:首先要把实际问题(用文字或图像表述的问题)抽象成计算机能够识别计算的基本单元,TSP问题说白了就是把n个点连成首尾相连的线段,企图得到一条最短的线段,如果手算的话,就是n个点之间的顺序排列问题,选择哪种连接的先后顺序能够使连接得到的线条最短,这样就很清楚了,那TSP问题最基础的运算单元就是n个点之间的顺序排布,遗传算法的编码形式就可以取n个点之间的排序。遗传算法的编码方式就是整数编码,染色体的长度就是城市的个数即n,染色体上每一个基因位表示的就是城市的序号。

(2)确定适应度函数

(3)确定种群规模和迭代次数:种群规模和迭代次数是相互作用的两个因素,求解的问题时间复杂度高点,那种群规模就多一点(就是染色体的个数多一些),种群规模太大的话,每一次计算要付出的代价也大,这时候就可以把种群规模调小的,依赖较高的迭代次数来不断进化求解。

(4)确定选择操作:选择操作就是把种群中较好的(离目标近的)一些染色体选取出来,选择的标准就是适应度函数,选取染色体的个数是根据选择概率来确定的,毕竟谁也说不准该每轮迭代该选取多少个合适。

(5)哪些解是较好的依遗传算法的交叉和变异操作目的都是为了按照一定的策略使解的质量得到改善,在更快的迭代次数内找到近似最优解。

相关推荐
我爱C编程1 小时前
基于BP译码和用户RMA解码的LT码实现及度分布设计matlab实现和误码仿真
matlab·bp译码·rma解码·lt码·度分布
练习时长两年半的RL练习生2 小时前
与AI对话后对 Actor-Critic 中 TD Target 的 a‘ 来源总结
开发语言·人工智能·php
十五年专注C++开发2 小时前
100w条数据丝滑滚动!Qt Model/View 架构实战(二)
开发语言·c++·qt
萧瑟余晖3 小时前
Java深入解析篇三十九之集成测试
java·开发语言·集成测试
skr爱码士3 小时前
06_Qt 常用数据类型与容器:QString、QList、QVector、QMap 的性能与实现分析
开发语言·c++·qt
总有刁民想爱朕ha3 小时前
零基础Python开发「图片批量转MP4视频」工具,本地离线、免费无水印
开发语言·python·音视频
l1t3 小时前
测试DuckDB luajit插件读取本地通达信文件
开发语言·数据库·duckdb
老一岁3 小时前
c问题总结(2)
c语言·开发语言
Ming_studying3 小时前
Python批量压缩图片:支持JPG_PNG_WebP、尺寸限制与CSV报告
开发语言·图像处理·python·pillow·图片压缩