Notes Regarding Convergence Criteria

Minion/MinionPy is designed to solve black-box, potentially expensive objective functions. As a result, the computational budget is primarily limited by the maximum number of function calls (maxevals). Nevertheless, Minion also implements tolerance-based convergence criteria for algorithms that support them. The tolerances are configured through the algorithm options map or dictionary, using "x_tol" and "f_tol" for algorithms that support them. The default values are x_tol = 1e-8 and f_tol = -1.0. We do not use a global constructor-level tolerance anymore. Set either tolerance to a negative value to disable that side of the convergence check. For example, f_tol = -1.0 disables objective-value spread convergence while leaving x_tol active. Algorithms without built-in restart strategies also accept maxiters as an iteration cap. The default maxiters = -1 disables the iteration cap. ARRDE, j2020, RCMAES, and BIPOP_aCMAES do not expose maxiters. Because the number of function calls per iteration can vary by algorithm, maxevals remains the recommended primary budget for comparable runs.

For supported algorithms, "x_tol" controls the spread of candidate coordinates and "f_tol" controls relative objective-value spread. The optimizer reports convergence when either condition is satisfied:

\[\max_j \left(\max_i x_{i,j} - \min_i x_{i,j}\right) \le x_{\mathrm{tol}}\]

or

\[\frac{f_{\max} - f_{\min}}{\left|0.5(f_{\max} + f_{\min})\right|} \le f_{\mathrm{tol}}.\]

If all objective values are identical, the relative objective-value spread is treated as zero, including the stable case f_max == f_min == 0.0. If the denominator is zero but the objective-value range is nonzero, the spread is treated as infinite and does not trigger f_tol convergence.

Note that L-BFGS and L-BFGS-B have their own stopping criteria, which are specified in the algorithm options (g_epsilon, g_epsilon_rel, f_reltol).

Meaning of converged

When result.status is converged, it means the optimizer stopped because one of its configured convergence rules was satisfied. It does not mean that Minion has proven the returned point is the global optimum.

For population, swarm, simplex, and offspring-based algorithms, converged usually means that either the active candidate coordinates are close enough according to x_tol or the active objective values are close enough according to f_tol. Because the tolerance check uses or logic, satisfying either condition is enough to stop.

For local-search algorithms such as L_BFGS and L_BFGS_B, converged comes from their own criteria, such as gradient norm or relative objective improvement. These criteria indicate that the local search appears to have settled under the configured tolerances.

In all cases, interpret converged as an algorithmic stopping reason: the search has become stationary or contracted enough under the selected tolerances. For solution quality, still inspect result.fun, result.x, and result.message against the accuracy required by your problem.

The same x_tol / f_tol names are used for NelderMead and DA. For CMAES and ACMAES, coordinate spread is measured in the original bounded coordinates, even though the internal sampling uses normalized coordinates. For BIPOP_aCMAES and RCMAES, the tolerance options are used as restart triggers; max_restarts = -1 means unlimited restarts.