算法得到改进,反而大大增加了计算的开销20个城市TSP问题,可以选择小规模的种群(例如50),种群初始化时,先产生1,2,,20的一条规则路径,然后用Collectio
sshuffle将他们打乱顺序,保证这条路径变成了一条随机的路径,这样产生了一个个体;同样地产生种群里其它的个体323适应度函数适应度表明个体或解的优劣性10,不同的问题,适应度函数的定义
5
f方式也不同,若设K1、K2K20为一个采用整数编码的染色体,适应度函数为恰好走遍20个城市,在回到出发城市的总距离的倒数。优化的目标就是选择适应度函数值尽可能大的染色体,适应度函数值越大的染色体越优质,反之越劣质。求得种群中所有个体的适应值后,将适应值最大的个体保存起来,到演化完毕时,这个个体就是最后要求的最优解。324选择操作选择操作的目的是为了从当前群体中以一定的概率选择优良个体到新群体中,将选择算子作用于群体,从而使优化的个体有机会直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代;个体被选中的概率与适应度值有关,适应度值越大,被选中的概率也就越大,而适应度值越大的染色体越优质。本案例中是先产生一个淘汰组,然后随机挑选若干个体加入淘汰组,在淘汰组中直接选择适应值最大的个体。325交叉操作交叉操作是遗传算法中最主要的遗传操作,通过交叉操作可以得到新一代个体,新个体结合了其父辈个体的特性,交叉体现了信息交换的思想。利用不同映射杂交,确定交叉操作的父代,将父代样本两两分组,每组重复以下过程:Pare
ts
6
f先随机的选取Pare
t1的一部分,然后安装Pare
t2对应位置中,Pare
t2中的其他部分顺序不变,遗传下去Chlid
这个交叉过程保证了城市的唯一性,避免了冲突。326变异操作变异可以看作是外界对种群的影响。变异是为了引入新的因素,希望个体在外界的作用下,能够实现自我优化,生好的基因。将变异算子作用于群体,即是对群体中的个体串的某些基因位置上的基因值作变动。变异算子采用了简单的倒序变换,以20城市为例,随机的产生两个小于20的整数,对某个个体进行分割,假设随机产生的两个整数位3和8,将分割段倒序并放回原来的位置即可,如下数组所示:
由于这种变异算子仍能保持个体中的路径片段,即倒序前后这个切割段的路径是一样的,只是两端点与整个路径的连接颠倒了,这使得变异不是漫无边际,而是有所取舍的。这种简单反序可以保证后代仍然是一条合法途径。33实验结果分析
7
f初始种群r