相信很多人都了解过遗传算法,属于启发式算法。

遗传算法的资料很多,这里不多赘述,简单说一下建模流程:编码(coding and decoding),将问题的可行解转换成计算机理解的语言,也就是数字。

建立种群(population),也就是可行解的集合,比喻成一堆蚂蚁。

挑选合适的评价函数(fitness),怎么认为一个蚂蚁优秀,评价结果为数字y,那y越大越优秀。

进化(evolution),挑选出比较优秀的蚂蚁,进行交叉组合和变异,生成新的蚂蚁,挑选出新的种群,进化多轮次后找出最优解。

重点与难点有三点:如何建立种群,也就是建构最初始的可行解的集合。

比如我们求 y = sin(10*x)*x 在 [0,1]上的最大值,那我们需要将一堆[0,1]区间内的小数转换成所谓的“蚂蚁”。编码规则有几种,编码方式有很多,一般采用二进制编码,具体的方式可以参照下面的链接进行细致的学习。遗传算法_百度百科​baike.baidu.com

我们把[0,1]分成1000等份,那就是0,0.001,···到1。1001个点, 2 * 9 < 1001 < 2 ** 10,所以需要10位的编码,比如0101010101,如何将它与[0,1]的数字一一对应,保证我们的集合包括了所有的可行解呢?由等比数列公式易得:

这样,我们的编码解码过程确立。

2. 挑选合适的评价机制。怎么认为它优秀呢,y = sin(10*x)*x ,y越大越优秀;求邮递员送信的最短距离,那距离越小越优秀,但适应度(fitness)是单向的,一般我们认为越大越好,所以求解最小化的问题,需要求解倒数变成求解最大化问题。

3. 进化,这里的进化指的是两个个体拿出各自的基因,进行交叉配对,比如

A —— [0,1,1,0] B——[1,0,0,0] 拿出A的前两位,B的后两位,组合成C ——[0,1,0,0]这样就组成了一个新的个体,当然很多问题需要特殊的进化方法,比如tsp问题。

变异,比如C的某一位变化了,这时采用二进制编码的好处也出来了,变异操作简单,0-1转换,变异概率很低,但有可能达到好的效果,所以变异的操作不能少。

挑选新种群的时候,一般是有放回的拿,谁的适应度高,谁被抽中的概率大,按照这样的方式建立新的种群,接着进化,直到达到终止条件。

接下来我们介绍tsp问题——TSP问题(Traveling Salesman Problem)又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。——百度百科

我们用遗传算法怎么解决这个问题呢?

按照之前的流程来,如何编码解码呢?每一个解法是一条路径,有起点,终点和途径的每一个点,二进制编码很困难,很难表示,这里我们采用直接编码的方式,用点的顺序表示一条路径,比如共三个点,那[0,1,2],就是从0点出发,途径1点,最终到达2点。

总解法只有6个,种群个数不重要,那评价函数呢,总路程是我们想评价的指标,那取倒数可以将问题转化为最大化问题,可是取倒数后,适应度的差异可能很小,可以采用指数,求e的幂次方,来增大适应度的差异。

如何进化,两个路径如何交叉配对,莫烦的解法是随机选取一些下标,把他们作为一个新数组,另外的数字从另一个路径中取,顺序按照此路径的方法,这样就使得每一个点都走了一遍。我在想更好的进化操作,应该会有。

变异,随机交换两个点。

值得一说的是,这里交叉的概率设置的比较低,只有0.1;变异的概率和一般问题相似,0.003。

具体的讲解视频可见哔哩哔哩的莫烦python

具体代码如下:https://github.com/MorvanZhou/Evolutionary-Algorithm/blob/master/tutorial-contents/Genetic%20Algorithm/Travel%20Sales%20Person.py​github.com

莫烦python进化算法_使用遗传算法解决TSP问题(莫烦python 学习笔记)相关推荐

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

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

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

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

  3. 遗传算法解决TSP问题一(python实现)

      旅行推销员问题(英语:Travelling salesman problem, TSP)是这样一个问题:给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路. 遗传算 ...

  4. 【建模算法】基于遗传算法求解TSP问题(matlab求解)

    [建模算法]基于遗传算法求解TSP问题(matlab求解) TSP (traveling salesman problem,旅行商问题)是典型的NP完全问题,即其最坏情况下的时间复杂度随着问题规模的增 ...

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

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

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

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

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

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

  8. 『ML』利用K-Means聚类算法对未标注数据分组——《机器学习实战》学习笔记(Ch10)

    本节用Python实现K-Means算法,对未标注的数据进行聚类. 在做完聚类后,如何对于聚类结果进行评估?请看 用Python实现聚类效果的评估(轮廓系数.互信息) 导航 K-Means简介 代码实 ...

  9. 遗传算法 python 简书_基于DEAP库的Python进化算法从入门到入土—(二)简单遗传算法实现...

    前言 在上一篇中,我们已经介绍了如何在DEAP中实现进化算法的基本操作,在这一篇中我们试图将各个操作组装起来,用进化算法解决一个简单的一元函数寻优问题. 进化算法实例 - 一元函数寻优 问题描述与分析 ...

  10. 差分进化算法_想用遗传算法?来看看这些已为你做好的开源优化框架

    首发于公众号"一颗螺丝丁",欢迎关注! 优化无处不在,无论你是不是从事优化研究,你都或多或少地面临研究模型优化问题.解决优化问题的算法被统称为优化算法,但优化算法的类型是非常多的. ...

最新文章

  1. sed线上经典案例之-同时替换多个字符串
  2. ROS-3 : Catkin工作空间和ROS功能包
  3. 《Atlas基础教程》勘误(持续更新)
  4. 232/485电平,OC门,OD门,TTL电平,CMOS电平,
  5. XenDesktop 5.6 PVS6.1测试中出现的一例错误:Management Interface:Remote request failed
  6. 推荐.neter常用优秀开源项目系列之二
  7. e480 黑苹果_Thinkpad E480黑苹果组建Fusion Drive——鱼和熊掌我都要
  8. oracle裁员原因_Oracle大幅度裁员意味着什么?
  9. 中缀表达式转换成后缀表达式(只适用于加减乘除运算)
  10. Stooge排序与Bogo排序算法
  11. Seata多微服务互相调用_全局分布式事物使用案例_Order-Module order微服务的配置搭建---微服务升级_SpringCloud Alibaba工作笔记0060
  12. TP-link路由器设置界面展示
  13. appium 配置 打开应用闪退
  14. Dynamic programming 1
  15. 科创人·知乎CTO李大海:技术服务内容、商业化依赖内容,曾被「呵呵」难到挠头
  16. STM32F103高级定时器死区时间计算
  17. SpringBoot使用JavaMailSender发送邮件:com.sun.mail.smtp.SMTPSendFailedException: 451 MI:SFQ 163 smtp7
  18. 深度学习论文: Cultivated Land Extraction from High-Resolution Remote Sensing Image
  19. win10运行在哪里打开 win10怎么打开运行窗口快捷键
  20. 金融行业用户画像六大维度

热门文章

  1. 学会了 C 语言真的可以开发出很多东西吗?
  2. harmonyos电脑系统下载,harmonyos系统下载
  3. WORD排版视频教程
  4. 【word论文排版教程4】样式的应用
  5. 如何联合R与Hadoop更好处理大数据!
  6. 数据可视化网页内容自动抓取工具
  7. VB 用zint 库生成PDF417及其他条码
  8. android studio日记本源代码,效能日记本——随时回味过往点滴
  9. MATLAB2016b 下载和安装(亲测)
  10. 智能语音机器人系统介绍