2.3适值函数标定的遗传算法
1) 算法原理
一般情况下,直接讲目标函数作为适应值函数,这样比较个体的优劣十分方便。但是很多情况下不能直接将目标作为适应值函数,例如对于最小值问题,须将目标取反才能作为适值函数,只是最简单的情况。
有时由于目标函数之间的相对差别很小,从而各个个体的选择概率差别很小,此时各个个体选择的几率几乎一样,这将导致遗传算法的选择功能被弱化,此时需要对目标函数进行标定(也就是进行变换),标定的方法有线性标定,动态线性表定,冥绿标定,对数标定。对于最大化问题,动态线性标定的变换公式如下:
上式中F为适应值函数,f为目标函数值, 为第k代个体的最小目标函数值,
为选择压力调节值,它是一个较小的数,它随着k的增大而减小,一般采用如下的设置方法:
其中M,c为常数,c为[0.9,0.999]
2) 算法步骤
a) 随机产生初始种群,个体数目一定,每个个体表示为染色体的基因编码
b) 对目标函数值作变换,计算个体的适应度,并判断是否符合优化准则,若符合,输出最佳个体及其代表的最优解,并结束计算,否则转向c)
c) 依据适应度选择再生个体,适应度的个体被选中的概率高,适应度低得个体可能被淘汰
d) 按照一定的交叉概率和交叉方法,生成新的个体
e) 按照一定的变异概率和变异方法,生成新的个体
f) 由交叉和变异产生新一代的种群,返回b)
3) 算法的matlab实现
在matlab中编程实现的动态线性标定适应值的遗传算法函数为:NormFitGA
功能:用动态线性标定适应值的遗传算法求解一文无约束优化问题。
调用格式:[xv,fv]= NormFitGA(fitness,a,b,NP,NG,ksi0,Pc,Pm,eps)
%fitness:待优化的目标函数
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页