一、分析Rastrigin函数
Rastrigin函数的函数形式为: 为了更好地理解上述表达式,这样的函数形式到底描绘怎样的图像,以及是否可以通过绘制图形来大概判断出Rastrigin函数全局最小值的位置或大致范围。 为此先编写代码绘制出Rastrigin函数三维图形如图1所示,从图中可以看出Rastrigin函数确实存在众多的局部最小值,同时可以看到图形从边缘向中心收缩(沿x轴和y轴),所以初步判断全局最小值的位置应该位于中心位置。
图1
绘制Rastrigin函数图像的代码为:surf(X1,X2,z,'EdgeColor','none','FaceColor','interp')
为了验证上面的推断,所以进一步绘制该函数二维等高线图如图2所示,在图中分别从x轴和y轴的正负方向观察,可以得到和前面相同的分析结果,所以此时确定Rastrigin函数全局最小值的位置位于(0,0)。 图2
绘制Rastrigin函数等高线的代码为:contour(X1,X2,z)
二、利用遗传算法寻找Rastrigin函数的(全局)最小值 前文中通过对Rastrigin函数图形的分析,得到此函数的全局最小值位于 (0,0),那么遗传算法作为全局寻优算法得到的结果又如何呢? 因此,利用MATLAB中optimtool工具箱中的遗传算法来求解Rastrigin函数的(全局)最小值,如图3所示为求解过程中拟合结果、变量变化等参数图形。 optimtool工具箱调用遗传算法的代码为: options = optimoptions('ga');
调用遗传算法求解Rastrigin函数(全局)最小值的代码为: [ ]=ga(@rastrigin,nvars,options);
参考文献 周琛琛.基于Matlab遗传算法工具箱的函数优化问题求解[J].现代计算机,2006(12):84-86. 获取代码,后台回复“Rastrigin and GA”或“RGA”