首页 > 编程知识 正文

基因遗传算法中,利用适应度函数,遗传算法自适应函数

时间:2023-05-03 13:34:25 阅读:177484 作者:854

遗传算法:适应度函数: fitnv=ranking(objv ) ) ) ) ) ) ) ) )。

ranking函数分为两个阶段进行操作。

(1)按照从小到大的顺序分类个体的目标值ObjV

)2)根据排序后的值,利用计算公式

这里,Position在最初的步骤排序后,从小到大的值的位置属性(1,2,3,4…);

上面的等式是线性排序(sp=0(sp=0表示线性排序,sp=1表示非线性排序) )。

Nind是个体群中个体的数量(在个体群中进行多少次,对应于对少的个体),例如

[Chrom,Lind,basev]=CRTBP(nind,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页。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。