主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

修复 surrogateopt 中的变量

此示例说明如何通过从优化中删除某些控制变量来修复它们的值。尽管修复值的最简单方法是设置相等的下界,但某些求解器不允许相等的边界。然而,surrogateopt 在尝试优化之前通过从问题中内部删除固定变量来很好地处理相等的边界。

multirosenbrock 函数接受任意偶数个控制变量。在点 [1,1,...,1,1] 处达到其最小值 0。将十个变量的下界设置为 -1,上界为 5,然后将前六个上界和下界设置为 1。此设置从问题中删除了六个变量,剩下四个变量的问题。

lb = -1*ones(1,10);
ub = 5*ones(1,10);
lb(1:6) = 1;
ub(1:6) = 1;

求解。

fun = @multirosenbrock;
rng default % For reproducibility
[x,fval,exitflag] = surrogateopt(fun,lb,ub)

Figure Optimization Plot Function contains an axes object. The axes object with title Best Function Value: 0.942618, xlabel Iteration, ylabel Function value contains an object of type scatter. This object represents Best function value.

surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.
x = 1×10

    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.1502    1.3170    0.0437   -0.0025

fval = 
0.9426
exitflag = 
0

求解器返回接近全局最小值的点。请注意,求解器需要进行 500 次函数计算,这是包含 10 个变量的问题的默认值。即使您修复一些变量,求解器也不会改变此默认值。

当您不固定任何变量时,求解器不会到达靠近全局最小值的点。

lb = -1*ones(1,10);
ub = 5*ones(1,10);
rng default % For reproducibility
[x,fval,exitflag] = surrogateopt(fun,lb,ub)

Figure Optimization Plot Function contains an axes object. The axes object with title Best Function Value: 0.810901, xlabel Iteration, ylabel Function value contains an object of type scatter. This object represents Best function value.

surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.
x = 1×10

    1.3874    1.9276    1.4301    2.0454    1.3518    1.8288    1.3938    1.9430    1.4427    2.0821

fval = 
0.8109
exitflag = 
0

另请参阅

主题