Contenu principal

Visualize the Basins of Attraction

Which start points lead to which basin? For a steepest descent solver, nearby points generally lead to the same basin; see Basins of Attraction. However, for toolbox solvers, basins are more complicated.

Plot the MultiStart start points from the example Example of Run with MultiStart, color-coded with the basin where they end.

rng(14,"twister")
ms = MultiStart;
opts = optimoptions(@fmincon,Algorithm="interior-point");
sixmin = @(x)(4*x(1)^2 - 2.1*x(1)^4 + x(1)^6/3 ...
    + x(1)*x(2) - 4*x(2)^2 + 4*x(2)^4);
problem = createOptimProblem("fmincon",x0=[-1,2],...
    objective=sixmin,lb=[-3,-3],ub=[3,3],...
    options=opts);
[xminm,fminm,flagm,outptm,manyminsm] = run(ms,problem,50);
MultiStart completed the runs from all start points. 

All 50 local solver runs converged with a positive local solver exitflag.
possColors = 'kbgcrm';
hold on
for i = 1:size(manyminsm,2)

    % Color of this line
    cIdx = rem(i-1, length(possColors)) + 1;
    color = possColors(cIdx);

    % Plot start points
    u = manyminsm(i).X0; 
    x0ThisMin = reshape([u{:}], 2, length(u));
    plot(x0ThisMin(1, :), x0ThisMin(2, :),".", ...
        Color=color,MarkerSize=25);

    % Plot the basin with color i
    plot(manyminsm(i).X(1), manyminsm(i).X(2),"*", ...
        Color=color,MarkerSize=25);
end % Basin center marked with a *, start points with dots
hold off

Figure contains an axes object. The axes object contains 12 objects of type line. One or more of the lines displays its values using only markers

The figure shows the centers of the basins by colored * symbols. Start points with the same color as the * symbol converge to the center of the * symbol.

Start points do not always converge to the closest basin. For example, the magenta points are closer to the cyan basin center than to the red basin center. Also, many black and blue start points are closer to the opposite basin centers.

The magenta and red basins are shallow, as you can see in the following contour plot.

sixminxy = @(x,y)(4*x.^2 - 2.1*x.^4 + x.^6/3 ...
    + x.*y - 4*y.^2 + 4*y.^4);
f = @(x,y)sixminxy(x,y); % Vectorized objective fcn
fcontour(f,[-2 2 -1.1 1.1])
hold on
for i = 1:size(manyminsm,2)
    cIdx = rem(i-1, length(possColors)) + 1;
    color = possColors(cIdx);
    plot(manyminsm(i).X(1),manyminsm(i).X(2),"*",...
        Color=color,MarkerSize=25); % Plot center of basin with *
end
hold off

Figure contains an axes object. The axes object contains 7 objects of type functioncontour, line. One or more of the lines displays its values using only markers

See Also

Topics