您的位置:首页 > 其它

用遗传算法求解TSP问题

2012-05-20 21:12 525 查看
最近在做人工智能的课设,碰到一个与TSP类似的问题,今天尝试了一下用遗传算法求解TSP,下面是我碰到的问题以及我的一些想法:

1.如何对个体进行编码?

TSP问题的实质是求一个最短的哈密顿回路,如果将城市标号为0,1,2...n-1,那么TSP的一个解就是一个圆排列,等价于一个规定了起点的排列,所以容易想到可以用顺序编码方式,即用一个数组保存旅游顺序。

2.如何快速初始化种群?

根据上述编码方式,种群初始化就是产生一系列随机排列,c++有一个函数rand_shuffle(V.begin(),V.end())可以打乱一个排列,用这个可以实现种群的快速初始化。

3.如何交叉?

这个问题可以说是遗传算法求TSP的关键,也是难点所在,在这里,交叉形式上就是由两个排列产生两个新的排列,但是要保持原来的排列的优越性。目前用的比较多的是顺序交叉法。

4.变异算子

求TSP时,变异算子采用比较多的是交换2个站点的旅游顺序。变异的目的是增加种群的多样性,我有一个想法,就是将一个排列变成它的互补排列,例如将1 4 2 3变成4 1 3 2,这样应该也满足增加多样性的要求,可以试一试。

暂时就写这么多吧,若有错的地方或者大家有更好的想法,还望不吝指教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: