为了检验一般免疫进化算法的性能,我们用之求解了下列4例典型的测试函数,有关函数的说明如下。
例5-1 求Schaffer函数的极大值。Schaffer函数表达式如下
其自变量的搜索范围为-10≤x,y≤10。该函数具有许多局部极大值,取值均为0.9903,其最大值为1。
例5-2 求Camel函数的极小值。Camel函数的定义如下
其自变量的搜索范围为-2≤x,y≤2。此函数有6个局部最小点,其中只有(-0.0898,0.7126)和(0.0898,-0.7126)两个为全局最小,其最小值为-1.031628。为了便于计算,对目标函数作如下变换
例5-3 求Rosenbrock函数的极小值。Rosenbrock函数定义如下
其自变量的搜索范围为-10≤x,y≤10。该函数在(1,1)点有全局最小值0,响应曲面上有一条弯曲而狭长的山谷,在山谷中的点的最速下降方向与通向最小点的最好方向垂直。这里把目标函数作如下变换
例5-4 求函数
的极小值。其自变量的搜索范围为-10≤x,y≤10。该函数有几个局部极小点,在原点(0,0)处有全局最小值0。这里把目标函数作如下变换
通过对目标函数变换,测试函数的适应度函数f(·)在搜索区域的最大值均为1,约束条件可通过罚函数来加以处理。下面,应用免疫进化算法对上述4例复杂函数在搜索区域内进行寻优测试。各参数定义如下:群体数量N=200,总进化代数T=300,初始标准差σ0=1.0,对上述4例标准差动态调整系数A分别为1.5、5.0、3.0和3.0。测试结果见图5-3~图5-6(图中的细线为群体中最优个体适应度随t的变化曲线,粗线为群体平均适应度随t的变化曲线)[54]。
计算结果表明,尽管测试函数各异,免疫进化算法能以很快的速度找到全局最优解,而相同函数的遗传算法测试则多陷入局部最优解[159];免疫进化算法是通过最优个体的进化来带动群体以实现向全局最优解的收敛;在一定的进化代数内,标准差动态调整系数是影响算免疫进化算法性能最重要的参数。
总之,免疫进化算法是在遗传算法基础上发展起来的一种性能更为优良的算法,其特点包括:
(1)免疫进化算法是一种在概率规则引导下的有指导的全局优化算法。它在以最优个体为中心加强局部搜索的同时,也兼顾此中心附近以外解空间的搜索。
图5-3 例5-1寻优测试结果
图5-4 例5-2寻优测试结果
图5-5 例5-3寻优测试结果(www.xing528.com)
图5-6 例5-4寻优测试结果
(2)通过对标准差在进化过程中按一定规律进行动态调整,较好地解决算法中的群体多样性和选择力度两者之间的矛盾,从而有效地克服了不成熟收敛。
(3)该算法收敛到全局最优解是建立在最优个体进化的基础上,群体只是起搜索引擎的作用,这种进化方式有利于减小随机因素的影响,提高算法的稳定性。
(4)该算法参数设置简便,较少地依赖人的经验,这有利于建立统一的数学模型。
(5)该算法能有效地解决复杂的非线性优化问题,有着广阔的应用前景。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。