下面就举一个遗传算法的具体实例,求Rastrigin函数的最小值。
1.Rastrigin’s 函数
在遗传算法中,经常使用一个函数来测试遗传算法,这个函数就是Rastrigin函数,对于有两个独立变量的
Rastrigin函数,其定义的形式如下:
遗传算法工具箱中提供了一个M文件,就是这个函数的实现,这个文件是rastriginsfcn.m。下面是具有两个独立变量的Rastrigin函数图形。
在图形化表示中,该函数有非常多的局部极小点,而仅仅只有一个全局最小点,这个点就是[0 0],在这个点处的函数的值为0,该函数被用来测试遗传算法的主要原因是,对于传统的基于梯度的算法对付这个具有非常多局部极小点的函数来说,那是十分的困难呀。
下面给出该函数的等高线图
2.寻找Rastrigin函数的最小值
本小节主要讲述如何利用遗传算法来寻找Rastrigin函数的最小值。
2.1在命令行窗口输入optimtool(‘ga’)打开优化工具的图形界面
2.2在 Fitness function 函数区域输入函数句柄@rastriginsfcn
2.3在 Number of variables输入独立变量的个数2
2.4点击“start”按钮,开始算法的运行
当算法运行时,在Current iteration 区域会显示当前迭代的次数,你可以使用Pause,stop按钮,暂停或者
停止算法的运行。当算法运行结束以后,在Run solver and view results 区域会显示运行的结果。
算法运行的最后的结果是:Objective function value: 0.005160573464458196
取得该值时的点是[0.002 0.005]。算法停止的原因是:average change in the fitness value less than options.TolFun.(适应度函数值的平均变化小于TolFun这个参数)。
3、使用命令行的方式来搜索函数的最小值
在命令行中,输入下面的命令:
[x fval exitflag] = ga(@rastriginsfcn, 2)
算法运行的结果如下所示:
Optimization terminated: average change in the fitness value less than options.TolFun.
x =
0.0000 0.0122
fval =
0.0294
exitflag =
1
上面结果各个字段的意义就不过多解释了,相信你能看懂。
4、图形的显示
在图形化操作界面中,有一个 Plot functions 面板,在该面板中可以显示出各种关于遗传算法信息的图形化表示,这些信息能够帮助你调整算法的选型,进而来提高算法运行的效果。例如,可以绘制出每次迭代过程中适应度函数的最优值与平均值,在面板中选择 Best fitness 选项。
当你点击“Start”按钮时,适应度函数的最优值与平均值会在一个图形窗口不断的绘制出,等算法运行结束,绘制的图形如下所示。
在图形中上面蓝色的点表示适应度函数平均值的变化,而下面黑色的点表示了,每次迭代中最佳适应度值的变化。
因为遗传算法中很多地方使用了随机的实现,所以每次运行的结果可能都不太一样,这个属于正常现象,如果你为了这个而大惊小怪,或者怀疑运行结果有问题,那么你应该看看有关遗传算法理论方面的知识。
附注:本文为转载文章
原文出处:http://blog.csdn.net/niuyongjie/article/details/4868878
原作者:niuyongjie