1、求解TSP问题,遗传算法实现组合优化,遗传算法基本流程,用于解决TSP问题的遗传算法的设计与实现,基于路径的编码方法,个体采用以遍历城市的次序进行编码, 每一个体Pi 的码串形如C1 , C2 , , Cn ,其中Ci为1-N的整数,表示遍历城市的编号,程序中染色体基因为一维整型数组。,生成初始群体,随机生成初始100个个体.随机对部分个体的边进行局部优化.,适应度函数,对于TSP问题,个体所表示的路径越短,则其适应度越高。可采用如下适应度函数:f(xi)=1/Distance(xi) 其中,xi 为某个体,Distance(xi)返回个体xi所表示的路径长度。,交叉方法,采用两种不同的交叉方
2、法并对比其性能。第一种:顺序交叉法第二种:贪婪交叉法,顺序交叉法,O1(x x x |4 5 6 7| x x),P2(4 5 2 |1 8 7 6| 9 3),O2(x x x |1 8 7 6| x x),P1: 8 9 1 2 3 4 5 6 7,P2: 9 3 4 5 2 1 8 7 6,P2”: 9 3 2 1 8,O1(2 1 8 |4 5 6 7| 9 3),P1(1 2 3 |4 5 6 7| 8 9),P1”: 9 2 3 4 5,O2(3 4 5 |1 8 7 6| 9 2),删除1 8 7 6,删除4 5 6 7,开始的城市排列顺序,保存中间段,取从第二个交叉点,贪婪交叉
3、法实现步骤,选择,采用两种选择方法并对比其性能第一种:轮盘赌选择法第二种;锦标赛选择法,变异,随机变异:在染色体上随机选择两个点,将上面的值进行交换。重复执行5-8次。,两种交叉方法的比较,在选择方法相同的情况(采用轮盘赌选择)下比较两种不同的交叉方法。程序各执行一百次。,顺序交叉方法,最好路径长度:10467.83494最差路径长度:17167.67581平均值:13698.60487标准方差:1307.92482,贪婪交叉方法,最好路径长度:8377.11324最差路径长度:9210.99965平均值:8936.11996标准方差:151.87609,两种交叉方法最优个体路径长度分布对比,
4、贪婪交叉法,顺序交叉法,顺序交叉得到的个体其路径明显比贪婪交叉得到的要长.原因: 顺序交叉考虑的是城市的位置和顺序,未考虑城市间的连接. 贪婪交叉法不仅考虑到城市的位置,而且能够考虑到城市间边的关系.,两种选择方法的比较,在采用相同的交叉操作的基础上对轮盘赌选择和锦标赛选择法进行性能比较。两种方法下程序各运行一百次,锦标赛选择,最好结果:8837.6656最差结果:10943.1624平均值:9768.85063标准方差:407.72545平均8.475代收敛,贪婪交叉方法,最好结果:8377.11324最差结果:9210.99965平均值:8936.11996标准方差:151.87609平均130.74代收敛,两种选择法最优个体路径长度分布,轮盘赌选择,锦标赛选择,两种选择方法收敛代数分布,锦标赛选择比轮盘赌选择收敛速度要快得多.前者比后者得到的个体路径长度相对要长一些.原因: 锦标赛选择过程中,其多样化损失比较大,因而容易造成过早收敛。,参数控制测试,1.测试不同Pc与Pm组合所能得到的最优值.2.取特定的Pc与Pm,使遗传程序执行500次,统计所能达到的最优值的次数.,其它问题,采用贪婪交叉法比顺序交叉能得到更优的解.但只是近似最优,仍然不能达到最优解.,Thank You!,