标签:函数 ObjV 值为 适应度 计算 ------ 遗传算法 排序
遗传算法:
适应度函数: 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对应的位置编号。
计算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页。
标签:函数,ObjV,值为,适应度,计算,------,遗传算法,排序 来源: https://blog.csdn.net/qq_38848233/article/details/120956201
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。