遗传算法解决TSP问题

本文介绍了使用遗传算法解决典型旅行商问题(TSP)的方法。通过将城市编号并构建基因序列,利用倒数表示路径分数,通过遗传算法中的选择、交叉变异操作寻找最短路径。文中给出了算法实现的细节,包括单点交叉和随机交换变异策略,并使用轮盘赌选择法。经过1000次迭代,得到了一个接近最优解的路径。代码已上传至百度云盘,供读者参考。
摘要由CSDN通过智能技术生成

遗传算法解决TSP问题

五一结束后的第一天,也是上课的第一天,今天正式开始算法篇,并且不定期更新机器学习篇。

题目描述

目前有十个城市,他们之间的路径关系如下矩阵所示:
在这里插入图片描述
从图中可以看出,城市之间的路径是无向图构成,试求出可以经过所有城市,并且路径最短的一条线路。
典型的TSP问题,求解方法很多,因为最近人工智能课程学习了遗传算法,就使用遗传算法进行求解吧。

算法设计

先描述一下基本的思路:将所有的城市进行编号,十个城市为0到9,并将所有的城市的排列顺序作为基因,将该路径的最后的值作为分数,最后的目的是挑选出路径最短的一条(基因分数最高的一个)。

这里有一个问题,挑选出路径最短的一条就需要确保开始的值足够大,否则会造成挑选不出。
但是,问题千变万化,无论设多大的值,都有可能超出设的这个值。所以对于分数,我们选择另外一种方案:将路径的总大小换算成对应的倒数,这样就可以通过挑选出最大的值来求解,因为路径大小一定为正数,所以,我们将路径的初始值设置为-1.
设置为倒数最大值的另外一个原因就是关于遗传算法的选择问题,后续会进行解释。

算法实现

遗传算法中最重要的两个步骤是选择和交叉变异。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值