主要内容

使用GPS算法进行优化

此示例演示如何使用GPS算法解决优化问题,该算法是patternsearch解算器。该示例使用优化Live Editor任务,使用可视化方法完成优化。

目标函数

这个例子使用了目标函数ps_example,在运行此示例时包含它。查看函数的代码。

类型ps_example
函数f = ps_example(x) % ps_example模式搜索的目标函数。f = 0 (1,size(x,1));我= 1:尺寸(x, 1)如果x(我,1)< 5 f (i) = (x(我,1)+ 5)^ 2 + abs (x(我,2));elseif x (1) < 3 f (i) = 2 * sin (x(我,1))+ abs (x(我,2));elseif x (1) < 0 f (i) = 0.5 * x(我,1)+ 2 + abs (x(我,2));elseif x (1) > = 0 f (i) = 3 * sqrt (x(我,1))+ 5/2 + abs (x(我,2));结束结束

绘制函数。

fsurf (@ (x, y)重塑(ps_example ([x (:), y(:))),大小(x)),...[-6 2 -4 4],“线型”“没有”“MeshDensity”, 300) colormap“喷气机”视图(-26年,43)包含(“x”(1)) ylabel (“x”(2))标题(' ps \ _example (x)的

图中包含一个axes对象。标题为p s _ e x a m p le (x)的axis对象包含一个类型为functionsurface的对象。

求函数的最小值

求最小值ps_example使用优化Live Editor任务,完成以下步骤。

  • 方法创建一个新的实时脚本新的生活的脚本按钮文件上节首页选项卡。

new_live_script.png

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

optimizelet_insert.png

optimizelet_choose.png

  • 单击Solver-based的任务。

optimizelet_initial.png

  • 方法插入一个新部分,以用于输入问题数据节休息按钮插入选项卡。新的部分出现在任务的上面和下面。

  • 在任务上面的新部分中,输入以下代码来定义初始点和目标函数。

X0 = [2.1 1.7];有趣= @ps_example;
  • 要将这些变量放置到工作空间中,请按下运行该节按Ctrl + Enter

  • 指定的问题类型部分的任务,单击目标>非光滑按钮。

  • 确保所选求解器是patternsearch

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

  • 选择初始点(x0) > x0

  • 显示进度部分的任务,选择最好的价值而且筛孔尺寸情节。

optimizelet_patternsearch_setup.png

  • 要运行求解器,请单击options按钮在任务窗口的右上角,并选择运行部分.这些图显示在单独的图形窗口和任务输出区域中。

ps_history.png

上图为每次迭代时最佳点的目标函数值。通常,目标函数值在早期迭代中迅速提高,然后在接近最优值时趋于平稳。

下面的图显示了每次迭代的网格大小。每次迭代成功后网格尺寸增大,每次迭代失败后网格尺寸减小。有关详细信息,请参见模式搜索轮询如何工作

方法定义的网格尺寸公差值小于网格尺寸公差值,因此优化停止MeshTolerance选择。函数的最小值大约是-2。

要查看解决方案和目标函数值,请查看任务顶部。

optimizelet_ps_solution.png

优化Task将变量解决方案而且objectiveValue在工作区中。通过在任务下方放置一个新部分来查看这些值,并包含此代码。

disp(解决方案)disp (objectiveValue)

按下键运行该部分按Ctrl + Enter

接下来,优化实时编辑器任务将出现在其最终状态中。

生活任务
优化终止:网格尺寸小于options.MeshTolerance。

{

disp(解决方案)
-4.7124 - -0.0000
disp (objectiveValue)
-2.0000

另请参阅

|

相关的话题

Baidu
map