目录
一.引言
遗传算法喝蚁群算法都是时效的最优化搜索算法,在解决诸如TSP这类组合优化问题时,它们各有所长。
本文使用MATLAB先来分析遗传算法自身的参数影响,再进一步对比分析两种算法解决TSP问题的性能。
二.遗传算法基本原理和TSP求解
遗传算法由美国J.Holland教授提出。
其主要特点:群体搜索策略
群体中个体间的信息交换
搜索不依赖于梯度信息。
遗传算法的三个主要操作算子:选择算子
交叉算子
变异算子
遗传算法包含的五个要素:
1.对参数进行编码
2.设定初始种群大小
3.适应度函数设计
4.遗传操作设计
5.控制参数设定(包括种群大小,最大进化代数,交叉概率,变异概率等。)
遗传算法求解TSP问题最重要的地方:
交叉操作时,城市交换的方法。
交叉前:
交叉后:
由图可见会出现城市冲突现象
解决办法:
将染色体A冲突基因8改为染色体B对应位置的5
以此类推来消除冲突
得到结果:
关于遗传算法的其他详细原理可以参考上篇文章遗传算法
三.遗传算法自身参数分析
3.1 城市个数的讨论
城市个数的参数讨论,是建立在城市个数不同(个数保持一定时,数据集保持一致)的情况下,各运行10次,比较最优解和最差解的差值,再自己估计一下10次的平均值,来看在当前城市个数下该算法的性能。以讨论出遗传算法适合更优的解题城市区间。
最优值和最差值的差值越小,说明算法性能越好。
其他参数设置(保持不变)
种群数量:100
迭代次数:500
交叉概率:0.8
变异概率:0.05
各运行10次
1.城市个数为10:
最优解:
最差解:
平均值: 8.72e+00
最优与最差差值: 约0.25e+00
2.城市个数为30:
最优解:
最差解:
平均值: 2.23e+01