主要内容

优化多维函数使用surrogateopt,具体问题具体分析

这个示例展示了如何在基于问题的方法中使用代理优化最小化多维函数。最小化的函数,multirosenbrock (x),出现在这个例子到此结束.的multirosenbrock函数只有一个局部最小值0在点(1, 1,…,1).该函数被设计为具有挑战性的求解器最小化。

请注意:的代码multirosenbrock控件中提供了Helper函数这个例子到此结束.确保代码包含在脚本的末尾或路径上的文件中。

创建一个4-D优化变量x.的multirosenbrock函数期望变量是行向量,因此指定x作为一个4元素的行向量。

x = optimvar (“x”1、4);

surrogateopt求解器要求所有问题变量的有限界。指定-3的下界和3的上界。当指定标量边界时,它们适用于所有问题变量。

x.LowerBound = 3;x.UpperBound = 3;

使用multirosenbrock作为目标函数,将函数转换为一个优化表达式fcn2optimexpr

有趣= fcn2optimexpr (@multirosenbrock x);

用目标函数创建一个优化问题multirosenbrock

概率= optimproblem (“客观”、有趣的);

解决问题,指定surrogateopt解算器。

rng默认的%的再现性[溶胶,fval] =解决(概率,“规划求解”“surrogateopt”
使用surrogateopt解决问题。

图优化Plot函数包含一个轴对象。标题为Best Function Value: 1.58773的axis对象包含一个类型为line的对象。该对象表示最佳函数值。

surrogateopt停止,因为它超过了'options.MaxFunctionEvaluations'设置的函数求值限制。
索尔=结构体字段:X: [0.0900 0.0120 0.1300 0.0136]
fval = 1.5877

尝试改进解决方案

返回的解不是很好,因为目标函数值不是很接近0.尝试通过运行来改进解决方案surrogateopt更多的评估。使用前面的解决方案作为起点。

选择= optimoptions (“surrogateopt”“MaxFunctionEvaluations”, 1000);[sol2, fval2] =解决(概率,溶胶,“规划求解”“surrogateopt”“选项”选项)
使用surrogateopt解决问题。

图优化Plot函数包含一个轴对象。标题为Best Function Value: 0.0961091的轴对象包含一个类型为line的对象。该对象表示最佳函数值。

surrogateopt停止,因为它超过了'options.MaxFunctionEvaluations'设置的函数求值限制。
sol2 =结构体字段:X: [0.8613 0.7429 0.7247 0.5220]
fval2 = 0.0961

这一次,求解器得到一个好的解。

Helper函数

此代码创建multirosenbrockhelper函数。

函数F = multirosenbrock (x)%该函数是Rosenbrock的多维泛化%的功能。假设x是一个矩阵,它以向量化的方式运行%,其中的行是个体。版权所有:The MathWorks, Inc.N =大小(x, 2);%假设x是一个行向量或二维矩阵如果国防部(N, 2)如果N是奇数,则为%错误(“输入行必须有偶数个元素”结束优势= 1:2:n - 1;均等的= 2:2:N;F = 0(大小(x));F(:,几率)= 1 - x(:,几率);F(:,均等的)= 10 * (x(:,均等的)- x(:,几率)。^ 2);F = (F . ^ 2, 2)总和;结束

另请参阅

||

相关的话题