Interpret surrogateoptplot

The surrogateoptplot plot function provides a good deal of information about the surrogate optimization steps.

Minimize Bounded Function

For example, consider the plot of the steps surrogateopt takes on the built-in test function rastriginsfcn. This function has a global minimum value of 0 at the point [0,0].

Create a surface plot of rastriginsfcn.

ezsurf(@(x,y)rastriginsfcn([x(:),y(:)])); Plot Minimization Process

By giving asymmetric bounds, you encourage surrogateopt to search away from the global minimum. Set asymmetric bounds of [-3,-3] and [9,10]. Set options to use the surrogateoptplot plot function, and then call surrogateopt.

lb = [-3,-3];
ub = [9,10];
options = optimoptions('surrogateopt','PlotFcn','surrogateoptplot');
rng default
[x,fval] = surrogateopt(@rastriginsfcn,lb,ub,options); Surrogateopt stopped because it exceeded the function evaluation limit set by
'options.MaxFunctionEvaluations'.

Interpret Plot

Begin interpreting the plot from its left side. For details of the algorithm steps, see Surrogate Optimization Algorithm.

• The first points are black triangles, indicating quasirandom samples of the function within the problem bounds. These points come from the Construct Surrogate phase.

• Next are black dots indicating the adaptive points, the points created in the Search for Minimum phase.

• The thick green line represents the best (lowest) objective function value found. Shortly after evaluation number 30, surrogateopt is stuck in a local minimum with an objective function value near 5. Zoom in to see this behavior more clearly.

xlim([20 100])
ylim([0 10]) • Near evaluation number 120, a vertical line indicates a surrogate reset. At this point, the algorithm returns to the Construct Surrogate phase.

• The dark blue x points represent the incumbent, which is the best point found since the previous surrogate reset.

• Near evaluation number 160, the incumbent improves on the previous best point by attaining a value of about 4. After this evaluation number, the best point slowly drops in value. Zoom in to see this behavior more clearly.

xlim([140 200])
ylim([0 6]) • The optimization halts at evaluation number 200 because it is the default function evaluation limit for a 2-D problem.

Problem with Nonlinear Constraints

The surrogateoptplot display changes when you have nonlinear constraints. Impose the constraint that x(1) is integer-valued, and the nonlinear constraint that ${x}_{2}\ge {x}_{1}^{2}-2$. For the function that implements this constraint, see rasfcn at the end of this example.

fun = @rasfcn;

Set integer constraints by setting intcon = 1, and run the minimization.

intcon = 1;
[x,fval] = surrogateopt(fun,lb,ub,intcon,options); Surrogateopt stopped because it exceeded the function evaluation limit set by
'options.MaxFunctionEvaluations'.

The plot now shows red markers where surrogateopt evaluates an infeasible point. The final point is close to the true minimum point of [0,0].

disp(x)
1.0e-03 *

0   -0.3913

The integer constraint likely helps surrogateopt find the true minimum, by reducing the search space.

function F = rasfcn(x)
F.Fval = rastriginsfcn(x);
F.Ineq = x(1)^2 - 2 - x(2);
end 