遗传算法:适应度函数: fitnv=rankingobjv ) ) ) ) ) ) ) ) )。
ranking函数分为两个阶段进行操作。
1)按照从小到大的顺序分类个体的目标值ObjV
)2)根据排序后的值,利用计算公式
这里,Position在最初的步骤排序后,从小到大的值的位置属性1,2,3,4…);
上面的等式是线性排序sp=0sp=0表示线性排序,sp=1表示非线性排序) )。
Nind是个体群中个体的数量在个体群中进行多少次,对应于对少的个体),例如
[Chrom,Lind,basev]=CRTBPnind,Lind ) ]
表示要创建大小为Nind*Lind的随机二进制矩阵。 其中Nind是种群的个体数,Lind是个体的长度。
ranking函数计算适应度时,各个体的长度为Lind,该个体生成ObjV,可以根据该ObjV的排序值计算出对应的适应度。
例如; 线性排序和压差为2估算适应度。
ObjV )1 2 3 4 5 10 9 8 7 6
ObjV排序)1 2 3 4 5 6 7 8 9 10
位置标签Position )1 2 3 4 5 10 9 8 7 6
根据与ObjV值对应的位置标签,代入公式进行计算) :
Position是与各ObjV对应的位置编号。
计算12-0-2*1*0/9)=2——–ObjV=1的适应度分配值为2;
计算2-0-2*1/9)=1.7778——ObjV=2的适应度分配值为1.7778;
计算32-0-2*2/9)=1.5556——ObjV=3的适应度分配值为1.5556
计算42-0-2*3/9)=1.3333——ObjV=4的适应度分配值为1.3333
计算52-0-2*4/9)=1.1111——ObjV=5的适应度分配值为1.1111
计算102-0-2*9/9)=0 ——ObjV=10的适应度分配值为0
计算92-0-2*8/9)=0.2222 ——ObjV=9的适应度分配值为0.2222
计算82-0-2*7/9)=0.4444——ObjV=8的适应度分配值为0.4444
计算72-0-2*6/9)=0.6667 ——ObjV=7的适应度分配值为0.6667
计算62-0-2*5/9)=0.8889 ——ObjV=6的适应度分配值为0.8889
可以看出,计算公式本身随着Position的增大而变小。 也就是说,ObjV的值越大,对应的排序坐标越靠后,计算得到的适应度值就越小。
因此,最终的FitnV积累的数据是对应每个ObjV个体的适应度,适应度越大,说明就越好,应该为下一代的遗传保留。 压差为2对应的最佳适应度值为2。
非线性排序公式在《遗传算法工具箱及应用》健忘水壶教科书第76页。