matlab遗传算法2——利用遗传算法求解Rastrigin函数的(全局)最小值

Rastrigin函数经常被用来作为研究智能优化算法时的测试函数。 Rastrigin函数有两个变量,它具有很多的局部最小值,但全局只有一个最小值,所以这个函数由遗传算法来求解全局最小值,可以更好的说明遗传算法是一种全局寻优的优化算法。
一、分析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函数(全局)最小值的代码为:
[x,fval,exitflag,output,population,score]=ga(@rastrigin,nvars,options);
参考文献 周琛琛.基于Matlab遗传算法工具箱的函数优化问题求解[J].现代计算机,2006(12):84-86.
获取代码,后台回复“Rastrigin and GA”或“RGA
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容