主要内容

最小化Rastrigin的功能

Rastrigin的功能

这个例子展示了如何找到Rastrigin函数的最小值,这个函数经常用于测试遗传算法。这个例子提供了两种最小化的方法:使用优化活动编辑器任务和工作在命令行。

对于两个自变量,定义拉斯特里金函数为

R 一个 年代 x 20. + x 1 2 + x 2 2 10 因为 2 π x 1 + 因为 2 π x 2

全局优化工具箱包含了rastriginsfcn.m文件,它计算拉斯特里金函数的值。下图是拉斯特里金函数的示意图。

如图所示,拉斯特里金的函数有许多局部极小值——图中的“谷”。然而,函数只有一个全局最小值,它发生在点[0 0]x - y平面,如图中的垂直线所示,函数值为0。在除[0 0]以外的任何局部最小值处,Rastrigin函数的值都大于0。局部最小值离原点越远,函数在该点的值就越大。

Rastrigin函数经常被用来测试遗传算法,因为它有许多局部极小值,使得标准的、基于梯度的方法很难找到全局极小值。

下面的拉斯特里金函数的等高线图显示了交替的最大值和最小值。

尽量减少使用优化住编辑任务

本节介绍了如何使用遗传算法求Rastrigin函数的最小值。

请注意

因为遗传算法使用随机数生成器,所以每次运行算法都会返回不同的结果。

  1. 单击。创建一个新的活动脚本新的生活的脚本按钮文件上节首页选项卡。

    新增实时脚本按钮

  2. 插入一个优化住编辑任务。单击插入然后,在代码部分中,选择任务>优化

    选择优化实时编辑器任务

    优化Live Editor任务

  3. 用于输入问题数据,通过单击节休息按钮插入选项卡。新的部分出现在任务的上面和下面。

  4. 在任务上面的新部分中,输入以下代码来定义变量和目标函数的数量。

    据nvar = 2;有趣= @rastriginsfcn;
  5. 要将这些变量放置到工作区中,请按下运行该部分按Ctrl + Enter

  6. 指定的问题类型部分,单击目标>非线性按钮

  7. 选择求解器> ga -遗传算法

  8. 选择问题数据部分的任务,选择目标函数>函数句柄然后选择有趣的

  9. 选择变量> nvar

    求解器、目标函数和指定的变量数

  10. 显示进度部分,选择最好的健身情节。

  11. 要运行求解器,请单击选项按钮在任务窗口的右上方,然后选择运行部分.绘图显示在单独的图形窗口和任务输出区域中。请注意,您的情节可能与所示的不同,因为遗传算法是一种随机算法。

    最佳适合度和平均适合度在近60代中下降。

    图底部的点表示最佳适应度值,图上方的点表示每一代适应度值的平均值。图的顶部显示了当前代的最佳值和平均值。

  12. 要看解和适应度函数值,看任务的顶部。

    使用ga求解器最小化rastriginsfcn

  13. 要查看这些变量的值,请在任务下面的部分中输入以下代码。

    disp(解决方案)disp (objectiveValue)
  14. 按下按钮使型材运行按Ctrl + Enter

    disp(解决方案)
    0.9785 - 0.9443
    disp (objectiveValue)
    2.5463

    你们的价值观不同是因为遗传算法是一种随机算法。

图中显示的值并不是非常接近Rastrigin函数的实际最小值,即0.的话题设置初始范围设置突变的数量,设置“最大代数”和“Stall代数”描述实现更接近实际最小值结果的方法。或者,您可以简单地重新运行求解器以获得更好的结果。

在命令行最小化

要在命令行中找到Rastrigin函数的最小值,请输入以下代码。

rng默认的%的再现性选择= optimoptions (“遗传算法”“PlotFcn”“gaplotbestf”);(解决方案,objectiveValue) = ga (@rastriginsfcn 2...[],[],[],[],[],[],[], 选项)

最佳适合度和平均适合度在近60代中下降

优化终止:适应度值的平均变化小于选项。0.9785 0.9443 objectiveValue = 2.5463

图底部的点表示最佳适应度值,图上方的点表示每一代适应度值的平均值。图的顶部显示了当前代的最佳值和平均值。

这两个优化Live Editor任务和命令行允许您制定和解决问题,它们给出相同的结果。命令行更加精简,但在选择求解器、设置问题和选择绘图函数等选项方面提供的帮助较少。你也可以开始使用一个问题优化,然后生成命令行使用的代码,如求解一个约束非线性问题,基于求解器

相关的话题