遗传算法应用于TSP

本文主要内容为利用遗传算法解决TSP(旅行商问题)。

TSP问题可以描述为:某一旅行商从某个城市出发访问n个城市,去到每个城市一次且仅一次,目标为安排路线并其为最短路线。

本案例以14个城市的二维坐标为数据,寻找一条最短的遍历这14个城市的路径。

遗传算法流程:
  • 编码

对于14个城市,设置染色体分为14段,每一段为对应城市的编号。利用randperm(14)随机编码一个染色体。例如得到:6 3 11 7 14 8 5 1 2 4 13 9 10 12

  • 种群初始化

完成编码之后,需要产生一个初始种群作为起始解。初始化种群数目一般根据经验得到,一般取值为50到200之间。根据本案例城市个数,取种群大小为100。

  • 适应度函数

设函数为遍历14个城市的距离的倒数。优化的目标就是选择适应度函数尽可能大的染色体,适应度函数越大的染色体越优质,反之越劣质。

  • 选择操作

从旧群体中以一定概率选择个体到新群体中,个体被选中的概率跟适应度值有关,个体适应值越大,被选中的概率越大。

  • 交叉操作

**该部分与传统交叉操作不同,交叉操作后的染色体应满足编码要求。**采用部分映射杂交,确定交叉操作的父代,将父代样本两两分组,重复以下操作:

在1至14间产生两个随机整数,将两个随机数中间的染色体段进行交叉。交叉后,不重复的段保留,有冲突的数字采用部分映射的方法消除冲突。

  • 变异操作

**该部分与传统变异操作不同,变异操作后的染色体应满足编码要求。**变异策略采取随机选两个点将其对换位置。

  • 进化逆转操作

**该部分为改善遗传算法的局部搜索能力而新增。**这里进化是指逆转算子的单方向性,即只有经逆转后,适应度值有所提高的才接受下来,否则逆转无效。

最终结果:在这里插入图片描述

初始种群中的一个随机值:
11—>9—>2—>3—>13—>10—>4—>6—>1—>8—>7—>5—>12—>11
总距离:55.9173
在这里插入图片描述
最优解:
9—>10—>1—>2—>13—>3—>4—>5—>6—>11—>7—>12—>8—>9
总距离:29.2446
在这里插入图片描述


(需要学习源码在评论下留言)
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值