主要内容

自定义绘制函数

关于自定义Plot函数

使用一个patternsearch除了软件中包含的函数外,您还可以编写自己的自定义Plot函数,在模式搜索的每次迭代中调用该函数来创建Plot。这个例子展示了如何创建一个绘图函数,该函数显示从上一个迭代到当前迭代的最佳目标函数值的对数变化。更多plot功能详情,请浏览绘图选项

创建自定义Plot函数

要为本例创建plot函数,请将以下代码复制并粘贴到MATLAB中的一个新函数文件中®编辑器:

函数Stop = psplotchange(optimvalues, flag)绘制最佳目标函数的变化%的值。%前一次迭代的最佳目标函数值持续的Last_best stop = false;如果(比较字符串(国旗,“init”甘氨胆酸)集(,“Yscale”“日志”);设置好情节持有;包含(“迭代”);ylabel (“记录价值变化”);标题([“最佳函数值的变化”]);结束%当前迭代中最佳目标函数值最好= min (optimvalues.fval);将last_best设置为best如果optimvalues.iteration== 0 last_best = best;其他的%目标函数值的变化Change = last_best - best;情节(optimvalues。迭代,改变,“r”);结束

将文件保存为psplotchange.m在MATLAB路径下的文件夹中。代码解释在Plot函数是如何工作的

设定问题

问题是一样的使用模式搜索和优化实时编辑器任务的约束最小化.设置问题:

  1. 在MATLAB命令行中输入以下命令:

    X0 = [2 1 0 9 1 0];Aineq = [-8 7 3 -4 9 0];bineq = 7;Aeq = [7 1 8 3 3 3;5 0 -5 1 -5 8;-2 -6 7 1 1 9;1 -1 2 -2 3 -3];Beq = [84 62 65 1];H = [36 17 19 12 8 15;17 33 18 11 7 14; 19 18 43 13 8 16; 12 11 13 18 6 11; 8 7 8 6 9 8; 15 14 16 11 8 29]; f = [ 20 15 21 18 29 24 ]'; F = @(x)0.5*x'*H*x + f'*x;
  2. 因为这是一个线性约束问题,设PollMethod选项“GSSPositiveBasis2N”.包括@psplotbestf内置的plot函数和自定义的plot函数@psplotchange的选项。

    选择= optimoptions (“patternsearch”...“PlotFcn”{@psplotbestf, @psplotchange},...“PollMethod”“GSSPositiveBasis2N”);

使用自定义Plot函数运行优化

通过调用运行该示例patternsearchx0

[x, fval] = patternsearch (F, x0,...Aineq、bineq Aeq,说真的 ,[],[],[], 选项);

因为它的规模y-axis在较低的自定义图是对数的,该图只显示大于0的变化。

Plot函数是如何工作的

plot函数使用以下结构中包含的信息。

  • optimvalues-求解器的当前状态,一个结构

  • 国旗-算法的当前状态,一个字符向量

自定义绘图函数最重要的语句,psplotchange.m,归纳如下表。

自定义Plot功能语句

声明 描述
持久last_best

创建持久变量last_best为上代最佳目标函数值。通过多次调用plot函数来保存持久变量。

集(gca,‘Yscale’,‘日志’)

在算法开始之前设置好图形。

最佳= min (optimvalues.fval)

最好的等于目标函数的最小值。这个领域optimvalues.fval包含当前迭代中的目标函数值。的变量最好的为目标函数的最小值。以获取结构字段的完整描述optimvalues,请参阅情节功能的结构

Change = last_best - best

设置变量改变取前一次迭代的最佳目标函数值减去当前迭代的最佳目标函数值。

情节(optimvalues。迭代,改变,“r”)

情节的变量改变在当前目标函数值处,对于当前迭代所包含的optimvalues.iteration

相关的话题

Baidu
map