# SearchPoints -> Automatic within DifferentialEvolution: what's its meaning?

A simple question: what is the meaning of the standard option (Automatic) for SearchPoints within the DifferentialEvolution method?

I see in the Mathematica help that SearchPoints -> Automatic has different meanings depending on the method for global optimization, say for RandomSearch it is "min(10 d,100), where d is the number of variables". For SimulatedAnnealing it is min(2 d,50). And for DifferentialEvolution? The same help page (whose title is "Numerical Nonlinear Global Optimization" does not explain this).

Using Trace we find that default value of the suboption "SearchPoints" is Min[10 d, 50]:

Trace[NMinimize[{y + x + (1 - x)^2, x^2 + y^2 <= 1}, {x, y},
Method -> {"DifferentialEvolution"}],
_[OptimizationNMinimizeDumpsearchpoints, _], TraceInternal -> True]


{{{{{{{{{{{{{{{{{{{{{{{{OptimizationNMinimizeDumpsearchpoints = If[OptimizationNMinimizeDumpinitpts === Automatic, Min[10 OptimizationNMinimizeDumpdim, 50], Max[Min[10 OptimizationNMinimizeDumpdim, 50], Length[OptimizationNMinimizeDumpinitpts]]], OptimizationNMinimizeDumpsearchpoints = 20}}}}}}}}}}}}}}}}}}}}}}}}

The variable name OptimizationNMinimizeDumpsearchpoints is found by searching for the term "SearchPoints" in the huge output from

Trace[NMinimize[{y + x + (1 - x)^2, x^2 + y^2 <= 1}, {x, y},
Method -> {"DifferentialEvolution"}], TraceInternal -> True].


Option processing may also be inspected in optionCheck[]:

Needs@"GeneralUtilities";
PrintDefinitions@OptimizationNMinimizeDumpoptionCheck

OptimizationNMinimizeDumpoptionCheck[
NMinimizeDifferentialEvolution, caller_, l,_] :=
...
If[SameQ[searchpoints, Automatic],
searchpoints = If[
SameQ[initpts, Automatic],
Min[10 * dim, 50],
Max[Min[10 * dim, 50], Length @ initpts]
]
];
...
`