主要内容

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

Global Optimization Toolbox 求解器的初始点

一些 Global Optimization Toolbox 求解器需要初始点 x0patternsearchsimulannealbndGlobalSearchMultiStart。当使用基于问题的方法解决优化问题时,您可以在 solveprob2struct 的第二个参量中指定 x0。要指定初始点,请创建一个结构体,其中变量名称作为字段,变量值作为结构体值。例如,对于标量变量 xpatternsearch 求解器的 2×2 矩阵 y,输入以下代码。

x0.x = 5;
x0.y = eye(2) + 0.1*randn(2);
[sol,fval] = solve(prob,x0,"Solver","patternsearch")

您还可以使用 optimvalues 为这些求解器指定一个初始点,如下所示。

其他 Global Optimization Toolbox 求解器不需要初始点,但可以接受初始点或一组初始点:gagamultiobjparetosearchsurrogateopt。要将初始点传递给这些求解器,请使用 optimvalues 创建点。

注意

当使用基于问题的方法时,您不能使用以下选项传递初始点或初始种群:

例如,对于 ga 求解器,取二维变量 x 和 2×2 矩阵 y

x = optimvar('x',2,"LowerBound",-1,"UpperBound",1);
y = optimvar('y',2,2,"LowerBound",-1,"UpperBound",1);
prob = optimproblem("Objective",...
    cosh(dot(y*x,[2;-1])) - sinh(dot(y*x,[1;-2])));
prob.Constraints = y(1,2) == y(2,1);
% Set initial population: x0x for x, x0y for y
rng default
x0x = [1;1/2];
x0y = eye(2)/2 + 0.1*randn(2);
x0 = optimvalues(prob,'x',x0x,'y',x0y);
% Solve problem
[sol,fval] = solve(prob,Solver="ga")
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.

sol = 

  struct with fields:

    x: [2×1 double]
    y: [2×2 double]


fval =

  -48.6317

该解仅在约束容差 y(1,2) == y(2,1) 内满足约束 1e-3sol.y(2,1) = -1.0000,但 sol.y(1,2) = -0.9990

另请参阅

|

主题