1
模式识别与智能计算的MATLAB实现
1.11.2.2 9.2.2 适应度函数
9.2.2 适应度函数

在用遗传算法寻优之前,首先要根据实际问题确定适应度函数,即要明确目标。各个个体适应度值的大小决定了它们是继续繁衍还是消亡,以及能够繁衍的规模。它相当于自然界中各生物对环境的适应能力的大小,充分体现了自然界适者生存的自然选择规律。

与数学中的优化问题不同的是,适应度函数求取的是极大值,而不是极小值,并且适应度函数具有非负性。

对于整个遗传算法影响最大的是编码和适应度函数的设计。好的适应度函数能够指导算法从非最优的个体进化到最优个体,并且能够用来解决一些遗传算法中的问题,如过早收敛与过慢结束。

过早收敛是指算法在没有得到全局最优解之前,就已稳定在某个局部解。其原因是某些个体的适应度值大大高于个体适应度的均值,在得到全局最优解之前,它们就有可能被大量复制而占群体的大多数,从而使算法过早收敛到局部最优解,失去了找到全局最优解的机会。解决的方法是,压缩适应度的范围,防止过于适应的个体过早地在整个群体中占据统治地位。

过慢结束是指在迭代许多代后,整个种群已经大部分收敛,但是还没有得到稳定的全局最优解。其原因是整个种群的平均适应度值较高,而且最优个体的适应度值与全体适应度均值间的差异不大,使得种群进化的动力不足。解决的方法是,扩大适应度函数值的范围,拉大最优个体适应度值与群体适应度均值的距离。

通常适应度是费用、盈利、方差等目标的表达式。在实际问题中,有时希望适应度越大越好,有时要求适应度越小越好。但在遗传算法中,一般是按最大值处理,而且不允许适应度小于零。

对于有约束条件的极值,其适应度可用罚函数方法处理。

例如,原来的极值问题为

maxg(x)

s. t.  hi(x)≤0,i=1,2,…,n

可转化为

alt

其中,γ为惩罚系数;Φ为惩罚函数,通常可采用平方形式,即

alt