TSP(traveling salesman problem,旅行商问题)描述的是某一旅行商从某个城市出发访问每个城市一次且仅一次,最后回到出发城市,目标是寻找一条最短的遍历n个城市的路径。TSP是典型的NP完全问题,其时间复杂度随问题规模的增加按指数形式增长。求解TSP的算法主要有遗传算法、分支定界法、改良圈算法、模拟退火算法、人工神经网络算法等方法,遗传算法求解该TSP问题。遗传算法是一种模拟自然进化过程的随机化搜索寻找最优解算法,其主要特点是群体搜索策略和群体中个体之间的信息交换,搜索不以梯度信息为基础,尤其适用于处理传统搜索方法难以解决的复杂非线性问题,步骤如下:

1.编码

采用整数排列编码方法,对于个节点的TSP问题,将节点从1到n进行编号,每个从1到n的全排列都可以作为该问题的一个解,即染色体个数。例如对具有5个节点的TSP问题,3,4,5,1,2就为一个合法的染色体。

2.种群初始化

在完成染色体编码之后,需要产生一个初始种群作为初始解,初始种群的数目是根据节点规模大小来确定的,一般取值在50~200之间。

3.适应度函数

利用遗传算法求解最优,就是要找到适应度最大的染色体,适应度函数定义如下:

由上式知适应度函数为恰好遍历个节点并回到出发节点的距离的倒数,优化目标是选取适应度值尽可能大的染色体。

4.选择操作

选择操作是按一定的概率从旧群体选择个体到新群体中,个体适应度值越大,被选中的概率越大。

5.交叉操作

采用部分映射杂交,确定交叉操作的父代,将父代样本两两分组,每组重复以下过程(设节点个数为10):A. 产生两个[1,10]区间内的随机整数作为两个位置参数r1,r2,对两位置的中间数据进行交叉。B. 交叉后,不重复的数字保留,重复的数字利用中间段的对应关系进行映射消除冲突。

6.变异操作

变异操作是随机选取两个点将其对换位置,例如产生两个[1,10]区间内的随机整数作为两个位置参数r1,r2,对两位置的数据对换。

7.进化逆转操作

在选择、交叉、变异之后引进连续多次的进化逆转操作,这样可以增强遗传算法的局部搜索能力。进化指的是逆转算子的单方向性,只有经逆转后适应度值变大的染色体才会保留下来。例如产生两个[1,10]区间内的随机整数作为两个位置参数r1,r2,对两位置中间的数据逆转。

8.终止条件

对每个染色体进行交叉变异,代入适应度函数选出适应度值大的个体进行下一代的交叉、变异以及进化逆转操作,直到满足设定的最大遗传代数结束循环。

遗传算法流程图如下图所示。

