遗传算法在TSP问题上的应用matlab仿真实现

最近在做一个遗传算法应用的课程大作业,在网上找了一些TSP的算法,结合别人的算法进行更改和优化了下,得到了最终的仿真结果,感谢前人栽的树。

 

遗传算法在TSP问题上的应用

本文采用遗传算法来求解TSP问题,将中国的35个省会级城市作为研究对象,设置西安为起点,历经其余34座城市后,最后回到西安的一条最短路径。

一、设计过程

1、适应度函数设计:

TSP的目标是路径总长度为最短,在进行选择时更具适应度值越大则被遗传到下一代的概率越大,适应度值与路径总距离呈反比关系,因此路径总长度的倒数就可以为TSP的适应度函数:

  

2、序表达式编码

序表达式是TSP问题的最自然的表达,其中城市是按访问的顺序排列的。例如,对于9个城市的TSP:3-2-5-4-7-1-6-9-8-3可简单表示为向量[3254716983],表示从城市3出发依次经过2,5,4,7,1,6,9,8然后返回城市3的一条路径。

3、联赛选择算子设计

联赛选择是基于个体适应度之间大小关系的选择方法,一般为两两比较,不需要满足f(x)>0,具体步骤为将群体中随机选N个个体进行适应度值大小比较,将大的个体遗传,将上述过程重复M次就可以得到M个个体。在本次设计中,随机从父代种群中选择4个路径个体,进行适应度值比较,将适应度最大的个体遗传到下一代,种群规模为200,则重复该选择步骤200次,得到新一代种群。

4、顺序交叉算子设计

顺序交叉(OX):从父代A随机选择一个编码子串片段,放到子代A的对应位置,子代A空余的位置从父代B中按照B的顺序选取(与已有的编码不重复)。同理可得子代B。设置父代A=872|139|0546,父代B=983|567|1420。交叉过程:对于父代A,选择139进行遗传到下一代,其余部分从父代B中按照期序随机选取,从父代B中选择的元素不能和1、3、9散字相同,依次放到子代的对应位置,得到下一代A1,子代B1的求解过程同上,求解过程如下。

                                

5、两点对换变异算子设计(Mutation)

在本文中采用两点对换变异算子对种群进行变异操作,由于TSP问题的约束为路径中每个城市只能遍历一次,因此不能采用遗传算法常用的基于二进制编码的变异操作,不能由简单的变量进行翻转来实现变异。两点对换变异算子为在TSP问题中的个体编码是一系列城市的序列,随机在这个城市序列中抽取两个城市,然后交换他们的位置,这样就实现了个体的变异操作。


二、仿真结果如下:

  • 26
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 95
    评论
评论 95
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值