遗传算法解决TSP问题举例
一、算法实现步骤
1、初始化
初始化数据:读入数据源,将坐标转换为距离矩阵(标准化欧式距离)
初始化对象:种群规模m、运行代数n、变异概率
初始化种群:生成m条路径(编码方式:符号编码)
说明:种群初始化的编码方式有多种,常见的有二进制编码、格雷码编码、实数编码和符号编码。编码方式具有启发性,缺乏理论基础来判断各种编码的好坏,常根据实际问题和经验来确定,本算法采用符号编码。
2、计算种群适应度
适应度函数f=1/〖distance(x)〗^15
说明:适应度函数会影响选择压,选择压过大,会造成几个较好的可行解迅速占满整个群体,选择压过小,会让算法变成纯粹的随机行为。本算法对适应度函数进行15次方的尺度变换,就是为了避免选择压太小,轮盘赌的选择失去意义变成等概率随机选择
3、计算累计概率
计算每个个体适应度占适应度总和的比例并计算累计概率
4、迭代
1、选择算子:运用轮盘赌选择法,与传统轮盘赌选择法不同的是,本算法不选择重复个体充当父母,即如果选择出来的个体已经被选过一次,下一次再选到它就直接抛弃。这样最后选出来的个体数量m1<=m。
2、交叉算子:从轮盘赌选择出来的父母中随机选择两个不同个体充当父母,随机产生两个变异位置,交换两个交叉点之间基因形成两个新的子代放入种群中,直到种群数量恢复到初始种群数目m
3、变异运算:对种群中的每一个个体来说,产生一个随机数,若该随机数小于变异概率即产生变异。变异的方法是在染色体上产生两个变异点,将变异点间的基因片段倒序即完成变异。
4、更新最优解。
5、将新种群复制到旧种群中,准备下一代进化(迭代)
5、实验数据
第一列为地点名称,第二,三列为地点的经纬度
地点名称
ps:程序具有泛化性,将这两个文件里的内容修改即可得到不同地方的旅游路径规划
6、初始设定
先根据经验值(种群大小:20 ~ 100,迭代次数:500,变异概率:0.0001~0.1)对初始化参数进行设定取种群大小100,迭代次数500,变异概率0.1,选择51个城市,设置方案数量为1,运行20次
7、调参
调整参数,观察实验结果随参数的变化,通过反复尝试获得51个城市路径近似最优解
根据实验规划得到的