利用遗传算法解决TSP问题相关推荐

  1. matlab 遗传优化算法_转载 | 遗传算法解决TSP问题的MATLAB实现

    问题定义: 巡回旅行商问题 给定一组n个城市和俩俩之间的直达距离,寻找一条闭合的旅程,使得每个城市刚好经过一次且总的旅行距离最短. TSP问题也称为货郎担问题,是一个古老的问题.最早可以追溯到1759 ...

  2. 计算智能——遗传算法解决TSP问题实验

    遗传算法解决TSP问题 定义 遗传算法 TSP问题 算法流程 参数说明 代码 主程序 main.m 染色体的路程代价函数 mylength.m 适应度函数 fit.m 交叉操作函数 cross.m 变 ...

  3. MATLAB实战系列(十九)-遗传算法解决TSP(旅行商)问题-应用及解析(文末附MATLAB源码)

    接上篇MATLAB实战系列(十八)-遗传算法解决TSP(旅行商)问题-算法原理 https://wenyusuran.blog.csdn.net/article/details/114060030 感 ...

  4. MAT之ACA:利用ACA解决TSP优化最佳路径问题

    MAT之ACA:利用ACA解决TSP优化最佳路径问题 目录 输出结果 实现代码 输出结果 实现代码 load citys_data.mat n = size(citys,1); D = zeros(n ...

  5. 遗传算法解决tsp问题(基于python)

    目录 1.遗传算法简要介绍 2.tsp问题简要介绍 3.遗传算法解决tsp问题的几个特殊点 4.源码 1.遗传算法简要介绍 简单来说,遗传算法是用于解决最优化问题的一种搜索算法.其核心基于自然界种群进 ...

  6. 模拟退火和遗传算法解决TSP问题

    模拟退火和遗传算法解决TSP问题 数据集介绍 采用数据集FRI26 来自标准数据集,共有26个城市,最优解为933: 数据下载链接 图1:数据矩阵 图2:数据集介绍 算法介绍 模拟退火 介绍: 模拟退 ...

  7. 基于遗传算法解决TSP问题(Matlab代码实现)

    目录 1 概述 2 运行结果 3 Matlab代码实现 4 结语 5 参考文献 1 概述 旅行商问题是一个经典的路径规划问题,传统TSP假设客户位置和客户之间旅行时间是固定不变的,而在现实生活中交通状 ...

  8. 遗传算法解决TSP问题 Python实现【160行以内代码】

    简述 之前通过遗传算法(Genetic Algorithm )+C++实现解决TSP问题 写了一些基本的原理.并且给出了C++版本代码. 相比于近300行的C++程序,Python只用了160行就解决 ...

  9. 运用遗传算法解决TSP问题

    求解15个城市TSP的GA问题,两城市间距离自拟或随机生成 问题分析: 用图论的术语来说,假设有一个图g=(v,e),其中v是顶点集,e是边集,设d=(dij)是由顶点i和顶点j之间的距离所组成的距离 ...

  10. java tsp 遗传算法_遗传算法解决TSP问题

    1实验环境 实验环境:CPU i5-2450M@2.50GHz,内存6G,windows7 64位操作系统 实现语言:java (JDK1.8) 实验数据:TSPLIB,TSP采样实例库中的att48 ...

最新文章

  1. (转)Unity中武器与人物的碰撞检测
  2. 独家 | 在树莓派+Movidius NCS上运用YOLO和Tiny-YOLO完成目标检测(附代码下载)
  3. JS中Node节点总结
  4. C# IntPtr 与 string互转
  5. Boost:bind绑定的unique_ptr测试程序
  6. 代码演示:先来后到的特例、优劣、源码分析
  7. Mac安装MATLAB 2017b
  8. 中移M5311-NBIOT-OPENCPU开发-HTTP串口收发器
  9. VMware view client for ipad 测试
  10. 华为全球分析师大会:HMS Core全球开发者应用集成的数量加速增长,打造全场景智慧体验...
  11. Android 系统构架
  12. linux 以某个用户执行,Linux下以其他用户运行程序
  13. 数据库简介(初步了解数据库)
  14. listary文件查找程序下载和使用
  15. 中图分类法----T-0
  16. bootstrap布局设计在线工具
  17. AVR单片机简单介绍(基于atmega128)
  18. 微信小程序SEO优化策略
  19. linux 编辑 iso文件格式,这两款实用的光盘映像文件制作编辑软件让你处理ISO文件易如反掌...
  20. 微信安卓6.5.3以上版本网页上传不了图片的解决方案

热门文章

  1. 项目管理第九章项目资源管理
  2. 设计模式(4):生成器模式(Builder)
  3. ae2020英文改中文_AE2020 菜单中英文翻译对照表(小白必备AE菜单字典)
  4. 工业工程F37工业工程IE管理
  5. Vue后台管理系统项目总结
  6. 现代电视原理期末复习
  7. 新型人肉搜索Ark将完胜谷歌?
  8. 基于模糊PID的液压舵机伺服系统
  9. 如何修改RubyOnRails中ActiveRecord默认的表格名和外键字段映射关系?
  10. java转换apk软件_jar软件转安卓apk软件