使用遗传算法解决TSP问题

1 篇文章 0 订阅
1 篇文章 0 订阅

遗传算法顾名思义就是模拟生物界的自然选择原理,比如对于TSP问题,遗传算法大体上是可以先随机生成一组大量的解空间,作为一个初始的种群,然后按照一定的策略让种群自由交叉(也就是传说中的交配),变异。按照一定的策略淘汰种群中不符合预期目的的个体。

       目前大多数遗传算法使用的是根据随机生成的概率与给定的交叉,变异概率相比来决定是否交叉,变异,但是笔者觉得这种算法虽然更符合自然界的随机交配原则,但是对于解决TSP问题比较盲目,有时候可能走过多弯路。

       本文采用的方法是一种修改的遗传算法,具体如下:

        1、随机生成一个初始种群

        2、计算种群中每个个体的代价,在TSP中也就是路径和。选出最小的两组路径AB,和代价最大的路径CD。

        3、AB交叉,产生两个子代EF,大多数情况下EF的代价肯定是小于CD的(ps:帅哥和美女生出的儿子肯定很帅嘛)

              用EF替代CD,这样就把种群中两个比较差的个体淘汰掉了。

        4、变异这一步,还是使用全部变异的好,有利于种群的进化。对于每个个体随机个概率和给定的概率比较来决定是否变异。

        5、计算种群中代价最大的和最小的路径差,如果路径差值小于10的话说明种群已经趋于稳定,跳转6,,否则跳转2,继续交叉变异,进化

        6、现在种群的代价已经趋于稳定了,算是可以结束了。代价最小的路径即为TSP的最优解。

        完

       此算法虽然和正统教材上的算法不一样,但是个人觉得这样效率更高些。如有疏漏还请指正。

        由于代码比较长,就不贴了,在此可下载http://download.csdn.net/detail/z598751848/4308735

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值