遗传算法适应度函数的计算原理

本文详细介绍了遗传算法中的适应度函数,特别是Ranking函数的计算过程。通过线性排序和压差为2的例子,展示了如何根据目标值ObjV计算适应度,并解释了为何适应度值越大,表示个体越优秀,应被选中进入下一代遗传。同时提到了非线性排序的适应度计算公式,加深了对遗传算法中选择策略的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遗传算法:

适应度函数: FitnV=ranking(ObjV)

ranking函数分两步操作:

(1)对个体的目标值ObjV进行由小到大的排序

(2)按照排序的值,利用计算公式

FitnV(Position))=2-sp+2*(sp-1)*\frac{Position-1}{Nind-1}

其中: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的排序值可以计算出一个对应的适应度。

例如说:ObjV=[1,2,3,4,5,10,9,8,7,6]^T;使用线性排序和压差为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对应的位置编号。

 计算1                     2-0-2*1*(0/9)=2--------ObjV=1的适应度分配值为2;

 计算2                     2-0-2*(1/9)=1.7778 ------ ObjV=2的适应度分配值为1.7778;

 计算3                     2-0-2*(2/9)=1.5556 ------ ObjV=3的适应度分配值为1.5556

 计算4                     2-0-2*(3/9)=1.3333 ------ ObjV=4的适应度分配值为1.3333

 计算5                     2-0-2*(4/9)=1.1111 ------ ObjV=5的适应度分配值为1.1111

 计算10                   2-0-2*(9/9)=0          ------ ObjV=10的适应度分配值为0

 计算9                     2-0-2*(8/9)=0.2222 ------ ObjV=9的适应度分配值为0.2222

 计算8                     2-0-2*(7/9)=0.4444 ------ ObjV=8的适应度分配值为0.4444

 计算7                     2-0-2*(6/9)=0.6667 ------ ObjV=7的适应度分配值为0.6667

 计算6                     2-0-2*(5/9)=0.8889 ------ ObjV=6的适应度分配值为0.8889            

可以看到,计算公式本身是随着Position的增大而减小的,也就是说,是ObjV的值越大,对应的排序坐标越靠后,计算得到的适应度值越小。

所以,最终FitnV中存储的数据为:每一个ObjV个体对应的适应度,适应度越大,说明越好,应该被保留进行下一代遗传。压差为2对应了最好的适应度值为2.

非线性排序的公式,在《遗传算法工具箱及应用》雷英杰  课本第76页。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值