本节给出一个例子,说明如何找到Rastrigin函数的最小值,该函数经常用于测试遗传算法。
对于两个自变量,定义拉斯特里金函数为
全局优化工具箱软件包含rastriginsfcn.m
文件,该文件计算Rastrigin函数的值。下图显示了Rastrigin函数的曲线图。
如图所示,拉斯特里金的函数有许多局部极小值——图中的“谷”。然而,函数只有一个全局最小值,它发生在点[0 0]x-y平面,如图中的垂直线所示,函数值为0。在除[0 0]以外的任何局部最小值处,Rastrigin函数的值都大于0。局部最小值离原点越远,函数在该点的值就越大。
Rastrigin函数经常被用来测试遗传算法,因为它有许多局部极小值,使得标准的、基于梯度的方法很难找到全局极小值。
下面的Rastrigin函数等高线图显示了交替的最大值和最小值。
本节介绍如何使用遗传算法找到Rastrigin函数的最小值。
由于遗传算法使用随机数生成器,每次运行算法返回的结果略有不同。
要找到最小值,请执行以下步骤:
进入optimtool (ga)
在命令行中打开优化应用程序。
在优化应用程序中输入以下内容:
在适应度函数字段中,输入@rastriginsfcn
.
在变量数字段中,输入2.
,Rastrigin函数的自变量数。
这个适应度函数和变量数字段显示如下图所示。
单击开始按钮运行解算器并查看结果窗格,如下图所示。
当算法运行时当前迭代字段显示当前一代的编号。您可以通过单击暂停按钮执行此操作时,按钮名称将更改为的简历.若要从暂停的点恢复算法,请单击的简历.
当算法完成时运行解算器并查看结果窗格出现,如下图所示。您的数值结果可能与图中的不同,因为ga
这是随机的。
显示说明:
要从命令行中找到Rastrigin函数的最小值,输入
Rng (1,'twister') % for再现性[x,fval,exitflag] = ga(@rastriginsfcn,2)
这是回报
优化终止:适应值的平均变化小于options.FunctionTolerance。x=-1.0421-1.0018 fval=2.4385 exitflag=1
x
是算法返回的最后一个点。
未来值
是终点处的适应度函数值。
出口滞后
是与算法终止原因对应的整数值。
由于遗传算法使用随机数生成器,每次运行算法返回的结果略有不同。
优化应用程序绘图函数窗格使您能够显示在遗传算法运行时提供有关遗传算法信息的各种绘图。此信息可以帮助您更改选项以提高算法的性能。例如,要在每一代绘制适应度函数的最佳值和平均值,请选择旁边的框最佳健身,如下图所示。
当你点击开始,优化应用程序将显示每一代适应度函数的最佳值和平均值。
试试这个最小化Rastrigin函数:
当算法停止时,绘图显示如下图所示。
曲线图底部的点表示最佳适应值,而其上方的点表示每代适应值的平均值。曲线图顶部还以数字形式显示当前代的最佳和平均值。
要更好地了解最佳适应度值正在减少多少,可以更改Y-将绘图中的轴调整为对数比例。为此,,
挑选轴特性从编辑菜单,以打开附着到地物窗口的特性编辑器,如下所示。
单击Y轴标签。
在Y规模窗格中,选择日志.
现在显示的绘图如下图所示。
通常,当个体距离最佳值较远时,最佳适应值在早期世代迅速提高。最佳适应度值在后代中提高得更慢,因为后代的种群更接近最佳点。
当显示多个绘图时,可以在单独的窗口中打开更大版本的绘图。右击(Ctrl键-点击查找macOS)在情节的空白区域,而ga
正在运行或停止后,选择唯一的菜单项。
绘图选项描述可以创建的绘图类型。