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). This differs from other optimization libraries, where an algorithm stops either when the function no longer improves or when a predefined maximum number of iterations is reached. In Minion, we do use tolerance-based convergence criteria, but some algorithms, especially population-based ones, do not support this. The primary reason for this is that the population is not designed to converge completely; instead, it is maintained to ensure continued exploration of the search space. Additionally, we do not use iteration-based stopping criteria, as the number of function calls per iteration can vary, making it less intuitive to map to maxevals. Below is a list of algorithms that **ignore** the ``relTol`` parameter. Even if it is set, it will have no effect: - ARRDE - AGSK - j2020 - Dual Annealing - RCMAES - BIPOP-aCMAES For these, the ``relTol`` (in Python) or ``tol`` (in C++) parameters specify the maximum allowed value for the standard deviation of the function values divided by the average of the function values before the algorithm stops. Note that L-BFGS-B has its own stopping criteria, which is specified in the algorithm options (``g_epsilon``, ``g_epsilon_rel``, ``f_reltol``).