[1]:
import numpy as np
import time
from scipy.optimize import differential_evolution, minimize, dual_annealing
import matplotlib.pyplot as plt
import concurrent.futures
import threading, multiprocessing

import sys
sys.path.append("../")
import minionpy as mpy
import minionpy.test_functions as mpytest
import time
import iminuit

Minimizing CEC benchmark problems with noise

[2]:
# Global variables
N = 0  # Global counter for function evaluations
noise_ratio = 1e-4  # Noise level for the objective function
N_dict = {}  # Stores the number of function evaluations per algorithm
algos = ["ARRDE", "NelderMead", "L_BFGS_B", "DA"] #here, DA is dual annealing, ABC=artificial bee colony

def run_minuit_migrad(func_scipy, x0, bounds_list, maxevals):
    state = {"best": np.inf}

    def minuit_objective(*args):
        value = float(func_scipy(np.array(args, dtype=float)))
        if np.isfinite(value):
            state["best"] = min(state["best"], value)
        return value

    m = iminuit.Minuit(minuit_objective, *x0)
    for i, bound in enumerate(bounds_list):
        m.limits[i] = bound
    m.errordef = 1.0
    try:
        m.migrad(ncall=maxevals)
        return float(m.fval)
    except RuntimeError:
        try:
            last_x = np.array(list(m.values), dtype=float)
            return float(func_scipy(last_x))
        except Exception:
            return float(state["best"])

def test_optimization_noise(func_number, year, bounds, dimension, func_name, Nmaxeval, seed):
    """
    Runs multiple optimization algorithms on the given function and stores results.

    Parameters:
    - func: Objective function to be minimized
    - bounds: Tuple representing the search space bounds
    - dimension: Number of dimensions for the problem
    - func_name: Name of the function (used for logging results)
    - Nmaxeval: Maximum number of function evaluations
    - seed: Random seed for reproducibility
    """
    global results, N, N_dict, noise_ratio, results_lock, algos

    if year == 2014:
        cec_func = mpy.CEC2014Functions(function_number=func_number, dimension=dimension)
    elif year == 2017:
        cec_func = mpy.CEC2017Functions(function_number=func_number, dimension=dimension)
    elif year == 2019:
        cec_func = mpy.CEC2019Functions(function_number=func_number)
    elif year == 2020:
        cec_func = mpy.CEC2020Functions(function_number=func_number, dimension=dimension)
    elif year == 2022:
        cec_func = mpy.CEC2022Functions(function_number=func_number, dimension=dimension)
    else:
        raise Exception("Unknown CEC year.")

    func = cec_func
    result = {}
    result['Dimensions'] = dimension
    result['Function'] = func_name
    bounds_list = [bounds] * dimension  # Extend bounds to all dimensions
    x0 = [[0.0 for _ in range(dimension)]]  # Initial starting point

    def func_wrapper(X):
        """Wraps the function to add evaluation tracking and noise."""
        global N
        ret = np.array(func(X))  # Compute function value
        N += len(X)  # Track the number of function evaluations
        return ret + noise_ratio * np.random.normal(size=len(X)) * np.abs(ret)  # Add noise

    def func_scipy(par):
        """Wrapper for compatibility with SciPy optimization methods."""
        return func_wrapper([par])[0]

    N = 0  # Reset evaluation counter
    res = mpy.Minimizer(
        func_wrapper, bounds_list, x0=x0, algo="L_BFGS_B", maxevals=Nmaxeval,
        callback=None, seed=seed, options={
            "population_size": 0,
            "N_points_derivative": 1,
            "use_local_search": True,
            "func_noise_ratio": noise_ratio
        }
    ).optimize()
    result["L_BFGS_B N=1"] = res.fun
    N_dict["L_BFGS_B N=1"] = N

    N = 0  # Reset evaluation counter
    res = mpy.Minimizer(
        func_wrapper, bounds_list, x0=x0,  algo="L_BFGS_B", maxevals=Nmaxeval,
        callback=None, seed=seed, options={
            "population_size": 0,
            "N_points_derivative": 3,
            "use_local_search": True,
            "func_noise_ratio": noise_ratio
        }
    ).optimize()
    result["L_BFGS_B N=3"] = res.fun
    N_dict["L_BFGS_B N=3"] = N


    N = 0  # Reset evaluation counter
    res = mpy.Minimizer(
        func_wrapper, bounds_list, x0=x0, algo="L_BFGS_B", maxevals=Nmaxeval,
        callback=None, seed=seed, options={
            "population_size": 0,
            "N_points_derivative": 5,
            "use_local_search": True,
            "func_noise_ratio": noise_ratio
        }
    ).optimize()
    result["L_BFGS_B N=5"] = res.fun
    N_dict["L_BFGS_B N=5"] = N


    N = 0  # Reset evaluation counter
    res = mpy.Minimizer(
        func_wrapper, bounds_list, x0=x0, algo="L_BFGS_B", maxevals=Nmaxeval,
        callback=None, seed=seed, options={
            "population_size": 0,
            "N_points_derivative": 7,
            "use_local_search": True,
            "func_noise_ratio": noise_ratio
        }
    ).optimize()
    result["L_BFGS_B N=7"] = res.fun
    N_dict["L_BFGS_B N=7"] = N


    # Run L-BFGS-B from SciPy
    N = 0
    res_minimize = minimize(func_scipy, x0=x0[0], method="L-BFGS-B", options={"maxfun": Nmaxeval}, bounds=bounds_list)
    result["Scipy L_BFGS_B"] = res_minimize.fun
    N_dict["Scipy L_BFGS_B"] = N

    # Run Minuit Migrad from iminuit
    N = 0
    result["Minuit Migrad"] = run_minuit_migrad(func_scipy, x0[0], bounds_list, Nmaxeval)
    N_dict["Minuit Migrad"] = N

    # Print results
    for res in result:
        if res == "Function" :
            print("Function : ", result[res])
        if res not in ['Dimensions', 'Function']:
            print(f"\t{res:<20} : {result[res]:<10} \t N_evals : {N_dict[res]:<10}")
    print("")

def test_optimization(func, bounds, dimension, func_name, Nmaxeval, seed):
    """
    Runs multiple optimization algorithms on the given function and stores results.

    Parameters:
    - func: Objective function to be minimized
    - bounds: Tuple representing the search space bounds
    - dimension: Number of dimensions for the problem
    - func_name: Name of the function (used for logging results)
    - Nmaxeval: Maximum number of function evaluations
    - seed: Random seed for reproducibility
    """
    global results, N, N_dict, noise_ratio, results_lock, algos

    result = {}
    result['Dimensions'] = dimension
    result['Function'] = func_name
    bounds_list = [bounds] * dimension  # Extend bounds to all dimensions
    x0 = [[0.0 for _ in range(dimension)] ]# Initial starting point

    def func_wrapper(X):
        """Wraps the function to add evaluation tracking and noise."""
        global N
        ret = np.array(func(X))  # Compute function value
        N += len(X)  # Track the number of function evaluations
        return ret + noise_ratio * np.random.normal(size=len(X)) * np.abs(ret)  # Add noise

    def func_scipy(par):
        """Wrapper for compatibility with SciPy optimization methods."""
        return func_wrapper([par])[0]

    # Run various optimization algorithms
    for algo in algos:
        N = 0  # Reset evaluation counter
        res = mpy.Minimizer(
            func_wrapper, bounds_list, x0=x0, algo=algo, maxevals=Nmaxeval,
            callback=None, seed=seed, options={
                "population_size": 0,
                "N_points_derivative": 3,
                "use_local_search": True,
                "func_noise_ratio": noise_ratio
            }
        ).optimize()
        result[algo] = res.fun
        N_dict[algo] = N

    # Run L-BFGS method from minionpy
    N = 0
    res = mpy.L_BFGS(
        func_wrapper, x0=x0, maxevals=Nmaxeval,
        callback=None, seed=seed, options={
            "population_size": 0,
            "N_points_derivative": 3,
            "use_local_search": True,
            "func_noise_ratio": noise_ratio
        }
    ).optimize()
    result["L_BFGS"] = res.fun
    N_dict["L_BFGS"] = N

    # Run L-BFGS-B from SciPy
    N = 0
    res_minimize = minimize(func_scipy, x0=x0[0], method="L-BFGS-B", options={"maxfun": Nmaxeval}, bounds=bounds_list)
    result["Scipy L_BFGS_B"] = res_minimize.fun
    N_dict["Scipy L_BFGS_B"] = N

    # Run Dual Annealing from SciPy
    N = 0
    dual_ann = dual_annealing(func_scipy, bounds_list, x0=x0[0],maxfun=Nmaxeval, no_local_search=False)
    result["Scipy DA"] = dual_ann.fun
    N_dict["Scipy DA"] = N


    # Run Nelder-Mead from SciPy
    N = 0
    res_minimize = minimize(func_scipy, x0=x0[0], method="Nelder-Mead", options={"maxfev": Nmaxeval, "adaptive": True}, bounds=bounds_list)
    result["Scipy NelderMead"] = res_minimize.fun
    N_dict["Scipy NelderMead"] = N

    # Run Minuit Migrad from iminuit
    N = 0
    result["Minuit Migrad"] = run_minuit_migrad(func_scipy, x0[0], bounds_list, Nmaxeval)
    N_dict["Minuit Migrad"] = N

    # Print results
    for res in result:
        if res == "Function" :
            print("Function : ", result[res])
        if res not in ['Dimensions', 'Function']:
            print(f"\t{res:<20} : {result[res]:<10} \t N_evals : {N_dict[res]:<10}")
    print("")

def run_test_optimization(j, dim, year=2017, seed=None, Nmaxeval=10000):
    """
    Runs optimization tests for a specified CEC benchmark function.

    Parameters:
    - j: Function index in the CEC benchmark set
    - dim: Dimensionality of the function
    - year: Year of the CEC benchmark suite (default: 2017)
    - seed: Random seed for reproducibility
    - Nmaxeval: Maximum number of function evaluations
    """
    if year == 2014:
        cec_func = mpy.CEC2014Functions(function_number=j, dimension=dim)
    elif year == 2017:
        cec_func = mpy.CEC2017Functions(function_number=j, dimension=dim)
    elif year == 2019:
        cec_func = mpy.CEC2019Functions(function_number=j)
    elif year == 2020:
        cec_func = mpy.CEC2020Functions(function_number=j, dimension=dim)
    elif year == 2022:
        cec_func = mpy.CEC2022Functions(function_number=j, dimension=dim)
    else:
        raise Exception("Unknown CEC year.")

    test_optimization(cec_func, (-100, 100), dim, "func_" + str(j), Nmaxeval, seed)

Performance of Minion’s L-BFGS-B with Different \(N\) Derivative Points

Minion’s L-BFGS-B is vectorized and designed to be robust against noise. Function evaluations and their derivatives are computed in batches, ensuring efficient execution. To estimate derivatives, Minion employs the noise-robust Lanczos derivative method.

In the L-BFGS-B and L-BFGS settings, the key parameter 'N_points_derivative' determines the number of points used for derivative calculation. This notebook compares the performance of L-BFGS-B with different values of 'N_points_derivative'. A noise level of \(10^{-4}\) is added to the CEC2017 benchmark problems to simulate real-world conditions.

  • When \(N = 1\), the numerical derivative reduces to the standard forward difference method.

  • For \(N \geq 2\), the Lanczos derivative formula is used.

  • Specifically, \(N = 3\) corresponds to the central difference method.

The following sections analyze how different values of 'N_points_derivative' impact optimization performance.

[3]:
# Counter for function evaluations
N = 0

# Noise ratio for function evaluations (set to zero for noiseless optimization)
noise_ratio = 1e-4

# Dictionary to store the number of evaluations per algorithm
N_dict = {}

# Maximum number of function evaluations allowed per optimization run
Nmaxeval = 100000

# Dimensionality of the optimization problem
dimension = 10

# Number of times each function should be tested (repetitions)
NRuns = 1

# The CEC benchmark year to use for function selection

year = 2017

# Dictionary mapping CEC benchmark years to their respective function sets
func_numbers_dict = {
    2022: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
    2020: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    2019: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    2017: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
    2014: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
}

# Retrieve the function numbers for the selected benchmark year
func_numbers = func_numbers_dict[year]

for j in func_numbers:
    test_optimization_noise(j, year, (-100, 100), dimension, "func_"+str(j), Nmaxeval, None)
Function :  func_1
        L_BFGS_B N=1         : 5973727634.063842         N_evals : 792
        L_BFGS_B N=3         : 153.98172646152972        N_evals : 672
        L_BFGS_B N=5         : 533.4192837079554         N_evals : 2378
        L_BFGS_B N=7         : 781.6660243810908         N_evals : 1769
        Scipy L_BFGS_B       : 29974986144.93106         N_evals : 308
        Minuit Migrad        : 29976327652.15234         N_evals : 2813

Function :  func_2
        L_BFGS_B N=1         : 8.192689894329618e+17     N_evals : 88
        L_BFGS_B N=3         : 200.01288793682758        N_evals : 2688
        L_BFGS_B N=5         : 199.9819941303    N_evals : 4715
        L_BFGS_B N=7         : 199.94768065543064        N_evals : 6954
        Scipy L_BFGS_B       : 8.86995917802098e+17      N_evals : 319
        Minuit Migrad        : 8.870590722656401e+17     N_evals : 2853

Function :  func_3
        L_BFGS_B N=1         : 7871.994695250997         N_evals : 495
        L_BFGS_B N=3         : 300.53766055109384        N_evals : 1407
        L_BFGS_B N=5         : 300.0706827626695         N_evals : 1968
        L_BFGS_B N=7         : 299.96460417801393        N_evals : 3904
        Scipy L_BFGS_B       : 1343401.2326947476        N_evals : 253
        Minuit Migrad        : 516.9317073388936         N_evals : 5472

Function :  func_4
        L_BFGS_B N=1         : 535.4115850836263         N_evals : 352
        L_BFGS_B N=3         : 470.7019828202033         N_evals : 651
        L_BFGS_B N=5         : 407.59414107876756        N_evals : 1435
        L_BFGS_B N=7         : 407.73336798354177        N_evals : 1586
        Scipy L_BFGS_B       : 5901.2811611421275        N_evals : 330
        Minuit Migrad        : 5902.501237740702         N_evals : 2715

Function :  func_5
        L_BFGS_B N=1         : 626.435524658531          N_evals : 539
        L_BFGS_B N=3         : 651.7178753952869         N_evals : 1638
        L_BFGS_B N=5         : 632.6745287596315         N_evals : 3280
        L_BFGS_B N=7         : 632.4506601225373         N_evals : 2684
        Scipy L_BFGS_B       : 726.7400295936447         N_evals : 231
        Minuit Migrad        : 726.6419518975932         N_evals : 2829

Function :  func_6
        L_BFGS_B N=1         : 680.4856243279562         N_evals : 539
        L_BFGS_B N=3         : 667.7132294505789         N_evals : 1554
        L_BFGS_B N=5         : 659.5275178316926         N_evals : 1845
        L_BFGS_B N=7         : 660.3512360364566         N_evals : 1464
        Scipy L_BFGS_B       : 741.703588431771          N_evals : 451
        Minuit Migrad        : 727.4252615047818         N_evals : 2702

Function :  func_7
        L_BFGS_B N=1         : 814.4171581142839         N_evals : 418
        L_BFGS_B N=3         : 813.0659417436532         N_evals : 1239
        L_BFGS_B N=5         : 811.233000566351          N_evals : 1312
        L_BFGS_B N=7         : 811.066601195408          N_evals : 2501
        Scipy L_BFGS_B       : 939.6997180169456         N_evals : 231
        Minuit Migrad        : 939.6647940915336         N_evals : 2948

Function :  func_8
        L_BFGS_B N=1         : 919.338501258366          N_evals : 726
        L_BFGS_B N=3         : 865.8117570287477         N_evals : 567
        L_BFGS_B N=5         : 838.217722137182          N_evals : 2173
        L_BFGS_B N=7         : 831.7786229566003         N_evals : 2440
        Scipy L_BFGS_B       : 946.6592344459456         N_evals : 264
        Minuit Migrad        : 946.7788220020038         N_evals : 2185

Function :  func_9
        L_BFGS_B N=1         : 1838.5141195299113        N_evals : 253
        L_BFGS_B N=3         : 1785.1656395572445        N_evals : 756
        L_BFGS_B N=5         : 1782.880499182554         N_evals : 2747
        L_BFGS_B N=7         : 1782.892000913451         N_evals : 2440
        Scipy L_BFGS_B       : 4305.927218998486         N_evals : 308
        Minuit Migrad        : 1793.8301239603884        N_evals : 2710

Function :  func_10
        L_BFGS_B N=1         : 3192.295247011129         N_evals : 297
        L_BFGS_B N=3         : 3277.8778436311295        N_evals : 651
        L_BFGS_B N=5         : 3138.336718287842         N_evals : 984
        L_BFGS_B N=7         : 3128.452876724262         N_evals : 2867
        Scipy L_BFGS_B       : 6139.6648685972805        N_evals : 308
        Minuit Migrad        : 6138.75591857766          N_evals : 2588

Function :  func_11
        L_BFGS_B N=1         : 1130.3343700761332        N_evals : 528
        L_BFGS_B N=3         : 1148.9091755604065        N_evals : 1155
        L_BFGS_B N=5         : 1149.2497936089546        N_evals : 1722
        L_BFGS_B N=7         : 1153.3370025888307        N_evals : 3111
        Scipy L_BFGS_B       : 65027994.63060891         N_evals : 341
        Minuit Migrad        : 65032361.439737506        N_evals : 3052

Function :  func_12
        L_BFGS_B N=1         : 11061.20935785019         N_evals : 506
        L_BFGS_B N=3         : 12981.04151155694         N_evals : 840
        L_BFGS_B N=5         : 10268.08710399846         N_evals : 1722
        L_BFGS_B N=7         : 10805.62363247725         N_evals : 2318
        Scipy L_BFGS_B       : 5722196405.008203         N_evals : 330
        Minuit Migrad        : 5721672589.269727         N_evals : 2705

Function :  func_13
        L_BFGS_B N=1         : 11494.550017856725        N_evals : 275
        L_BFGS_B N=3         : 15840.793450099107        N_evals : 567
        L_BFGS_B N=5         : 11005.438240482377        N_evals : 492
        L_BFGS_B N=7         : 15551.716951961022        N_evals : 1220
        Scipy L_BFGS_B       : 2841477091.5506043        N_evals : 231
        Minuit Migrad        : 2841008329.8383613        N_evals : 2819

Function :  func_14
        L_BFGS_B N=1         : 8677.003613218372         N_evals : 264
        L_BFGS_B N=3         : 7764.258453467257         N_evals : 756
        L_BFGS_B N=5         : 11357.62679399611         N_evals : 533
        L_BFGS_B N=7         : 9916.86881894369          N_evals : 793
        Scipy L_BFGS_B       : 2215236328.9562206        N_evals : 429
        Minuit Migrad        : 2215215011.671327         N_evals : 2707

Function :  func_15
        L_BFGS_B N=1         : 22202.443147860173        N_evals : 165
        L_BFGS_B N=3         : 22721.6697976241          N_evals : 399
        L_BFGS_B N=5         : 22924.727455293483        N_evals : 615
        L_BFGS_B N=7         : 17558.43827572106         N_evals : 671
        Scipy L_BFGS_B       : 769530970.690358          N_evals : 330
        Minuit Migrad        : 23425.55403264698         N_evals : 2858

Function :  func_16
        L_BFGS_B N=1         : 3077.489021282686         N_evals : 649
        L_BFGS_B N=3         : 2594.6562805445224        N_evals : 1218
        L_BFGS_B N=5         : 2475.585447221627         N_evals : 1066
        L_BFGS_B N=7         : 2505.2812233951795        N_evals : 1403
        Scipy L_BFGS_B       : 3437.687737869119         N_evals : 396
        Minuit Migrad        : 3437.5130501359513        N_evals : 2713

Function :  func_17
        L_BFGS_B N=1         : 1841.3632585834282        N_evals : 1232
        L_BFGS_B N=3         : 2276.137864784944         N_evals : 945
        L_BFGS_B N=5         : 1819.0242409455316        N_evals : 2296
        L_BFGS_B N=7         : 1959.902259021991         N_evals : 3843
        Scipy L_BFGS_B       : 3283.0628777211973        N_evals : 341
        Minuit Migrad        : 3027.9085956671847        N_evals : 2707

Function :  func_18
        L_BFGS_B N=1         : 17833.59327193814         N_evals : 374
        L_BFGS_B N=3         : 5102.7138259430385        N_evals : 441
        L_BFGS_B N=5         : 4979.352289384531         N_evals : 738
        L_BFGS_B N=7         : 3742.997073975895         N_evals : 1281
        Scipy L_BFGS_B       : 14467754037.359793        N_evals : 319
        Minuit Migrad        : 14469400514.359905        N_evals : 3205

Function :  func_19
        L_BFGS_B N=1         : 8375.481996474984         N_evals : 759
        L_BFGS_B N=3         : 15503.851117752829        N_evals : 672
        L_BFGS_B N=5         : 4900.219203501571         N_evals : 2747
        L_BFGS_B N=7         : 6340.915315560625         N_evals : 5429
        Scipy L_BFGS_B       : 12289722929.573496        N_evals : 231
        Minuit Migrad        : 12281979706.485401        N_evals : 2793

Function :  func_20
        L_BFGS_B N=1         : 2652.7532382048007        N_evals : 946
        L_BFGS_B N=3         : 2446.155927573167         N_evals : 588
        L_BFGS_B N=5         : 2446.6450151732424        N_evals : 1189
        L_BFGS_B N=7         : 2445.850909155051         N_evals : 1952
        Scipy L_BFGS_B       : 3152.420380804673         N_evals : 231
        Minuit Migrad        : 3152.7670674554215        N_evals : 2695

Function :  func_21
        L_BFGS_B N=1         : 2826.6405771923874        N_evals : 209
        L_BFGS_B N=3         : 2442.3432873041133        N_evals : 1008
        L_BFGS_B N=5         : 2467.953774869329         N_evals : 2009
        L_BFGS_B N=7         : 2440.5284574685543        N_evals : 1891
        Scipy L_BFGS_B       : 2828.1719277387742        N_evals : 231
        Minuit Migrad        : 2828.812563626788         N_evals : 2906

Function :  func_22
        L_BFGS_B N=1         : 3024.5191436033992        N_evals : 1133
        L_BFGS_B N=3         : 4641.237283522873         N_evals : 882
        L_BFGS_B N=5         : 4332.122810430588         N_evals : 943
        L_BFGS_B N=7         : 4009.4124619401164        N_evals : 4331
        Scipy L_BFGS_B       : 5303.357414151271         N_evals : 231
        Minuit Migrad        : 5301.613317480257         N_evals : 2567

Function :  func_23
        L_BFGS_B N=1         : 3196.044550631877         N_evals : 1320
        L_BFGS_B N=3         : 3310.084307299446         N_evals : 861
        L_BFGS_B N=5         : 3305.6414046536856        N_evals : 1558
        L_BFGS_B N=7         : 3305.931869617404         N_evals : 1098
        Scipy L_BFGS_B       : 4336.113317371275         N_evals : 231
        Minuit Migrad        : 4335.956254094321         N_evals : 2958

Function :  func_24
        L_BFGS_B N=1         : 3362.5756344185006        N_evals : 363
        L_BFGS_B N=3         : 3391.4129561997065        N_evals : 399
        L_BFGS_B N=5         : 3391.3542139049305        N_evals : 533
        L_BFGS_B N=7         : 2584.529944785036         N_evals : 2257
        Scipy L_BFGS_B       : 3392.129125633006         N_evals : 319
        Minuit Migrad        : 3391.7877765995854        N_evals : 3154

Function :  func_25
        L_BFGS_B N=1         : 3154.4831903567733        N_evals : 1078
        L_BFGS_B N=3         : 2969.2016916276375        N_evals : 1008
        L_BFGS_B N=5         : 3056.558558576658         N_evals : 2419
        L_BFGS_B N=7         : 2950.3846921376985        N_evals : 2013
        Scipy L_BFGS_B       : 4820.573795823135         N_evals : 572
        Minuit Migrad        : 4821.2534566023505        N_evals : 2781

Function :  func_26
        L_BFGS_B N=1         : 5728.3002923032445        N_evals : 308
        L_BFGS_B N=3         : 5732.896625947583         N_evals : 588
        L_BFGS_B N=5         : 4574.305895566096         N_evals : 2460
        L_BFGS_B N=7         : 4410.8084223835895        N_evals : 1830
        Scipy L_BFGS_B       : 5733.703548387351         N_evals : 231
        Minuit Migrad        : 5735.049738811465         N_evals : 2979

Function :  func_27
        L_BFGS_B N=1         : 5054.666969580322         N_evals : 143
        L_BFGS_B N=3         : 3951.530784957591         N_evals : 945
        L_BFGS_B N=5         : 3956.277551854312         N_evals : 1435
        L_BFGS_B N=7         : 3226.847408333101         N_evals : 2684
        Scipy L_BFGS_B       : 5055.5021355179015        N_evals : 231
        Minuit Migrad        : 5056.281397858915         N_evals : 2822

Function :  func_28
        L_BFGS_B N=1         : 4503.926363570821         N_evals : 154
        L_BFGS_B N=3         : 4029.863886242149         N_evals : 672
        L_BFGS_B N=5         : 3938.1736640303384        N_evals : 1476
        L_BFGS_B N=7         : 3536.616972799019         N_evals : 1952
        Scipy L_BFGS_B       : 4517.65223076948          N_evals : 231
        Minuit Migrad        : 4517.322248170124         N_evals : 3176

Function :  func_29
        L_BFGS_B N=1         : 3603.841700944226         N_evals : 561
        L_BFGS_B N=3         : 3643.597219936275         N_evals : 819
        L_BFGS_B N=5         : 3484.3719311303507        N_evals : 2337
        L_BFGS_B N=7         : 3624.2686982010464        N_evals : 2196
        Scipy L_BFGS_B       : 48954.829052800764        N_evals : 319
        Minuit Migrad        : 48961.751651433085        N_evals : 3162

Function :  func_30
        L_BFGS_B N=1         : 41445.33250545987         N_evals : 1749
        L_BFGS_B N=3         : 61706.09704284079         N_evals : 1575
        L_BFGS_B N=5         : 130330.37123602019        N_evals : 1353
        L_BFGS_B N=7         : 38115.74563404509         N_evals : 2806
        Scipy L_BFGS_B       : 506043825.00221664        N_evals : 231
        Minuit Migrad        : 506094767.84394735        N_evals : 2725

We observe that with \(N=1\), where \(N\) is the number of points used in the derivative calculation, L-BFGS-B is more robust than both SciPy’s L-BFGS-B and Minuit Migrad. Notably, Minuit Migrad is a variant of the BFGS algorithm that has been widely used in high-energy physics for over 40 years due to its robustness. Our results confirm that Minuit Migrad is generally more robust than SciPy’s L-BFGS-B.

When using higher values of \(N\), we see that \(N=3\) generally improves robustness but also requires more function evaluations. Increasing \(N\) further, such as to \(N=7\), does not provide significant improvements compared to using \(N=3\) or \(N=5\). Based on these findings, we recommend using either \(N=3\) or \(N=5\) as a trade-off between robustness and computational cost.

The number of function evaluations required for computing the function and its derivative, given \(N\), is given by:

\[\text{Function Calls} = 1 + D \cdot (N - 1)\]

where \(D\) is the dimensionality of the problem. These function evaluations are performed in batches to enhance efficiency.

What Happens if the Function is Smooth? To analyze performance in a noise-free setting, we can compare results by setting the noise level to zero.

[4]:
# Counter for function evaluations
N = 0

# Noise ratio for function evaluations (set to zero for noiseless optimization)
noise_ratio = 0.0

# Dictionary to store the number of evaluations per algorithm
N_dict = {}

# Maximum number of function evaluations allowed per optimization run
Nmaxeval = 100000

# Dimensionality of the optimization problem
dimension = 10

# Number of times each function should be tested (repetitions)
NRuns = 1

# The CEC benchmark year to use for function selection

year = 2017

# Dictionary mapping CEC benchmark years to their respective function sets
func_numbers_dict = {
    2022: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
    2020: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    2019: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    2017: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
    2014: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
}

# Retrieve the function numbers for the selected benchmark year
func_numbers = func_numbers_dict[year]

for j in func_numbers:
    test_optimization_noise(j, year, (-100, 100), dimension, "func_"+str(j), Nmaxeval, None)
Function :  func_1
        L_BFGS_B N=1         : 100.02398256308942        N_evals : 1606
        L_BFGS_B N=3         : 100.0000000000275         N_evals : 4599
        L_BFGS_B N=5         : 100.00000896431219        N_evals : 7544
        L_BFGS_B N=7         : 100.00000000000003        N_evals : 8662
        Scipy L_BFGS_B       : 100.00000378925397        N_evals : 341
        Minuit Migrad        : 100.00000013456999        N_evals : 807

Function :  func_2
        L_BFGS_B N=1         : 200.00004454712104        N_evals : 1892
        L_BFGS_B N=3         : 200.00052006824274        N_evals : 4095
        L_BFGS_B N=5         : 200.0001023329348         N_evals : 7175
        L_BFGS_B N=7         : 200.00006574737205        N_evals : 13054
        Scipy L_BFGS_B       : 200.00001564096283        N_evals : 1485
        Minuit Migrad        : 200.0004606097552         N_evals : 10197

Function :  func_3
        L_BFGS_B N=1         : 300.0000000544533         N_evals : 825
        L_BFGS_B N=3         : 300.00000000422597        N_evals : 1155
        L_BFGS_B N=5         : 300.0000000023229         N_evals : 2337
        L_BFGS_B N=7         : 300.0000000000431         N_evals : 3477
        Scipy L_BFGS_B       : 300.0000000071808         N_evals : 517
        Minuit Migrad        : 310.16142874421905        N_evals : 2199

Function :  func_4
        L_BFGS_B N=1         : 400.00000000131575        N_evals : 880
        L_BFGS_B N=3         : 400.0000000004398         N_evals : 1701
        L_BFGS_B N=5         : 400.0000000003594         N_evals : 3321
        L_BFGS_B N=7         : 400.00000000010834        N_evals : 4941
        Scipy L_BFGS_B       : 400.00000012543035        N_evals : 836
        Minuit Migrad        : 400.00003433451946        N_evals : 1322

Function :  func_5
        L_BFGS_B N=1         : 632.3276598030855         N_evals : 187
        L_BFGS_B N=3         : 632.327659803111          N_evals : 336
        L_BFGS_B N=5         : 632.3276598030847         N_evals : 656
        L_BFGS_B N=7         : 632.3276598030811         N_evals : 976
        Scipy L_BFGS_B       : 609.444039532847          N_evals : 264
        Minuit Migrad        : 625.3626773617897         N_evals : 368

Function :  func_6
        L_BFGS_B N=1         : 660.1105187404161         N_evals : 407
        L_BFGS_B N=3         : 660.1105187371116         N_evals : 777
        L_BFGS_B N=5         : 660.1105187379236         N_evals : 1517
        L_BFGS_B N=7         : 660.1105187378288         N_evals : 2257
        Scipy L_BFGS_B       : 666.7173728232046         N_evals : 341
        Minuit Migrad        : 659.0966796744215         N_evals : 478

Function :  func_7
        L_BFGS_B N=1         : 811.2731446622591         N_evals : 143
        L_BFGS_B N=3         : 811.2731446622566         N_evals : 273
        L_BFGS_B N=5         : 811.273144662256          N_evals : 533
        L_BFGS_B N=7         : 811.273144662256          N_evals : 793
        Scipy L_BFGS_B       : 757.7543541560663         N_evals : 198
        Minuit Migrad        : 805.9804012604918         N_evals : 498

Function :  func_8
        L_BFGS_B N=1         : 831.8386141688325         N_evals : 231
        L_BFGS_B N=3         : 831.8386141688252         N_evals : 441
        L_BFGS_B N=5         : 831.8386141688245         N_evals : 861
        L_BFGS_B N=7         : 831.8386141688266         N_evals : 1281
        Scipy L_BFGS_B       : 834.8234863035244         N_evals : 143
        Minuit Migrad        : 831.8386159051811         N_evals : 473

Function :  func_9
        L_BFGS_B N=1         : 1783.2257711241898        N_evals : 451
        L_BFGS_B N=3         : 1783.2257711183734        N_evals : 861
        L_BFGS_B N=5         : 1783.2257711192046        N_evals : 1681
        L_BFGS_B N=7         : 1783.2257711184927        N_evals : 2501
        Scipy L_BFGS_B       : 1783.2257742864276        N_evals : 506
        Minuit Migrad        : 1772.475952140478         N_evals : 452

Function :  func_10
        L_BFGS_B N=1         : 3138.500725531011         N_evals : 198
        L_BFGS_B N=3         : 3138.5007255309515        N_evals : 378
        L_BFGS_B N=5         : 3138.5007255309497        N_evals : 738
        L_BFGS_B N=7         : 3138.500725530949         N_evals : 1098
        Scipy L_BFGS_B       : 3145.6278807220606        N_evals : 484
        Minuit Migrad        : 3534.6345007084915        N_evals : 397

Function :  func_11
        L_BFGS_B N=1         : 1129.8485131973841        N_evals : 880
        L_BFGS_B N=3         : 1129.8485131821917        N_evals : 1701
        L_BFGS_B N=5         : 1129.8485131828988        N_evals : 3280
        L_BFGS_B N=7         : 1129.8485131834577        N_evals : 4636
        Scipy L_BFGS_B       : 1129.8485134911543        N_evals : 891
        Minuit Migrad        : 1179.3176601500613        N_evals : 1580

Function :  func_12
        L_BFGS_B N=1         : 1555.575622184255         N_evals : 3960
        L_BFGS_B N=3         : 1752.7214942307796        N_evals : 16989
        L_BFGS_B N=5         : 1752.717919819736         N_evals : 12054
        L_BFGS_B N=7         : 1318.438335088684         N_evals : 18910
        Scipy L_BFGS_B       : 1318.4540719995828        N_evals : 7205
        Minuit Migrad        : 1569.1753787758512        N_evals : 3339

Function :  func_13
        L_BFGS_B N=1         : 1525.6038557005984        N_evals : 2068
        L_BFGS_B N=3         : 1510.561554246196         N_evals : 10542
        L_BFGS_B N=5         : 1502.5700103688055        N_evals : 20992
        L_BFGS_B N=7         : 1509.4380126725514        N_evals : 24400
        Scipy L_BFGS_B       : 1528.2951368701665        N_evals : 4191
        Minuit Migrad        : 1770.2398304377577        N_evals : 9506

Function :  func_14
        L_BFGS_B N=1         : 1459.899456880726         N_evals : 1133
        L_BFGS_B N=3         : 1468.0059064512106        N_evals : 2352
        L_BFGS_B N=5         : 1441.187050068189         N_evals : 6560
        L_BFGS_B N=7         : 1471.0054074808463        N_evals : 22387
        Scipy L_BFGS_B       : 1537.9896422217955        N_evals : 1903
        Minuit Migrad        : 1616.6134268154333        N_evals : 3029

Function :  func_15
        L_BFGS_B N=1         : 1527.7447452905878        N_evals : 2288
        L_BFGS_B N=3         : 1527.4199197383186        N_evals : 5733
        L_BFGS_B N=5         : 1527.2072088033906        N_evals : 14842
        L_BFGS_B N=7         : 1527.5166939621952        N_evals : 25132
        Scipy L_BFGS_B       : 1527.6881011459805        N_evals : 847
        Minuit Migrad        : 1520.9454273281078        N_evals : 2179

Function :  func_16
        L_BFGS_B N=1         : 2520.90746918958          N_evals : 1331
        L_BFGS_B N=3         : 2520.904402123248         N_evals : 3549
        L_BFGS_B N=5         : 2520.904168423107         N_evals : 3444
        L_BFGS_B N=7         : 2520.9040892580333        N_evals : 11224
        Scipy L_BFGS_B       : 2241.1241959806453        N_evals : 1925
        Minuit Migrad        : 2419.245751883865         N_evals : 1468

Function :  func_17
        L_BFGS_B N=1         : 1944.4497830552393        N_evals : 1045
        L_BFGS_B N=3         : 1886.0749827217617        N_evals : 4893
        L_BFGS_B N=5         : 1941.57267053207          N_evals : 8036
        L_BFGS_B N=7         : 1792.5111895706798        N_evals : 20435
        Scipy L_BFGS_B       : 1933.6464559520484        N_evals : 429
        Minuit Migrad        : 1938.9798885053667        N_evals : 1216

Function :  func_18
        L_BFGS_B N=1         : 1922.623612283958         N_evals : 1969
        L_BFGS_B N=3         : 1863.7656930752505        N_evals : 50967
        L_BFGS_B N=5         : 1867.5161758867   N_evals : 71381
        L_BFGS_B N=7         : 1865.2706079719128        N_evals : 22692
        Scipy L_BFGS_B       : 1924.0588526804445        N_evals : 594
        Minuit Migrad        : 1848.9224272158042        N_evals : 6582

Function :  func_19
        L_BFGS_B N=1         : 1928.4406183352535        N_evals : 1870
        L_BFGS_B N=3         : 2244.2161667218384        N_evals : 10668
        L_BFGS_B N=5         : 1916.441936949231         N_evals : 7708
        L_BFGS_B N=7         : 1924.546301648259         N_evals : 12444
        Scipy L_BFGS_B       : 2252.827886630934         N_evals : 770
        Minuit Migrad        : 1906.068600300467         N_evals : 6300

Function :  func_20
        L_BFGS_B N=1         : 2542.963660592671         N_evals : 891
        L_BFGS_B N=3         : 2477.4392634471305        N_evals : 1764
        L_BFGS_B N=5         : 2530.1130139203287        N_evals : 2501
        L_BFGS_B N=7         : 2444.6789563313364        N_evals : 5551
        Scipy L_BFGS_B       : 2468.9730445583996        N_evals : 1265
        Minuit Migrad        : 2313.558973894199         N_evals : 992

Function :  func_21
        L_BFGS_B N=1         : 2401.4007962969554        N_evals : 242
        L_BFGS_B N=3         : 2401.400796296955         N_evals : 462
        L_BFGS_B N=5         : 2401.4007962969536        N_evals : 902
        L_BFGS_B N=7         : 2401.400796296953         N_evals : 1342
        Scipy L_BFGS_B       : 2473.3073720808443        N_evals : 374
        Minuit Migrad        : 2464.856659805319         N_evals : 457

Function :  func_22
        L_BFGS_B N=1         : 2303.091396163196         N_evals : 924
        L_BFGS_B N=3         : 2330.499024684588         N_evals : 1764
        L_BFGS_B N=5         : 2300.4025742343892        N_evals : 4223
        L_BFGS_B N=7         : 2301.399572772743         N_evals : 5124
        Scipy L_BFGS_B       : 2303.1296740255807        N_evals : 594
        Minuit Migrad        : 2305.521415786339         N_evals : 1701

Function :  func_23
        L_BFGS_B N=1         : 3303.6106937923996        N_evals : 286
        L_BFGS_B N=3         : 3303.610693792294         N_evals : 546
        L_BFGS_B N=5         : 3303.6106937923105        N_evals : 1066
        L_BFGS_B N=7         : 3303.6106937923396        N_evals : 1586
        Scipy L_BFGS_B       : 2750.840641393623         N_evals : 242
        Minuit Migrad        : 3303.610805814556         N_evals : 462

Function :  func_24
        L_BFGS_B N=1         : 2500.0000011397633        N_evals : 1089
        L_BFGS_B N=3         : 2500.000000591825         N_evals : 2100
        L_BFGS_B N=5         : 2500.000000411552         N_evals : 4100
        L_BFGS_B N=7         : 2500.0000005299876        N_evals : 6100
        Scipy L_BFGS_B       : 2500.0000072289445        N_evals : 847
        Minuit Migrad        : 2500.0000007857134        N_evals : 2776

Function :  func_25
        L_BFGS_B N=1         : 2945.271339208847         N_evals : 572
        L_BFGS_B N=3         : 2948.1795932334876        N_evals : 1176
        L_BFGS_B N=5         : 2949.0499132755917        N_evals : 3198
        L_BFGS_B N=7         : 2945.67871552043          N_evals : 3294
        Scipy L_BFGS_B       : 2948.935880615545         N_evals : 660
        Minuit Migrad        : 2951.002076470935         N_evals : 1320

Function :  func_26
        L_BFGS_B N=1         : 4988.0558324628   N_evals : 484
        L_BFGS_B N=3         : 4988.055832462341         N_evals : 966
        L_BFGS_B N=5         : 4988.055832462418         N_evals : 1886
        L_BFGS_B N=7         : 4988.055832462322         N_evals : 2806
        Scipy L_BFGS_B       : 4562.724102838574         N_evals : 253
        Minuit Migrad        : 5078.129098441988         N_evals : 719

Function :  func_27
        L_BFGS_B N=1         : 3232.2396002264413        N_evals : 1144
        L_BFGS_B N=3         : 3256.58810557674          N_evals : 2835
        L_BFGS_B N=5         : 3256.754201891588         N_evals : 10865
        L_BFGS_B N=7         : 3256.4686727176354        N_evals : 6832
        Scipy L_BFGS_B       : 3456.8140904109837        N_evals : 990
        Minuit Migrad        : 3353.1642408483526        N_evals : 705

Function :  func_28
        L_BFGS_B N=1         : 3383.7340416205266        N_evals : 396
        L_BFGS_B N=3         : 3383.73404149784          N_evals : 756
        L_BFGS_B N=5         : 3383.7340414981254        N_evals : 1476
        L_BFGS_B N=7         : 3383.734041498007         N_evals : 2196
        Scipy L_BFGS_B       : 3383.73404149896          N_evals : 352
        Minuit Migrad        : 3383.7340421882604        N_evals : 1060

Function :  func_29
        L_BFGS_B N=1         : 3756.5489518876275        N_evals : 5357
        L_BFGS_B N=3         : 3934.790666639695         N_evals : 1911
        L_BFGS_B N=5         : 3655.04671666182          N_evals : 5617
        L_BFGS_B N=7         : 3366.436030712041         N_evals : 13359
        Scipy L_BFGS_B       : 3534.929799633869         N_evals : 715
        Minuit Migrad        : 3364.2163951595076        N_evals : 5487

Function :  func_30
        L_BFGS_B N=1         : 4075.492082178477         N_evals : 2915
        L_BFGS_B N=3         : 4405.035270004914         N_evals : 11109
        L_BFGS_B N=5         : 3857.0582696208703        N_evals : 27183
        L_BFGS_B N=7         : 3926.1055706308184        N_evals : 12566
        Scipy L_BFGS_B       : 6079.671641683394         N_evals : 704
        Minuit Migrad        : 3798.591501375632         N_evals : 16769

We can see that using higher \(N\) does not improves the performance. Therefore, for smooth function, \(N=1\) can be safely used.

Performance of Minion’s L-BFGS-B at Different Noise Levels

In this section, we compare the performance of various algorithms implemented in Minion against their counterparts in other libraries, such as SciPy and Minuit. The test function used is the CEC2017 benchmark function with a dimensionality of \(D = 10\).

Noise Level : 0.01

[5]:
# Counter for function evaluations
N = 0

# Noise ratio for function evaluations (set to zero for noiseless optimization)
noise_ratio = 0.01

# Dictionary to store the number of evaluations per algorithm
N_dict = {}

# Maximum number of function evaluations allowed per optimization run
Nmaxeval = 100000

# Dimensionality of the optimization problem
dimension = 10

# Number of times each function should be tested (repetitions)
NRuns = 1

# The CEC benchmark year to use for function selection
year = 2017

# Dictionary mapping CEC benchmark years to their respective function sets
func_numbers_dict = {
    2022: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
    2020: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    2019: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    2017: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
    2014: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
}

# Retrieve the function numbers for the selected benchmark year
func_numbers = func_numbers_dict[year]

# Using a thread pool to execute optimization tasks in parallel
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
    futures = []  # List to store future objects representing scheduled tasks

    # Run optimization tests multiple times (for averaging results)
    for k in range(NRuns):
        for j in func_numbers:
            # Submit the optimization test function to the thread pool
            futures.append(executor.submit(run_test_optimization, j, dimension, year, k, Nmaxeval))

    # Wait for all submitted tasks to complete
    concurrent.futures.wait(futures)

    # Retrieve and process results (ensure all threads completed successfully)
    for f in futures:
        f.result()
Function :  func_1
        ARRDE                : 96.14500824080655         N_evals : 100001
        NelderMead           : 28781555966.10401         N_evals : 100004
        L_BFGS_B             : 28967438775.199284        N_evals : 840
        DA                   : 5113975922.803988         N_evals : 692
        L_BFGS               : 28865169796.73007         N_evals : 2248
        Scipy L_BFGS_B       : 29810515848.013885        N_evals : 473
        Scipy DA             : 5320.809024888155         N_evals : 42496
        Scipy NelderMead     : 28759989544.4244          N_evals : 100000
        Minuit Migrad        : 29680648551.424717        N_evals : 1925

Function :  func_2
        ARRDE                : 192.58329019913305        N_evals : 100001
        NelderMead           : 8.447333218842839e+17     N_evals : 100006
        L_BFGS_B             : 8.565955970799781e+17     N_evals : 420
        DA                   : 42192.830378741295        N_evals : 3922
        L_BFGS               : 8.69791903763521e+17      N_evals : 1492
        Scipy L_BFGS_B       : 8.869895529204933e+17     N_evals : 572
        Scipy DA             : 233.8625794039842         N_evals : 47072
        Scipy NelderMead     : 8.477604248846289e+17     N_evals : 100000
        Minuit Migrad        : 8.798324478066792e+17     N_evals : 2024

Function :  func_3
        ARRDE                : 287.4965399144453         N_evals : 100001
        NelderMead           : 18821.918746154282        N_evals : 100000
        L_BFGS_B             : 19726.129770703963        N_evals : 651
        DA                   : 18995.00321869129         N_evals : 420
        L_BFGS               : 19654.414088322348        N_evals : 2500
        Scipy L_BFGS_B       : 1335916.010880301         N_evals : 187
        Scipy DA             : 1924.8100349993797        N_evals : 42353
        Scipy NelderMead     : 1278483.3816739887        N_evals : 100000
        Minuit Migrad        : 1335470.4368372173        N_evals : 2115

Function :  func_4
        ARRDE                : 391.07606485496063        N_evals : 100001
        NelderMead           : 5652.575013229248         N_evals : 100002
        L_BFGS_B             : 5752.615266181691         N_evals : 315
        DA                   : 560.9198812887292         N_evals : 2157
        L_BFGS               : 5692.775189842742         N_evals : 4579
        Scipy L_BFGS_B       : 5943.196230914059         N_evals : 231
        Scipy DA             : 455.5385536805661         N_evals : 30539
        Scipy NelderMead     : 5624.5501979498395        N_evals : 100000
        Minuit Migrad        : 5870.843558614708         N_evals : 1686

Function :  func_5
        ARRDE                : 483.75302068485047        N_evals : 100001
        NelderMead           : 696.5219212979883         N_evals : 100001
        L_BFGS_B             : 695.9299195245201         N_evals : 336
        DA                   : 516.9621907576694         N_evals : 895
        L_BFGS               : 698.6106819544395         N_evals : 3088
        Scipy L_BFGS_B       : 712.4361427953191         N_evals : 231
        Scipy DA             : 520.544686299642          N_evals : 24654
        Scipy NelderMead     : 693.9872347412413         N_evals : 100000
        Minuit Migrad        : 740.5971847096357         N_evals : 1829

Function :  func_6
        ARRDE                : 579.6308730996701         N_evals : 100001
        NelderMead           : 705.5455509664185         N_evals : 100000
        L_BFGS_B             : 714.6522996024515         N_evals : 273
        DA                   : 631.7040809432958         N_evals : 1151
        L_BFGS               : 710.31748475886   N_evals : 2290
        Scipy L_BFGS_B       : 733.9629313309979         N_evals : 308
        Scipy DA             : 592.618219858021          N_evals : 24302
        Scipy NelderMead     : 710.7503507335866         N_evals : 100000
        Minuit Migrad        : 737.0811540268232         N_evals : 1791

Function :  func_7
        ARRDE                : 698.4699708745328         N_evals : 100001
        NelderMead           : 899.1208561959041         N_evals : 100010
        L_BFGS_B             : 911.8524053320186         N_evals : 273
        DA                   : 793.4969247112754         N_evals : 1862
        L_BFGS               : 907.7076915244139         N_evals : 3067
        Scipy L_BFGS_B       : 943.0594016509012         N_evals : 363
        Scipy DA             : 716.3846827827256         N_evals : 26777
        Scipy NelderMead     : 901.4395912155758         N_evals : 100000
        Minuit Migrad        : 949.568290377941          N_evals : 2277

Function :  func_8
        ARRDE                : 773.6353987127446         N_evals : 100001
        NelderMead           : 908.2336903968348         N_evals : 100000
        L_BFGS_B             : 908.3225821420784         N_evals : 357
        DA                   : 844.1891585552704         N_evals : 729
        L_BFGS               : 913.1677208799299         N_evals : 2059
        Scipy L_BFGS_B       : 958.6618981773728         N_evals : 363
        Scipy DA             : 795.5743973944996         N_evals : 25996
        Scipy NelderMead     : 906.1708278220067         N_evals : 100000
        Minuit Migrad        : 945.2971044708131         N_evals : 1477

Function :  func_9
        ARRDE                : 866.6130036821643         N_evals : 100001
        NelderMead           : 2767.144557627401         N_evals : 100003
        L_BFGS_B             : 4204.942511544154         N_evals : 252
        DA                   : 2128.129412815492         N_evals : 293
        L_BFGS               : 3427.6445361801784        N_evals : 2038
        Scipy L_BFGS_B       : 4341.130965074682         N_evals : 308
        Scipy DA             : 894.6862518241155         N_evals : 29483
        Scipy NelderMead     : 4113.7204034309025        N_evals : 100000
        Minuit Migrad        : 4324.004865893925         N_evals : 2208

Function :  func_10
        ARRDE                : 1087.0675411179802        N_evals : 100001
        NelderMead           : 5868.3675092089425        N_evals : 100011
        L_BFGS_B             : 5967.651462096054         N_evals : 609
        DA                   : 3385.7940395718642        N_evals : 881
        L_BFGS               : 5180.087053786555         N_evals : 2500
        Scipy L_BFGS_B       : 6163.469336724759         N_evals : 308
        Scipy DA             : 1121.8391515082517        N_evals : 30209
        Scipy NelderMead     : 5865.626910524954         N_evals : 100000
        Minuit Migrad        : 6088.193404294518         N_evals : 2030

Function :  func_11
        ARRDE                : 1064.7321934773895        N_evals : 100001
        NelderMead           : 61909058.11036966         N_evals : 100001
        L_BFGS_B             : 64175724.88485202         N_evals : 273
        DA                   : 16136.594023001253        N_evals : 692
        L_BFGS               : 62463539.55323469         N_evals : 2584
        Scipy L_BFGS_B       : 65412133.96728243         N_evals : 308
        Scipy DA             : 1115.295079893644         N_evals : 26414
        Scipy NelderMead     : 62197640.30685213         N_evals : 100000
        Minuit Migrad        : 64395710.62577742         N_evals : 2300

Function :  func_12
        ARRDE                : 1259.9849841536286        N_evals : 100001
        NelderMead           : 5474882447.733411         N_evals : 100004
        L_BFGS_B             : 5569954261.184121         N_evals : 252
        DA                   : 1088944784.5250936        N_evals : 1301
        L_BFGS               : 5491794855.379209         N_evals : 5146
        Scipy L_BFGS_B       : 5791810169.207424         N_evals : 352
        Scipy DA             : 1156898.510071128         N_evals : 42199
        Scipy NelderMead     : 5438134950.588422         N_evals : 100000
        Minuit Migrad        : 5675018961.328545         N_evals : 1967

Function :  func_13
        ARRDE                : 1267.5791956841892        N_evals : 100001
        NelderMead           : 2702447440.6011066        N_evals : 100004
        L_BFGS_B             : 2763741999.544866         N_evals : 231
        DA                   : 3599.6050632160814        N_evals : 1949
        L_BFGS               : 2751496258.0592146        N_evals : 2269
        Scipy L_BFGS_B       : 2890761527.9478974        N_evals : 231
        Scipy DA             : 19427.97045434872         N_evals : 33421
        Scipy NelderMead     : 2715762636.978418         N_evals : 100000
        Minuit Migrad        : 2853128265.688296         N_evals : 2296

Function :  func_14
        ARRDE                : 1380.9891612110468        N_evals : 100001
        NelderMead           : 2117716341.5269456        N_evals : 100008
        L_BFGS_B             : 2148739330.387049         N_evals : 252
        DA                   : 2178.279972531049         N_evals : 922
        L_BFGS               : 2146137922.5806398        N_evals : 3130
        Scipy L_BFGS_B       : 2242140644.119217         N_evals : 352
        Scipy DA             : 2168.6652092686422        N_evals : 27756
        Scipy NelderMead     : 2113061793.0732186        N_evals : 100000
        Minuit Migrad        : 2180528138.072782         N_evals : 1869

Function :  func_15
        ARRDE                : 1454.1346243706937        N_evals : 100001
        NelderMead           : 737914285.1579087         N_evals : 100000
        L_BFGS_B             : 751532551.7846527         N_evals : 210
        DA                   : 6302.8192936027135        N_evals : 1529
        L_BFGS               : 743539159.3756969         N_evals : 5629
        Scipy L_BFGS_B       : 768034925.4049824         N_evals : 308
        Scipy DA             : 1932.7059046062716        N_evals : 28548
        Scipy NelderMead     : 739329318.2195171         N_evals : 100000
        Minuit Migrad        : 767821280.100491          N_evals : 2165

Function :  func_16
        ARRDE                : 1547.790672175538         N_evals : 100001
        NelderMead           : 3299.6384748465694        N_evals : 100003
        L_BFGS_B             : 3304.422155093566         N_evals : 252
        DA                   : 2305.336670781815         N_evals : 566
        L_BFGS               : 3335.746718360755         N_evals : 1807
        Scipy L_BFGS_B       : 3502.1020405912996        N_evals : 341
        Scipy DA             : 1696.9234167567517        N_evals : 29362
        Scipy NelderMead     : 3284.4385217890494        N_evals : 100000
        Minuit Migrad        : 3459.2065301316   N_evals : 1971

Function :  func_17
        ARRDE                : 1669.1858385208734        N_evals : 100001
        NelderMead           : 3150.7791526591836        N_evals : 100008
        L_BFGS_B             : 2746.4049619646935        N_evals : 693
        DA                   : 1881.8736307083773        N_evals : 2095
        L_BFGS               : 2634.974369171859         N_evals : 3361
        Scipy L_BFGS_B       : 3331.9028000540184        N_evals : 231
        Scipy DA             : 1725.2863252085579        N_evals : 27503
        Scipy NelderMead     : 3109.0230172921874        N_evals : 100000
        Minuit Migrad        : 3306.010140420297         N_evals : 2203

Function :  func_18
        ARRDE                : 1761.973026068344         N_evals : 100001
        NelderMead           : 13857019683.88416         N_evals : 100002
        L_BFGS_B             : 13645639559.98466         N_evals : 588
        DA                   : 1897.728021312651         N_evals : 1006
        L_BFGS               : 13996791197.33713         N_evals : 1366
        Scipy L_BFGS_B       : 14368245828.291199        N_evals : 231
        Scipy DA             : 28116.247703803645        N_evals : 34037
        Scipy NelderMead     : 13873557905.821062        N_evals : 100000
        Minuit Migrad        : 14336666727.456545        N_evals : 1850

Function :  func_19
        ARRDE                : 1837.3104601311254        N_evals : 100001
        NelderMead           : 11776053810.051067        N_evals : 100011
        L_BFGS_B             : 11187425238.916925        N_evals : 336
        DA                   : 7422.225078358791         N_evals : 1425
        L_BFGS               : 11911337294.911367        N_evals : 3109
        Scipy L_BFGS_B       : 12275008980.500183        N_evals : 341
        Scipy DA             : 1910.4201568917051        N_evals : 29615
        Scipy NelderMead     : 11737776360.577524        N_evals : 100000
        Minuit Migrad        : 12256931172.742105        N_evals : 2047

Function :  func_20
        ARRDE                : 1945.3345561522842        N_evals : 100001
        NelderMead           : 3022.999679595879         N_evals : 100000
        L_BFGS_B             : 3056.1984831945615        N_evals : 252
        DA                   : 2479.5024932469287        N_evals : 1087
        L_BFGS               : 3072.9005808822467        N_evals : 1807
        Scipy L_BFGS_B       : 3142.5863442942373        N_evals : 407
        Scipy DA             : 2046.2889627196816        N_evals : 26403
        Scipy NelderMead     : 3016.166117643164         N_evals : 100000
        Minuit Migrad        : 3111.3045923529876        N_evals : 1950

Function :  func_21
        ARRDE                : 2124.851517587839         N_evals : 100001
        NelderMead           : 2696.6759692372193        N_evals : 100007
        L_BFGS_B             : 2762.786560614329         N_evals : 231
        DA                   : 2313.3987032893683        N_evals : 1415
        L_BFGS               : 2722.3678862641254        N_evals : 2017
        Scipy L_BFGS_B       : 2876.589925726302         N_evals : 231
        Scipy DA             : 2282.644136813161         N_evals : 23301
        Scipy NelderMead     : 2699.09777240641          N_evals : 100000
        Minuit Migrad        : 2826.6328114516   N_evals : 1702

Function :  func_22
        ARRDE                : 2224.970354964689         N_evals : 100001
        NelderMead           : 5057.5457442588   N_evals : 100001
        L_BFGS_B             : 5183.719834655984         N_evals : 441
        DA                   : 2663.0540669368934        N_evals : 524
        L_BFGS               : 5004.227752177511         N_evals : 1513
        Scipy L_BFGS_B       : 5320.680674933006         N_evals : 231
        Scipy DA             : 2173.602001373622         N_evals : 30011
        Scipy NelderMead     : 5067.831033895511         N_evals : 100000
        Minuit Migrad        : 5407.314668805562         N_evals : 1893

Function :  func_23
        ARRDE                : 2563.9890460289516        N_evals : 100001
        NelderMead           : 4151.105685319582         N_evals : 100009
        L_BFGS_B             : 4259.9110055356705        N_evals : 294
        DA                   : 2702.993621842106         N_evals : 1802
        L_BFGS               : 3902.0277956655805        N_evals : 5335
        Scipy L_BFGS_B       : 4300.752622713925         N_evals : 308
        Scipy DA             : 2579.9121741824147        N_evals : 24775
        Scipy NelderMead     : 4141.219886663614         N_evals : 100000
        Minuit Migrad        : 4313.454690358024         N_evals : 1866

Function :  func_24
        ARRDE                : 2653.729865872492         N_evals : 100001
        NelderMead           : 3253.9045574077168        N_evals : 100000
        L_BFGS_B             : 3305.6937039075515        N_evals : 210
        DA                   : 2833.3574246078897        N_evals : 775
        L_BFGS               : 3272.572098334315         N_evals : 1660
        Scipy L_BFGS_B       : 3389.660250658994         N_evals : 341
        Scipy DA             : 2691.196153365553         N_evals : 27624
        Scipy NelderMead     : 3248.889125468214         N_evals : 100000
        Minuit Migrad        : 3371.367553918787         N_evals : 1993

Function :  func_25
        ARRDE                : 2798.0286922642044        N_evals : 100001
        NelderMead           : 4613.034027383975         N_evals : 100006
        L_BFGS_B             : 4696.782277868795         N_evals : 273
        DA                   : 3701.4727186211876        N_evals : 818
        L_BFGS               : 4640.089929195702         N_evals : 2542
        Scipy L_BFGS_B       : 4791.988860622819         N_evals : 253
        Scipy DA             : 2910.559094136426         N_evals : 24643
        Scipy NelderMead     : 4608.642421193324         N_evals : 100000
        Minuit Migrad        : 4785.307617953976         N_evals : 1892

Function :  func_26
        ARRDE                : 2793.7404559345846        N_evals : 100001
        NelderMead           : 5494.5697684543475        N_evals : 100009
        L_BFGS_B             : 5564.6024815244045        N_evals : 252
        DA                   : 3921.020001666365         N_evals : 1258
        L_BFGS               : 5532.779334836229         N_evals : 2185
        Scipy L_BFGS_B       : 5804.050130513668         N_evals : 231
        Scipy DA             : 2965.9775548966936        N_evals : 29769
        Scipy NelderMead     : 5477.879805138335         N_evals : 100000
        Minuit Migrad        : 5753.802795682974         N_evals : 1959

Function :  func_27
        ARRDE                : 2983.0851057002487        N_evals : 100001
        NelderMead           : 4830.379947576686         N_evals : 100001
        L_BFGS_B             : 4902.965666670947         N_evals : 252
        DA                   : 3163.058330776724         N_evals : 1741
        L_BFGS               : 4844.572637778677         N_evals : 1555
        Scipy L_BFGS_B       : 5084.407918244782         N_evals : 231
        Scipy DA             : 3057.4946115233465        N_evals : 24313
        Scipy NelderMead     : 4855.298042539701         N_evals : 100000
        Minuit Migrad        : 5055.903105957959         N_evals : 2360

Function :  func_28
        ARRDE                : 3261.327997627691         N_evals : 100001
        NelderMead           : 4311.2932970163365        N_evals : 100007
        L_BFGS_B             : 4414.506027519723         N_evals : 231
        DA                   : 3827.305445595818         N_evals : 733
        L_BFGS               : 3225.203083887092         N_evals : 1345
        Scipy L_BFGS_B       : 4544.575656603258         N_evals : 363
        Scipy DA             : 3160.773084782499         N_evals : 25985
        Scipy NelderMead     : 4317.634129256602         N_evals : 100000
        Minuit Migrad        : 4467.842747366673         N_evals : 1926

Function :  func_29
        ARRDE                : 3051.5313834856497        N_evals : 100001
        NelderMead           : 46768.93870454843         N_evals : 100010
        L_BFGS_B             : 47587.29297401729         N_evals : 252
        DA                   : 3384.639653804074         N_evals : 1256
        L_BFGS               : 42242.93137836483         N_evals : 3823
        Scipy L_BFGS_B       : 49592.75606932816         N_evals : 352
        Scipy DA             : 3221.0350195716433        N_evals : 23202
        Scipy NelderMead     : 46924.90989955847         N_evals : 100000
        Minuit Migrad        : 48941.838771386334        N_evals : 2025

Function :  func_30
        ARRDE                : 3311.4403163794614        N_evals : 100001
        NelderMead           : 484404880.54370075        N_evals : 100011
        L_BFGS_B             : 492586138.81384337        N_evals : 252
        DA                   : 17489265.61321617         N_evals : 2223
        L_BFGS               : 481131763.8977043         N_evals : 2248
        Scipy L_BFGS_B       : 504626216.49871963        N_evals : 297
        Scipy DA             : 1168538.4207416116        N_evals : 37106
        Scipy NelderMead     : 484099814.7741773         N_evals : 100000
        Minuit Migrad        : 505280332.85369766        N_evals : 2251

Noise Level: 0.0001

[6]:
# Noise ratio for function evaluations (set to zero for noiseless optimization)
noise_ratio = 1e-4

# Using a thread pool to execute optimization tasks in parallel
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
    futures = []  # List to store future objects representing scheduled tasks

    # Run optimization tests multiple times (for averaging results)
    for k in range(NRuns):
        for j in func_numbers:
            # Submit the optimization test function to the thread pool
            futures.append(executor.submit(run_test_optimization, j, dimension, year, k, Nmaxeval))

    # Wait for all submitted tasks to complete
    concurrent.futures.wait(futures)

    # Retrieve and process results (ensure all threads completed successfully)
    for f in futures:
        f.result()
Function :  func_1
        ARRDE                : 99.95899815053443         N_evals : 100001
        NelderMead           : 2407.7525846009025        N_evals : 100001
        L_BFGS_B             : 600.3019071324612         N_evals : 567
        DA                   : 2677066.818947051         N_evals : 441
        L_BFGS               : 1169.7275416547363        N_evals : 2710
        Scipy L_BFGS_B       : 29974660155.091305        N_evals : 385
        Scipy DA             : 4691.9889455203065        N_evals : 47182
        Scipy NelderMead     : 29960364925.435005        N_evals : 100000
        Minuit Migrad        : 29967592215.33604         N_evals : 2567

Function :  func_2
        ARRDE                : 199.92178939827895        N_evals : 100001
        NelderMead           : 214.4889254015269         N_evals : 100009
        L_BFGS_B             : 200.04925476669797        N_evals : 2793
        DA                   : 199.97762269241196        N_evals : 3860
        L_BFGS               : 7.569347374571962e+17     N_evals : 1366
        Scipy L_BFGS_B       : 8.870091554697796e+17     N_evals : 352
        Scipy DA             : 199.9512605994332         N_evals : 58864
        Scipy NelderMead     : 8.865748986110458e+17     N_evals : 100000
        Minuit Migrad        : 2.181153758966794e+17     N_evals : 2997

Function :  func_3
        ARRDE                : 299.8958279604248         N_evals : 100001
        NelderMead           : 299.8899981480736         N_evals : 100002
        L_BFGS_B             : 300.14615804537294        N_evals : 1995
        DA                   : 300.1343445724379         N_evals : 3150
        L_BFGS               : 442.94307620433534        N_evals : 3844
        Scipy L_BFGS_B       : 1343158.5624858413        N_evals : 264
        Scipy DA             : 583.036997428009          N_evals : 100000
        Scipy NelderMead     : 1340250.9303625152        N_evals : 100000
        Minuit Migrad        : 980906.5040135984         N_evals : 2696

Function :  func_4
        ARRDE                : 399.8613127300937         N_evals : 100001
        NelderMead           : 473.1536660863839         N_evals : 100008
        L_BFGS_B             : 461.8745330949163         N_evals : 714
        DA                   : 406.08095631115395        N_evals : 3405
        L_BFGS               : 407.5773724475362         N_evals : 3886
        Scipy L_BFGS_B       : 5903.188947874172         N_evals : 231
        Scipy DA             : 406.862483149068          N_evals : 37326
        Scipy NelderMead     : 5899.1213368352755        N_evals : 100000
        Minuit Migrad        : 5901.71964100489          N_evals : 2734

Function :  func_5
        ARRDE                : 501.82937540552444        N_evals : 100001
        NelderMead           : 633.444712080834          N_evals : 100003
        L_BFGS_B             : 651.6063871479922         N_evals : 2142
        DA                   : 516.9829609684837         N_evals : 1107
        L_BFGS               : 649.5174790448466         N_evals : 2101
        Scipy L_BFGS_B       : 726.6615536791008         N_evals : 308
        Scipy DA             : 514.8306138128169         N_evals : 37524
        Scipy NelderMead     : 726.4138160075651         N_evals : 100000
        Minuit Migrad        : 565.3338919317415         N_evals : 3255

Function :  func_6
        ARRDE                : 599.8057507910409         N_evals : 100001
        NelderMead           : 661.6272914190051         N_evals : 100010
        L_BFGS_B             : 682.5644581852085         N_evals : 399
        DA                   : 612.6807316972969         N_evals : 3850
        L_BFGS               : 676.9730248348293         N_evals : 4768
        Scipy L_BFGS_B       : 741.8747696465413         N_evals : 319
        Scipy DA             : 600.0797222385648         N_evals : 46742
        Scipy NelderMead     : 741.4192539739555         N_evals : 100000
        Minuit Migrad        : 650.5257602454149         N_evals : 3042

Function :  func_7
        ARRDE                : 711.3790719333858         N_evals : 100001
        NelderMead           : 811.0212970233881         N_evals : 100008
        L_BFGS_B             : 811.6113907512325         N_evals : 987
        DA                   : 831.7438002189331         N_evals : 730
        L_BFGS               : 797.7147230927651         N_evals : 3088
        Scipy L_BFGS_B       : 939.7213247932823         N_evals : 374
        Scipy DA             : 719.2361894426933         N_evals : 34785
        Scipy NelderMead     : 939.3217602861848         N_evals : 100000
        Minuit Migrad        : 939.8784433980345         N_evals : 2858

Function :  func_8
        ARRDE                : 801.7030253753164         N_evals : 100001
        NelderMead           : 834.8131714525725         N_evals : 100011
        L_BFGS_B             : 872.4404409128356         N_evals : 1029
        DA                   : 809.0307288807455         N_evals : 2489
        L_BFGS               : 825.6964030288323         N_evals : 4726
        Scipy L_BFGS_B       : 946.696472207817          N_evals : 231
        Scipy DA             : 817.8490364177735         N_evals : 34873
        Scipy NelderMead     : 946.1009339457577         N_evals : 100000
        Minuit Migrad        : 946.6547189041688         N_evals : 2754

Function :  func_9
        ARRDE                : 899.6999471355191         N_evals : 100001
        NelderMead           : 1783.2135930280474        N_evals : 100000
        L_BFGS_B             : 1783.6875469984966        N_evals : 1239
        DA                   : 1681.8278519319983        N_evals : 713
        L_BFGS               : 1831.9823157152264        N_evals : 2248
        Scipy L_BFGS_B       : 4306.872052207069         N_evals : 231
        Scipy DA             : 907.2746548238719         N_evals : 34279
        Scipy NelderMead     : 4303.771372983138         N_evals : 100000
        Minuit Migrad        : 4305.53425283089          N_evals : 2785

Function :  func_10
        ARRDE                : 1009.8650542902807        N_evals : 100001
        NelderMead           : 3159.150716963664         N_evals : 100000
        L_BFGS_B             : 3061.4378350050642        N_evals : 903
        DA                   : 2754.8847965969417        N_evals : 963
        L_BFGS               : 3360.252171036165         N_evals : 2920
        Scipy L_BFGS_B       : 6139.069724734058         N_evals : 231
        Scipy DA             : 1466.6820332733453        N_evals : 38206
        Scipy NelderMead     : 6135.691154488223         N_evals : 100000
        Minuit Migrad        : 6137.267985319764         N_evals : 2664

Function :  func_11
        ARRDE                : 1099.767380630948         N_evals : 100001
        NelderMead           : 1136.2580194112743        N_evals : 100011
        L_BFGS_B             : 1154.7520295533122        N_evals : 1113
        DA                   : 1120.0151630561875        N_evals : 3262
        L_BFGS               : 1131.1966472118484        N_evals : 3214
        Scipy L_BFGS_B       : 65021268.69077844         N_evals : 275
        Scipy DA             : 1103.304271343442         N_evals : 43013
        Scipy NelderMead     : 65000482.2930928          N_evals : 100000
        Minuit Migrad        : 2464.042585210315         N_evals : 3156

Function :  func_12
        ARRDE                : 1199.6572074860114        N_evals : 100001
        NelderMead           : 19293.335667336618        N_evals : 100000
        L_BFGS_B             : 4893.144603357259         N_evals : 609
        DA                   : 8544.292481418343         N_evals : 2385
        L_BFGS               : 10494.560622960898        N_evals : 1828
        Scipy L_BFGS_B       : 5720932101.179209         N_evals : 231
        Scipy DA             : 1504449.8415956723        N_evals : 100000
        Scipy NelderMead     : 5718627967.3668585        N_evals : 100000
        Minuit Migrad        : 5720528750.631125         N_evals : 3091

Function :  func_13
        ARRDE                : 1299.897575577077         N_evals : 100001
        NelderMead           : 14002.396518280202        N_evals : 100001
        L_BFGS_B             : 14821.370867834636        N_evals : 399
        DA                   : 4418.823141153136         N_evals : 3244
        L_BFGS               : 14675.71320412019         N_evals : 2500
        Scipy L_BFGS_B       : 2841310159.6170692        N_evals : 297
        Scipy DA             : 1326.1386203785758        N_evals : 42672
        Scipy NelderMead     : 2840375271.5309415        N_evals : 100000
        Minuit Migrad        : 2840427155.6437044        N_evals : 2680

Function :  func_14
        ARRDE                : 1400.5140836798942        N_evals : 100001
        NelderMead           : 7839.094292880486         N_evals : 100010
        L_BFGS_B             : 6517.953911757977         N_evals : 294
        DA                   : 1484.7336254930235        N_evals : 3027
        L_BFGS               : 7423.840634006795         N_evals : 3466
        Scipy L_BFGS_B       : 2215729363.6590214        N_evals : 231
        Scipy DA             : 2228.546881743041         N_evals : 52726
        Scipy NelderMead     : 2214378359.472759         N_evals : 100000
        Minuit Migrad        : 2215509660.6270657        N_evals : 3107

Function :  func_15
        ARRDE                : 1499.8892600698484        N_evals : 100001
        NelderMead           : 23826.752591350218        N_evals : 100000
        L_BFGS_B             : 15805.352726357169        N_evals : 609
        DA                   : 5712.716652289194         N_evals : 1882
        L_BFGS               : 23501.59521033052         N_evals : 2437
        Scipy L_BFGS_B       : 769611066.0262285         N_evals : 231
        Scipy DA             : 3466.8512716282967        N_evals : 46654
        Scipy NelderMead     : 769216957.6502163         N_evals : 100000
        Minuit Migrad        : 769531514.9369435         N_evals : 2685

Function :  func_16
        ARRDE                : 1600.534708405976         N_evals : 100001
        NelderMead           : 2350.4018334576153        N_evals : 100000
        L_BFGS_B             : 2468.5294559383856        N_evals : 1176
        DA                   : 2200.135243873384         N_evals : 2990
        L_BFGS               : 2558.5970623457774        N_evals : 2668
        Scipy L_BFGS_B       : 3438.171069053829         N_evals : 330
        Scipy DA             : 1746.3472594017885        N_evals : 40186
        Scipy NelderMead     : 3436.1979510789483        N_evals : 100000
        Minuit Migrad        : 3437.7989958662056        N_evals : 2508

Function :  func_17
        ARRDE                : 1699.761400033756         N_evals : 100001
        NelderMead           : 2653.129531972965         N_evals : 100000
        L_BFGS_B             : 1822.1096936062293        N_evals : 966
        DA                   : 1949.2612616543067        N_evals : 5295
        L_BFGS               : 2059.6635824326636        N_evals : 2374
        Scipy L_BFGS_B       : 3282.6895834541638        N_evals : 429
        Scipy DA             : 1721.579814709872         N_evals : 41891
        Scipy NelderMead     : 3281.6197164510845        N_evals : 100000
        Minuit Migrad        : 3283.1120727878006        N_evals : 2687

Function :  func_18
        ARRDE                : 1799.908898807996         N_evals : 100001
        NelderMead           : 9825.135559644668         N_evals : 100001
        L_BFGS_B             : 3380.786294003689         N_evals : 504
        DA                   : 1892.7291355909451        N_evals : 3067
        L_BFGS               : 6653.457329483051         N_evals : 3319
        Scipy L_BFGS_B       : 14468258075.365196        N_evals : 297
        Scipy DA             : 5672.70683289569          N_evals : 42683
        Scipy NelderMead     : 14462646057.573866        N_evals : 100000
        Minuit Migrad        : 14466474053.582438        N_evals : 2958

Function :  func_19
        ARRDE                : 1900.378461440789         N_evals : 100001
        NelderMead           : 455987.68776403274        N_evals : 100009
        L_BFGS_B             : 4373.830054500769         N_evals : 1092
        DA                   : 2594.249387706259         N_evals : 3731
        L_BFGS               : 2298.966362893599         N_evals : 4768
        Scipy L_BFGS_B       : 12289766008.231869        N_evals : 231
        Scipy DA             : 2285.4363842378284        N_evals : 38745
        Scipy NelderMead     : 12283580867.149551        N_evals : 100000
        Minuit Migrad        : 12288998702.227829        N_evals : 2980

Function :  func_20
        ARRDE                : 1999.3692856420053        N_evals : 100001
        NelderMead           : 3134.9452288595703        N_evals : 100010
        L_BFGS_B             : 2528.6927162786583        N_evals : 1008
        DA                   : 2393.813792790176         N_evals : 1717
        L_BFGS               : 2447.4244333383344        N_evals : 2164
        Scipy L_BFGS_B       : 3152.4094380762813        N_evals : 308
        Scipy DA             : 2008.3517411058465        N_evals : 45895
        Scipy NelderMead     : 3151.0386465799897        N_evals : 100000
        Minuit Migrad        : 3152.5022878373024        N_evals : 2879

Function :  func_21
        ARRDE                : 2199.285224400409         N_evals : 100001
        NelderMead           : 2826.371768785894         N_evals : 100009
        L_BFGS_B             : 2825.185727027845         N_evals : 378
        DA                   : 2229.5040099897546        N_evals : 3372
        L_BFGS               : 2514.875995974547         N_evals : 2479
        Scipy L_BFGS_B       : 2828.8473362483587        N_evals : 231
        Scipy DA             : 2311.658574290599         N_evals : 32992
        Scipy NelderMead     : 2827.26982193359          N_evals : 100000
        Minuit Migrad        : 2828.8395142515005        N_evals : 2820

Function :  func_22
        ARRDE                : 2299.1533257550795        N_evals : 100001
        NelderMead           : 2313.7886528139625        N_evals : 100010
        L_BFGS_B             : 2338.5804957965697        N_evals : 1932
        DA                   : 2311.272390892906         N_evals : 3325
        L_BFGS               : 2408.807721293508         N_evals : 3676
        Scipy L_BFGS_B       : 5301.849388804095         N_evals : 231
        Scipy DA             : 2303.4156398067926        N_evals : 36545
        Scipy NelderMead     : 5300.280959829859         N_evals : 100000
        Minuit Migrad        : 5302.270731486517         N_evals : 3013

Function :  func_23
        ARRDE                : 2602.040361269296         N_evals : 100001
        NelderMead           : 3305.897185420754         N_evals : 100000
        L_BFGS_B             : 3425.4536232910127        N_evals : 1491
        DA                   : 2638.854304727065         N_evals : 3347
        L_BFGS               : 3320.2144479302433        N_evals : 2353
        Scipy L_BFGS_B       : 4335.967673736256         N_evals : 363
        Scipy DA             : 2621.0505786791196        N_evals : 35984
        Scipy NelderMead     : 4333.556985466172         N_evals : 100000
        Minuit Migrad        : 4335.841060536398         N_evals : 3030

Function :  func_24
        ARRDE                : 2729.2926370115165        N_evals : 100001
        NelderMead           : 3390.8923854485997        N_evals : 100001
        L_BFGS_B             : 2981.1555020917745        N_evals : 1239
        DA                   : 2759.703266415113         N_evals : 2665
        L_BFGS               : 3390.034354635313         N_evals : 3928
        Scipy L_BFGS_B       : 3392.903526168992         N_evals : 231
        Scipy DA             : 2764.7317993016604        N_evals : 26117
        Scipy NelderMead     : 3390.8002131089747        N_evals : 100000
        Minuit Migrad        : 3392.125735140426         N_evals : 2792

Function :  func_25
        ARRDE                : 2896.7736267400724        N_evals : 100001
        NelderMead           : 3036.8267229406533        N_evals : 100000
        L_BFGS_B             : 3287.948451549422         N_evals : 1554
        DA                   : 2901.065257470666         N_evals : 2719
        L_BFGS               : 4766.565496519477         N_evals : 2227
        Scipy L_BFGS_B       : 4821.325672270607         N_evals : 352
        Scipy DA             : 2948.525181866107         N_evals : 34796
        Scipy NelderMead     : 4818.7827986772645        N_evals : 100000
        Minuit Migrad        : 4820.833580154476         N_evals : 2877

Function :  func_26
        ARRDE                : 2898.9533604342446        N_evals : 100001
        NelderMead           : 5731.409176488082         N_evals : 100011
        L_BFGS_B             : 5345.449223636441         N_evals : 546
        DA                   : 2800.6216444852525        N_evals : 3414
        L_BFGS               : 4452.311069121525         N_evals : 5125
        Scipy L_BFGS_B       : 5733.462241486771         N_evals : 374
        Scipy DA             : 2899.4751646238255        N_evals : 44179
        Scipy NelderMead     : 5731.528943452338         N_evals : 100000
        Minuit Migrad        : 5733.652402846106         N_evals : 3322

Function :  func_27
        ARRDE                : 3088.3777330322487        N_evals : 100001
        NelderMead           : 3255.8832596029843        N_evals : 100010
        L_BFGS_B             : 3403.9652921513807        N_evals : 1176
        DA                   : 3196.8284198973406        N_evals : 1653
        L_BFGS               : 3848.709589331605         N_evals : 2983
        Scipy L_BFGS_B       : 5056.154749790296         N_evals : 231
        Scipy DA             : 3101.6283860193284        N_evals : 31991
        Scipy NelderMead     : 5053.7538943281115        N_evals : 100000
        Minuit Migrad        : 5056.079714716714         N_evals : 3182

Function :  func_28
        ARRDE                : 3382.4055563090387        N_evals : 100001
        NelderMead           : 4514.91962547393          N_evals : 100000
        L_BFGS_B             : 4514.818898239526         N_evals : 231
        DA                   : 3560.6003608918736        N_evals : 3138
        L_BFGS               : 3960.440587444343         N_evals : 3382
        Scipy L_BFGS_B       : 4517.367004373319         N_evals : 429
        Scipy DA             : 3173.301142659824         N_evals : 46060
        Scipy NelderMead     : 4515.519638779169         N_evals : 100000
        Minuit Migrad        : 4517.197055524815         N_evals : 3305

Function :  func_29
        ARRDE                : 3129.7527040887267        N_evals : 100001
        NelderMead           : 3829.74057704837          N_evals : 100008
        L_BFGS_B             : 3507.501614171285         N_evals : 1113
        DA                   : 3265.2581326981986        N_evals : 3298
        L_BFGS               : 3561.316262791867         N_evals : 3571
        Scipy L_BFGS_B       : 48961.61804533419         N_evals : 286
        Scipy DA             : 3201.0984900655317        N_evals : 30803
        Scipy NelderMead     : 48932.34687138425         N_evals : 100000
        Minuit Migrad        : 48967.810763578425        N_evals : 2845

Function :  func_30
        ARRDE                : 3393.7789873940956        N_evals : 100001
        NelderMead           : 5011.126621994868         N_evals : 100000
        L_BFGS_B             : 2202712.7522595283        N_evals : 987
        DA                   : 3944038.881750477         N_evals : 2768
        L_BFGS               : 5142.341517485651         N_evals : 3088
        Scipy L_BFGS_B       : 506059928.43953204        N_evals : 231
        Scipy DA             : 120794.80476790163        N_evals : 100064
        Scipy NelderMead     : 505845281.7083486         N_evals : 100000
        Minuit Migrad        : 4383.308457037874         N_evals : 3677

Noise Level : 1e-6

[7]:
# Noise ratio for function evaluations (set to zero for noiseless optimization)
noise_ratio = 1e-6

# Using a thread pool to execute optimization tasks in parallel
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
    futures = []  # List to store future objects representing scheduled tasks

    # Run optimization tests multiple times (for averaging results)
    for k in range(1):
        for j in func_numbers:
            # Submit the optimization test function to the thread pool
            futures.append(executor.submit(run_test_optimization, j, dimension, year, k, Nmaxeval))

    # Wait for all submitted tasks to complete
    concurrent.futures.wait(futures)

    # Retrieve and process results (ensure all threads completed successfully)
    for f in futures:
        f.result()
Function :  func_1
        ARRDE                : 99.99964781893205         N_evals : 100001
        NelderMead           : 356.40512258000297        N_evals : 100008
        L_BFGS_B             : 268.5114363233441         N_evals : 483
        DA                   : 5472.691112890415         N_evals : 525
        L_BFGS               : 99.9998626868106          N_evals : 2542
        Scipy L_BFGS_B       : 29975437044.324764        N_evals : 231
        Scipy DA             : 3151.4395850707765        N_evals : 55135
        Scipy NelderMead     : 254.4793333422192         N_evals : 100000
        Minuit Migrad        : 8974.435604902517         N_evals : 6576

Function :  func_2
        ARRDE                : 199.99921921045606        N_evals : 100001
        NelderMead           : 200.0362083492918         N_evals : 100006
        L_BFGS_B             : 200.0031561068971         N_evals : 2919
        DA                   : 200.0033127460315         N_evals : 4086
        L_BFGS               : 7.556704866617134e+17     N_evals : 1366
        Scipy L_BFGS_B       : 8.869650711116507e+17     N_evals : 286
        Scipy DA             : 200.00217912521143        N_evals : 87409
        Scipy NelderMead     : 19548635274.225998        N_evals : 100000
        Minuit Migrad        : 203.50825753676895        N_evals : 9026

Function :  func_3
        ARRDE                : 299.9988554447606         N_evals : 100001
        NelderMead           : 299.99936378962366        N_evals : 100003
        L_BFGS_B             : 300.00051243016924        N_evals : 1659
        DA                   : 300.00148801452224        N_evals : 1680
        L_BFGS               : 299.99963142569936        N_evals : 3634
        Scipy L_BFGS_B       : 1343217.4554920231        N_evals : 231
        Scipy DA             : 564.9219517582387         N_evals : 100133
        Scipy NelderMead     : 300.0932694218435         N_evals : 100000
        Minuit Migrad        : 300.080827889641          N_evals : 6811

Function :  func_4
        ARRDE                : 399.9986239773887         N_evals : 100001
        NelderMead           : 468.8152922580431         N_evals : 100010
        L_BFGS_B             : 400.04666456442897        N_evals : 2100
        DA                   : 400.0158883575902         N_evals : 3247
        L_BFGS               : 400.35348107489705        N_evals : 8590
        Scipy L_BFGS_B       : 5901.66141986406          N_evals : 231
        Scipy DA             : 401.52684500358055        N_evals : 86881
        Scipy NelderMead     : 408.3019139254731         N_evals : 100000
        Minuit Migrad        : 405.72053213086764        N_evals : 6200

Function :  func_5
        ARRDE                : 501.98835382130875        N_evals : 100001
        NelderMead           : 621.3810335333288         N_evals : 100004
        L_BFGS_B             : 632.3265947707985         N_evals : 483
        DA                   : 526.8629704677304         N_evals : 2418
        L_BFGS               : 621.381336547885          N_evals : 2290
        Scipy L_BFGS_B       : 726.7157251742613         N_evals : 341
        Scipy DA             : 508.9539404174796         N_evals : 42540
        Scipy NelderMead     : 632.9204768154283         N_evals : 100000
        Minuit Migrad        : 521.9164363543148         N_evals : 3489

Function :  func_6
        ARRDE                : 599.9981585389522         N_evals : 100001
        NelderMead           : 660.1090769765912         N_evals : 100007
        L_BFGS_B             : 660.1094761355782         N_evals : 1239
        DA                   : 617.891973563524          N_evals : 4560
        L_BFGS               : 660.1110109101181         N_evals : 2332
        Scipy L_BFGS_B       : 741.7758230737436         N_evals : 231
        Scipy DA             : 600.0012410725171         N_evals : 51065
        Scipy NelderMead     : 660.2298041610485         N_evals : 100000
        Minuit Migrad        : 620.1909999512667         N_evals : 4437

Function :  func_7
        ARRDE                : 712.3592350593311         N_evals : 100001
        NelderMead           : 811.2712198668149         N_evals : 100011
        L_BFGS_B             : 811.2717986452728         N_evals : 420
        DA                   : 831.7824207983163         N_evals : 583
        L_BFGS               : 811.2713307010445         N_evals : 3424
        Scipy L_BFGS_B       : 939.7171074438265         N_evals : 374
        Scipy DA             : 739.8875580991679         N_evals : 40428
        Scipy NelderMead     : 811.9138894437075         N_evals : 100000
        Minuit Migrad        : 769.6746272551546         N_evals : 4342

Function :  func_8
        ARRDE                : 800.9921465807445         N_evals : 100001
        NelderMead           : 834.8207447222945         N_evals : 100000
        L_BFGS_B             : 828.8520156919776         N_evals : 588
        DA                   : 808.9525207817801         N_evals : 2405
        L_BFGS               : 828.8516389067983         N_evals : 2563
        Scipy L_BFGS_B       : 946.6451016099851         N_evals : 319
        Scipy DA             : 821.8880244137362         N_evals : 36567
        Scipy NelderMead     : 946.6295325095214         N_evals : 100000
        Minuit Migrad        : 842.9933385801976         N_evals : 4027

Function :  func_9
        ARRDE                : 899.9962206821946         N_evals : 100001
        NelderMead           : 1783.2200669084518        N_evals : 100000
        L_BFGS_B             : 1783.2517240756724        N_evals : 861
        DA                   : 1681.728789299111         N_evals : 944
        L_BFGS               : 1783.221487674487         N_evals : 2710
        Scipy L_BFGS_B       : 4306.132759887263         N_evals : 352
        Scipy DA             : 941.4597539288375         N_evals : 92799
        Scipy NelderMead     : 1784.3114460218326        N_evals : 100000
        Minuit Migrad        : 1379.1576925870568        N_evals : 4083

Function :  func_10
        ARRDE                : 1217.322206758701         N_evals : 100001
        NelderMead           : 3138.4899594185895        N_evals : 100001
        L_BFGS_B             : 3138.4967969260165        N_evals : 378
        DA                   : 2755.320845842938         N_evals : 900
        L_BFGS               : 3138.4940663534953        N_evals : 1702
        Scipy L_BFGS_B       : 6138.31189446685          N_evals : 374
        Scipy DA             : 1460.601259870372         N_evals : 41044
        Scipy NelderMead     : 3361.073617719973         N_evals : 100000
        Minuit Migrad        : 2678.3940928019315        N_evals : 4747

Function :  func_11
        ARRDE                : 1099.9959752000555        N_evals : 100001
        NelderMead           : 1115.5989470769807        N_evals : 100000
        L_BFGS_B             : 1120.4562414288932        N_evals : 1533
        DA                   : 1104.7052168747261        N_evals : 5836
        L_BFGS               : 1131.6366243743014        N_evals : 5335
        Scipy L_BFGS_B       : 65027038.32013684         N_evals : 275
        Scipy DA             : 1107.0905790711165        N_evals : 92953
        Scipy NelderMead     : 2977.7584504690462        N_evals : 100000
        Minuit Migrad        : 1177.957695176597         N_evals : 4961

Function :  func_12
        ARRDE                : 1199.9961585202961        N_evals : 100001
        NelderMead           : 2527.0966843376323        N_evals : 100007
        L_BFGS_B             : 1618.669335207003         N_evals : 5943
        DA                   : 1863.1611221931175        N_evals : 3548
        L_BFGS               : 2128.0539807497858        N_evals : 5062
        Scipy L_BFGS_B       : 5721209775.931329         N_evals : 231
        Scipy DA             : 4129613.8591811727        N_evals : 100261
        Scipy NelderMead     : 528456.9873203    N_evals : 100000
        Minuit Migrad        : 3409.3908350176303        N_evals : 5112

Function :  func_13
        ARRDE                : 1304.8335311370824        N_evals : 100001
        NelderMead           : 13298.841842021546        N_evals : 100009
        L_BFGS_B             : 2058.5476522151635        N_evals : 4137
        DA                   : 1343.2405599800948        N_evals : 5013
        L_BFGS               : 1536.1759984039925        N_evals : 6700
        Scipy L_BFGS_B       : 2841535268.481386         N_evals : 231
        Scipy DA             : 7889.567563246274         N_evals : 54981
        Scipy NelderMead     : 10984.090296794753        N_evals : 100000
        Minuit Migrad        : 29429.01793560422         N_evals : 5501

Function :  func_14
        ARRDE                : 1399.9958484329757        N_evals : 100001
        NelderMead           : 1496.6557335868727        N_evals : 100000
        L_BFGS_B             : 1538.5719107399675        N_evals : 1155
        DA                   : 1438.9987828996884        N_evals : 5649
        L_BFGS               : 1489.7804735990062        N_evals : 3214
        Scipy L_BFGS_B       : 2215432960.485004         N_evals : 297
        Scipy DA             : 1441.0676217235773        N_evals : 52627
        Scipy NelderMead     : 8658.249617458845         N_evals : 100000
        Minuit Migrad        : 1690.0424195596693        N_evals : 4967

Function :  func_15
        ARRDE                : 1500.076957580831         N_evals : 100001
        NelderMead           : 1732.516395127339         N_evals : 100008
        L_BFGS_B             : 2647.254277835282         N_evals : 1764
        DA                   : 1573.4780161985539        N_evals : 5389
        L_BFGS               : 1628.3948911112475        N_evals : 5692
        Scipy L_BFGS_B       : 769547699.2502354         N_evals : 451
        Scipy DA             : 4044.4853088246923        N_evals : 71558
        Scipy NelderMead     : 23473.656795457955        N_evals : 100000
        Minuit Migrad        : 1715.570750144928         N_evals : 5225

Function :  func_16
        ARRDE                : 1600.8768347783468        N_evals : 100001
        NelderMead           : 2421.2342180164273        N_evals : 100003
        L_BFGS_B             : 2483.7959524323087        N_evals : 1869
        DA                   : 2273.6546220528803        N_evals : 3228
        L_BFGS               : 2294.890750605824         N_evals : 5167
        Scipy L_BFGS_B       : 3437.7603308533935        N_evals : 352
        Scipy DA             : 1855.4467018956123        N_evals : 45257
        Scipy NelderMead     : 2373.014307251852         N_evals : 100000
        Minuit Migrad        : 1942.4149070946773        N_evals : 5056

Function :  func_17
        ARRDE                : 1701.425659504799         N_evals : 100001
        NelderMead           : 1953.0745364438342        N_evals : 100000
        L_BFGS_B             : 1802.1877777299076        N_evals : 2352
        DA                   : 2002.8017179051371        N_evals : 4654
        L_BFGS               : 1872.8784165584   N_evals : 2185
        Scipy L_BFGS_B       : 3283.0074825670654        N_evals : 286
        Scipy DA             : 1704.3358102703255        N_evals : 65959
        Scipy NelderMead     : 1953.320173178456         N_evals : 100000
        Minuit Migrad        : 2005.4573572659792        N_evals : 4375

Function :  func_18
        ARRDE                : 1800.0055646994047        N_evals : 100001
        NelderMead           : 19115.088788846548        N_evals : 100001
        L_BFGS_B             : 2149.459590037178         N_evals : 3066
        DA                   : 1882.516992787019         N_evals : 3277
        L_BFGS               : 1926.2798348082267        N_evals : 3529
        Scipy L_BFGS_B       : 14468748298.756933        N_evals : 341
        Scipy DA             : 2345.667092997541         N_evals : 42551
        Scipy NelderMead     : 7617.494887251992         N_evals : 100000
        Minuit Migrad        : 6005.154903704323         N_evals : 6073

Function :  func_19
        ARRDE                : 1900.0123570129115        N_evals : 100001
        NelderMead           : 2255.698683592621         N_evals : 100000
        L_BFGS_B             : 3352.676059756652         N_evals : 777
        DA                   : 1944.1934742335357        N_evals : 3163
        L_BFGS               : 1912.483936662627         N_evals : 3718
        Scipy L_BFGS_B       : 12289126787.151608        N_evals : 231
        Scipy DA             : 11416.364597550299        N_evals : 67521
        Scipy NelderMead     : 462713.9150205552         N_evals : 100000
        Minuit Migrad        : 2041.605675737363         N_evals : 5247

Function :  func_20
        ARRDE                : 2019.9928125368608        N_evals : 100001
        NelderMead           : 2584.4789599023   N_evals : 100007
        L_BFGS_B             : 2529.9227256585114        N_evals : 1092
        DA                   : 2196.215351197279         N_evals : 10946
        L_BFGS               : 2526.302021293383         N_evals : 2122
        Scipy L_BFGS_B       : 3152.3467686951662        N_evals : 429
        Scipy DA             : 2016.1601775950624        N_evals : 68082
        Scipy NelderMead     : 3152.0690163216736        N_evals : 100000
        Minuit Migrad        : 2165.1323913063825        N_evals : 4339

Function :  func_21
        ARRDE                : 2199.9904219933287        N_evals : 100001
        NelderMead           : 2384.6393060930814        N_evals : 100008
        L_BFGS_B             : 2458.304916749243         N_evals : 987
        DA                   : 2366.686111431992         N_evals : 2340
        L_BFGS               : 2375.6732885609886        N_evals : 2479
        Scipy L_BFGS_B       : 2828.6126272848187        N_evals : 319
        Scipy DA             : 2208.750058282703         N_evals : 100272
        Scipy NelderMead     : 2828.5986525771564        N_evals : 100000
        Minuit Migrad        : 2359.2297411563604        N_evals : 4359

Function :  func_22
        ARRDE                : 2299.9914252694584        N_evals : 100001
        NelderMead           : 2304.761146826583         N_evals : 100000
        L_BFGS_B             : 2303.480909896234         N_evals : 1953
        DA                   : 2300.005007401488         N_evals : 2426
        L_BFGS               : 2300.8379241427087        N_evals : 4642
        Scipy L_BFGS_B       : 5302.500871483709         N_evals : 352
        Scipy DA             : 2301.1220047062307        N_evals : 58754
        Scipy NelderMead     : 4510.989198427269         N_evals : 100000
        Minuit Migrad        : 4205.064027787371         N_evals : 4895

Function :  func_23
        ARRDE                : 2602.9982527482034        N_evals : 100001
        NelderMead           : 3303.59868678365          N_evals : 100009
        L_BFGS_B             : 3303.6076554185697        N_evals : 567
        DA                   : 2617.036471864092         N_evals : 3336
        L_BFGS               : 3303.60269903206          N_evals : 4159
        Scipy L_BFGS_B       : 4335.929685261072         N_evals : 297
        Scipy DA             : 2615.949687891049         N_evals : 43992
        Scipy NelderMead     : 3317.8597853152846        N_evals : 100000
        Minuit Migrad        : 2771.36446420679          N_evals : 6256

Function :  func_24
        ARRDE                : 2732.851345928635         N_evals : 100001
        NelderMead           : 2500.0083951996826        N_evals : 100000
        L_BFGS_B             : 2499.99902736411          N_evals : 1218
        DA                   : 2770.246104820901         N_evals : 4205
        L_BFGS               : 2500.004335587265         N_evals : 4222
        Scipy L_BFGS_B       : 3392.2075640027415        N_evals : 451
        Scipy DA             : 2759.1615255953852        N_evals : 40318
        Scipy NelderMead     : 3392.1923121135032        N_evals : 100000
        Minuit Migrad        : 2816.5389525661103        N_evals : 4502

Function :  func_25
        ARRDE                : 2897.7314471151903        N_evals : 100001
        NelderMead           : 2966.7655106166612        N_evals : 100000
        L_BFGS_B             : 2946.9278065232575        N_evals : 1155
        DA                   : 2898.526075347443         N_evals : 2426
        L_BFGS               : 2946.6733795096497        N_evals : 4012
        Scipy L_BFGS_B       : 4820.812739924424         N_evals : 308
        Scipy DA             : 2944.6011297818072        N_evals : 52110
        Scipy NelderMead     : 4820.77303846736          N_evals : 100000
        Minuit Migrad        : 2951.5983324853664        N_evals : 4630

Function :  func_26
        ARRDE                : 2899.9905128671785        N_evals : 100001
        NelderMead           : 4827.301186956572         N_evals : 100000
        L_BFGS_B             : 4988.041881573006         N_evals : 1344
        DA                   : 2815.6621018529636        N_evals : 3705
        L_BFGS               : 4621.134887611896         N_evals : 4327
        Scipy L_BFGS_B       : 5733.921706959507         N_evals : 627
        Scipy DA             : 2900.0009744011804        N_evals : 49558
        Scipy NelderMead     : 5733.882212220061         N_evals : 100000
        Minuit Migrad        : 3951.1841416214024        N_evals : 5939

Function :  func_27
        ARRDE                : 3088.994288430638         N_evals : 100001
        NelderMead           : 3414.318915321662         N_evals : 100008
        L_BFGS_B             : 3267.1365798713605        N_evals : 1092
        DA                   : 3118.134113218537         N_evals : 6283
        L_BFGS               : 3199.99446674037          N_evals : 3424
        Scipy L_BFGS_B       : 5055.889160876941         N_evals : 231
        Scipy DA             : 3096.5708272906427        N_evals : 63528
        Scipy NelderMead     : 4106.450262737651         N_evals : 100000
        Minuit Migrad        : 3139.2677931942244        N_evals : 6530

Function :  func_28
        ARRDE                : 3383.720870155003         N_evals : 100001
        NelderMead           : 3384.7652383268814        N_evals : 100000
        L_BFGS_B             : 3452.4841193287007        N_evals : 1386
        DA                   : 3217.106705587505         N_evals : 4400
        L_BFGS               : 3290.9111925794828        N_evals : 4390
        Scipy L_BFGS_B       : 4517.3300205873675        N_evals : 231
        Scipy DA             : 3446.506747377298         N_evals : 55047
        Scipy NelderMead     : 4517.310115712177         N_evals : 100000
        Minuit Migrad        : 3445.0637221653924        N_evals : 4077

Function :  func_29
        ARRDE                : 3131.963831753864         N_evals : 100001
        NelderMead           : 4268.120265900967         N_evals : 100001
        L_BFGS_B             : 3567.9345436828403        N_evals : 1701
        DA                   : 3342.6656152659157        N_evals : 6674
        L_BFGS               : 3662.8706733208787        N_evals : 2752
        Scipy L_BFGS_B       : 48958.59053526347         N_evals : 231
        Scipy DA             : 3198.2062213878376        N_evals : 73945
        Scipy NelderMead     : 4180.7402939081085        N_evals : 100000
        Minuit Migrad        : 3469.918683346524         N_evals : 4364

Function :  func_30
        ARRDE                : 3394.490706814552         N_evals : 100001
        NelderMead           : 6081.944472666086         N_evals : 100009
        L_BFGS_B             : 5346.753605629595         N_evals : 1260
        DA                   : 8120592.912686143         N_evals : 4093
        L_BFGS               : 4066.079833635529         N_evals : 5608
        Scipy L_BFGS_B       : 506077482.66638035        N_evals : 231
        Scipy DA             : 418386.40197579376        N_evals : 100079
        Scipy NelderMead     : 4022.95330042262          N_evals : 100000
        Minuit Migrad        : 15131.011619027304        N_evals : 7985

Noise Level : 1e-8

[8]:
# Noise ratio for function evaluations (set to zero for noiseless optimization)
noise_ratio = 1e-8

# Using a thread pool to execute optimization tasks in parallel
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
    futures = []  # List to store future objects representing scheduled tasks

    # Run optimization tests multiple times (for averaging results)
    for k in range(NRuns):
        for j in func_numbers:
            # Submit the optimization test function to the thread pool
            futures.append(executor.submit(run_test_optimization, j, dimension, year, k, Nmaxeval))

    # Wait for all submitted tasks to complete
    concurrent.futures.wait(futures)

    # Retrieve and process results (ensure all threads completed successfully)
    for f in futures:
        f.result()
Function :  func_1
        ARRDE                : 99.99999682051816         N_evals : 100001
        NelderMead           : 99.99999843754777         N_evals : 4065
        L_BFGS_B             : 100.00041815995345        N_evals : 1302
        DA                   : 100.00008630870653        N_evals : 1428
        L_BFGS               : 99.99999715095689         N_evals : 3466
        Scipy L_BFGS_B       : 22735236337.625095        N_evals : 506
        Scipy DA             : 4371.573100637038         N_evals : 38800
        Scipy NelderMead     : 11473.22829210595         N_evals : 100000
        Minuit Migrad        : 100.0000736095161         N_evals : 917

Function :  func_2
        ARRDE                : 199.99999347087595        N_evals : 100001
        NelderMead           : 200.00253626080647        N_evals : 5038
        L_BFGS_B             : 200.0007083288631         N_evals : 3087
        DA                   : 200.00169006701   N_evals : 4401
        L_BFGS               : 7.556705274954113e+17     N_evals : 1366
        Scipy L_BFGS_B       : 7.674004249061842e+17     N_evals : 858
        Scipy DA             : 200.00482406397177        N_evals : 69050
        Scipy NelderMead     : 277.7479377295691         N_evals : 10292
        Minuit Migrad        : 200.00084934701437        N_evals : 7552

Function :  func_3
        ARRDE                : 299.999990336583          N_evals : 100001
        NelderMead           : 299.9999967788666         N_evals : 2764
        L_BFGS_B             : 300.0000117302614         N_evals : 1890
        DA                   : 300.00004555611525        N_evals : 1281
        L_BFGS               : 299.9999935562243         N_evals : 3340
        Scipy L_BFGS_B       : 65761.83868410284         N_evals : 330
        Scipy DA             : 1517.4963544938214        N_evals : 100247
        Scipy NelderMead     : 299.999993006982          N_evals : 7820
        Minuit Migrad        : 309.19615500589197        N_evals : 2039

Function :  func_4
        ARRDE                : 399.99998657618414        N_evals : 100001
        NelderMead           : 399.9999962769946         N_evals : 3604
        L_BFGS_B             : 400.00034722916735        N_evals : 1974
        DA                   : 400.00001719566535        N_evals : 4022
        L_BFGS               : 400.0034548989989         N_evals : 7351
        Scipy L_BFGS_B       : 5901.6565338904575        N_evals : 231
        Scipy DA             : 407.4490612369386         N_evals : 100045
        Scipy NelderMead     : 408.31489709161514        N_evals : 6270
        Minuit Migrad        : 400.00019191963116        N_evals : 1861

Function :  func_5
        ARRDE                : 502.98486207539275        N_evals : 100001
        NelderMead           : 621.3833770585469         N_evals : 1555
        L_BFGS_B             : 632.3276468797418         N_evals : 441
        DA                   : 516.9142567551402         N_evals : 1359
        L_BFGS               : 621.3833692310262         N_evals : 2752
        Scipy L_BFGS_B       : 726.7145659542147         N_evals : 231
        Scipy DA             : 515.91937096149   N_evals : 61064
        Scipy NelderMead     : 624.3681229268359         N_evals : 5110
        Minuit Migrad        : 617.4030816575312         N_evals : 515

Function :  func_6
        ARRDE                : 599.9999931352145         N_evals : 100001
        NelderMead           : 660.1105048701849         N_evals : 1354
        L_BFGS_B             : 660.1105086484275         N_evals : 987
        DA                   : 614.6532481716322         N_evals : 8995
        L_BFGS               : 660.1105076834289         N_evals : 2353
        Scipy L_BFGS_B       : 724.9616095528714         N_evals : 275
        Scipy DA             : 600.0003094673912         N_evals : 63979
        Scipy NelderMead     : 659.180062972738          N_evals : 3716
        Minuit Migrad        : 659.0966350907182         N_evals : 686

Function :  func_7
        ARRDE                : 712.967509094043          N_evals : 100001
        NelderMead           : 811.2731373151506         N_evals : 1132
        L_BFGS_B             : 811.273126176719          N_evals : 1092
        DA                   : 831.7839474115077         N_evals : 583
        L_BFGS               : 778.2114931297331         N_evals : 2836
        Scipy L_BFGS_B       : 939.7163269289897         N_evals : 308
        Scipy DA             : 725.5282776840512         N_evals : 40538
        Scipy NelderMead     : 811.2731298289698         N_evals : 3344
        Minuit Migrad        : 792.9573149744955         N_evals : 540

Function :  func_8
        ARRDE                : 802.9848524138264         N_evals : 100001
        NelderMead           : 831.8385992936483         N_evals : 1263
        L_BFGS_B             : 831.8385930232314         N_evals : 756
        DA                   : 808.9546106612185         N_evals : 2048
        L_BFGS               : 828.8537187201179         N_evals : 2395
        Scipy L_BFGS_B       : 946.6454894692499         N_evals : 418
        Scipy DA             : 814.9243849641477         N_evals : 43145
        Scipy NelderMead     : 834.823470296836          N_evals : 4798
        Minuit Migrad        : 831.8386571551998         N_evals : 631

Function :  func_9
        ARRDE                : 899.999962461678          N_evals : 100001
        NelderMead           : 1783.2260980188414        N_evals : 1128
        L_BFGS_B             : 1783.2257384607   N_evals : 987
        DA                   : 1681.7311070753085        N_evals : 776
        L_BFGS               : 1783.2257338946386        N_evals : 2290
        Scipy L_BFGS_B       : 4306.1325150049215        N_evals : 231
        Scipy DA             : 908.9710009460931         N_evals : 74902
        Scipy NelderMead     : 1778.8623262459912        N_evals : 4430
        Minuit Migrad        : 1772.4757658836538        N_evals : 683

Function :  func_10
        ARRDE                : 1118.875480592281         N_evals : 100001
        NelderMead           : 3138.5006338599173        N_evals : 1550
        L_BFGS_B             : 3138.5006584640328        N_evals : 609
        DA                   : 2755.326876469328         N_evals : 1467
        L_BFGS               : 3500.980929044613         N_evals : 6280
        Scipy L_BFGS_B       : 3574.749732862765         N_evals : 1210
        Scipy DA             : 1694.4430504303991        N_evals : 70447
        Scipy NelderMead     : 3138.949123683695         N_evals : 5345
        Minuit Migrad        : 3534.6344577973473        N_evals : 743

Function :  func_11
        ARRDE                : 1099.99995440957          N_evals : 100001
        NelderMead           : 1114.9243362621094        N_evals : 4489
        L_BFGS_B             : 1156.712197093623         N_evals : 2646
        DA                   : 1110.9445813453215        N_evals : 3037
        L_BFGS               : 1140.7971752346727        N_evals : 9157
        Scipy L_BFGS_B       : 8603.964913940532         N_evals : 1034
        Scipy DA             : 1117.9340811729865        N_evals : 100027
        Scipy NelderMead     : 1127.275334107032         N_evals : 5894
        Minuit Migrad        : 1123.878907063663         N_evals : 1888

Function :  func_12
        ARRDE                : 1200.6243917456065        N_evals : 100001
        NelderMead           : 5356.697168718574         N_evals : 100004
        L_BFGS_B             : 2154.077076835465         N_evals : 2394
        DA                   : 2103.242637907266         N_evals : 3968
        L_BFGS               : 1936.2389711030673        N_evals : 9955
        Scipy L_BFGS_B       : 5721203574.495394         N_evals : 275
        Scipy DA             : 18642.868712121544        N_evals : 100319
        Scipy NelderMead     : 4462.9680900972535        N_evals : 4522
        Minuit Migrad        : 1318.6474107879565        N_evals : 7408

Function :  func_13
        ARRDE                : 1304.8370995054856        N_evals : 100001
        NelderMead           : 2141.5616768535133        N_evals : 4742
        L_BFGS_B             : 1710.653074939431         N_evals : 3591
        DA                   : 1334.0928888649662        N_evals : 15641
        L_BFGS               : 1509.1155716018427        N_evals : 10900
        Scipy L_BFGS_B       : 2507251905.9169044        N_evals : 264
        Scipy DA             : 1967.9033181821537        N_evals : 89081
        Scipy NelderMead     : 12159.73000220966         N_evals : 100000
        Minuit Migrad        : 1309.94959841737          N_evals : 7926

Function :  func_14
        ARRDE                : 1400.8004287093902        N_evals : 100001
        NelderMead           : 1500.6149249503358        N_evals : 2215
        L_BFGS_B             : 1862.8875609104932        N_evals : 5061
        DA                   : 1462.5453932416897        N_evals : 12831
        L_BFGS               : 1505.320708991013         N_evals : 4978
        Scipy L_BFGS_B       : 2215435608.1341186        N_evals : 231
        Scipy DA             : 1454.6182089558624        N_evals : 100029
        Scipy NelderMead     : 8412.568765511876         N_evals : 1557
        Minuit Migrad        : 2041.0260640806912        N_evals : 6215

Function :  func_15
        ARRDE                : 1500.1191570979738        N_evals : 100001
        NelderMead           : 2199.9881025245763        N_evals : 4032
        L_BFGS_B             : 1601.3519476309625        N_evals : 1806
        DA                   : 1526.7571444795428        N_evals : 8938
        L_BFGS               : 1528.1147155198782        N_evals : 7225
        Scipy L_BFGS_B       : 769548257.2016616         N_evals : 231
        Scipy DA             : 1868.7376476977329        N_evals : 81403
        Scipy NelderMead     : 16928.622813066097        N_evals : 100000
        Minuit Migrad        : 1560.8944616385745        N_evals : 6090

Function :  func_16
        ARRDE                : 1600.3859027750213        N_evals : 100001
        NelderMead           : 2422.427125772132         N_evals : 2114
        L_BFGS_B             : 2522.9166465365183        N_evals : 1176
        DA                   : 2238.6700976287384        N_evals : 4718
        L_BFGS               : 2310.144619835    N_evals : 5167
        Scipy L_BFGS_B       : 3125.815167114313         N_evals : 407
        Scipy DA             : 1851.1923994477756        N_evals : 100201
        Scipy NelderMead     : 2298.9916414434506        N_evals : 5169
        Minuit Migrad        : 1975.6040483990896        N_evals : 5178

Function :  func_17
        ARRDE                : 1701.014646952241         N_evals : 100001
        NelderMead           : 2179.29877832251          N_evals : 2262
        L_BFGS_B             : 2095.3373823592665        N_evals : 1323
        DA                   : 1762.5919029112026        N_evals : 12606
        L_BFGS               : 2208.883989810845         N_evals : 2815
        Scipy L_BFGS_B       : 3119.078644000056         N_evals : 1221
        Scipy DA             : 1717.9305753457681        N_evals : 70876
        Scipy NelderMead     : 1875.6701911886357        N_evals : 4559
        Minuit Migrad        : 1945.33618138074          N_evals : 570

Function :  func_18
        ARRDE                : 1800.0029822197948        N_evals : 100001
        NelderMead           : 1855.4478304994834        N_evals : 4949
        L_BFGS_B             : 1991.7285311630023        N_evals : 2646
        DA                   : 1822.275306519144         N_evals : 13125
        L_BFGS               : 1864.2817295341197        N_evals : 13840
        Scipy L_BFGS_B       : 14468752843.85394         N_evals : 231
        Scipy DA             : 3280.325247781108         N_evals : 46060
        Scipy NelderMead     : 2004.8459754908129        N_evals : 4642
        Minuit Migrad        : 1840.7459722822266        N_evals : 6563

Function :  func_19
        ARRDE                : 1900.0193657965597        N_evals : 100001
        NelderMead           : 2082.1939395514937        N_evals : 1741
        L_BFGS_B             : 1959.8556438985702        N_evals : 924
        DA                   : 2111.3176412022854        N_evals : 8191
        L_BFGS               : 1907.0711448667262        N_evals : 3655
        Scipy L_BFGS_B       : 12289136052.26989         N_evals : 231
        Scipy DA             : 5360.426363797366         N_evals : 67477
        Scipy NelderMead     : 3752.5912371503873        N_evals : 2573
        Minuit Migrad        : 1965.0336554452656        N_evals : 8696

Function :  func_20
        ARRDE                : 2001.3070796525   N_evals : 100001
        NelderMead           : 2584.4749175644724        N_evals : 1667
        L_BFGS_B             : 2443.006042618962         N_evals : 1176
        DA                   : 2070.3400439805896        N_evals : 9542
        L_BFGS               : 2537.879140599287         N_evals : 4369
        Scipy L_BFGS_B       : 3146.398592222173         N_evals : 341
        Scipy DA             : 2017.1488164175817        N_evals : 68610
        Scipy NelderMead     : 2885.343329439346         N_evals : 1171
        Minuit Migrad        : 2197.3180992894427        N_evals : 3034

Function :  func_21
        ARRDE                : 2199.999966179773         N_evals : 100001
        NelderMead           : 2384.620490044661         N_evals : 1943
        L_BFGS_B             : 2383.2531437439056        N_evals : 630
        DA                   : 2366.6919186499135        N_evals : 30578
        L_BFGS               : 2413.816683195073         N_evals : 1765
        Scipy L_BFGS_B       : 2505.0129212435045        N_evals : 583
        Scipy DA             : 2203.8717999433143        N_evals : 100053
        Scipy NelderMead     : 2382.301031539968         N_evals : 5537
        Minuit Migrad        : 2451.828633032667         N_evals : 905

Function :  func_22
        ARRDE                : 2247.4162412734927        N_evals : 100001
        NelderMead           : 2304.936428886406         N_evals : 2506
        L_BFGS_B             : 2309.7861513507205        N_evals : 1995
        DA                   : 2300.289013674184         N_evals : 3035
        L_BFGS               : 4707.251056387532         N_evals : 1408
        Scipy L_BFGS_B       : 4736.978713344289         N_evals : 495
        Scipy DA             : 2301.3632386960803        N_evals : 60822
        Scipy NelderMead     : 4506.392753755374         N_evals : 100000
        Minuit Migrad        : 2316.6450367227067        N_evals : 958

Function :  func_23
        ARRDE                : 2599.999946514945         N_evals : 100001
        NelderMead           : 3303.6106681072783        N_evals : 1507
        L_BFGS_B             : 3303.6106460043393        N_evals : 693
        DA                   : 2666.130833617436         N_evals : 2886
        L_BFGS               : 3303.610685612177         N_evals : 1807
        Scipy L_BFGS_B       : 4183.822552009192         N_evals : 1023
        Scipy DA             : 2638.946832327551         N_evals : 87167
        Scipy NelderMead     : 3303.6106296000826        N_evals : 4976
        Minuit Migrad        : 3303.6107192116856        N_evals : 538

Function :  func_24
        ARRDE                : 2499.999955327834         N_evals : 100001
        NelderMead           : 2500.00009313355          N_evals : 2458
        L_BFGS_B             : 2500.0000017328143        N_evals : 1785
        DA                   : 2756.1131391353056        N_evals : 3642
        L_BFGS               : 2500.0001396769726        N_evals : 4327
        Scipy L_BFGS_B       : 3392.208852856576         N_evals : 396
        Scipy DA             : 2776.9730559732366        N_evals : 45169
        Scipy NelderMead     : 2521.682486581316         N_evals : 6164
        Minuit Migrad        : 2500.000089135175         N_evals : 4435

Function :  func_25
        ARRDE                : 2600.032085317161         N_evals : 100001
        NelderMead           : 2949.983843641506         N_evals : 2008
        L_BFGS_B             : 2945.4430696864188        N_evals : 1197
        DA                   : 2898.7192650006145        N_evals : 2552
        L_BFGS               : 2945.7300559608702        N_evals : 4138
        Scipy L_BFGS_B       : 4820.812380336347         N_evals : 231
        Scipy DA             : 2947.9244401161136        N_evals : 49459
        Scipy NelderMead     : 3015.5804756696602        N_evals : 7478
        Minuit Migrad        : 2943.7876919898467        N_evals : 5458

Function :  func_26
        ARRDE                : 2799.999962065995         N_evals : 100001
        NelderMead           : 4780.43252942409          N_evals : 100003
        L_BFGS_B             : 4988.055740755852         N_evals : 1218
        DA                   : 2799.9999318406963        N_evals : 4396
        L_BFGS               : 4616.506058486465         N_evals : 2962
        Scipy L_BFGS_B       : 5733.919010074896         N_evals : 275
        Scipy DA             : 2800.004093735158         N_evals : 57566
        Scipy NelderMead     : 4670.400062773969         N_evals : 6160
        Minuit Migrad        : 5076.407988964832         N_evals : 3473

Function :  func_27
        ARRDE                : 3089.308016581297         N_evals : 100001
        NelderMead           : 3382.3552136286185        N_evals : 2012
        L_BFGS_B             : 3237.274772929166         N_evals : 1176
        DA                   : 3151.604094093155         N_evals : 3429
        L_BFGS               : 3370.1603964345977        N_evals : 3088
        Scipy L_BFGS_B       : 5055.892653576363         N_evals : 231
        Scipy DA             : 3101.0601371144485        N_evals : 100116
        Scipy NelderMead     : 3551.285536801299         N_evals : 5447
        Minuit Migrad        : 3181.9186640567855        N_evals : 5765

Function :  func_28
        ARRDE                : 3099.999915092622         N_evals : 100001
        NelderMead           : 3383.74773291804          N_evals : 3653
        L_BFGS_B             : 3400.599944221076         N_evals : 714
        DA                   : 3437.9452062531645        N_evals : 3644
        L_BFGS               : 3287.767824016206         N_evals : 3277
        Scipy L_BFGS_B       : 4517.33532528125          N_evals : 231
        Scipy DA             : 3163.350679873215         N_evals : 100059
        Scipy NelderMead     : 3383.769068829367         N_evals : 6726
        Minuit Migrad        : 3444.1318199957545        N_evals : 1095

Function :  func_29
        ARRDE                : 3128.873147791686         N_evals : 100001
        NelderMead           : 4276.510291063197         N_evals : 3017
        L_BFGS_B             : 3533.792418176438         N_evals : 2814
        DA                   : 3758.4560145355645        N_evals : 1970
        L_BFGS               : 3576.8222993823815        N_evals : 3928
        Scipy L_BFGS_B       : 37657.24322680237         N_evals : 220
        Scipy DA             : 3224.3060051820066        N_evals : 80171
        Scipy NelderMead     : 5125.96083372461          N_evals : 2946
        Minuit Migrad        : 3686.8222483165855        N_evals : 6519

Function :  func_30
        ARRDE                : 3394.500690106512         N_evals : 100001
        NelderMead           : 3983.191850185892         N_evals : 6657
        L_BFGS_B             : 3650.935650113564         N_evals : 12600
        DA                   : 3735.2921743199036        N_evals : 3989
        L_BFGS               : 4115.507939629825         N_evals : 4306
        Scipy L_BFGS_B       : 506077321.4562519         N_evals : 242
        Scipy DA             : 57615.90965218861         N_evals : 100019
        Scipy NelderMead     : 3897.2602978961886        N_evals : 13799
        Minuit Migrad        : 3894.9828008310737        N_evals : 19707

Noise Level : 1e-10

[9]:
# Noise ratio for function evaluations (set to zero for noiseless optimization)
noise_ratio = 1e-10

# Using a thread pool to execute optimization tasks in parallel
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
    futures = []  # List to store future objects representing scheduled tasks

    # Run optimization tests multiple times (for averaging results)
    for k in range(NRuns):
        for j in func_numbers:
            # Submit the optimization test function to the thread pool
            futures.append(executor.submit(run_test_optimization, j, dimension, year, k, Nmaxeval))

    # Wait for all submitted tasks to complete
    concurrent.futures.wait(futures)

    # Retrieve and process results (ensure all threads completed successfully)
    for f in futures:
        f.result()
Function :  func_1
        ARRDE                : 99.99999997905743         N_evals : 100001
        NelderMead           : 100.00000003400216        N_evals : 4045
        L_BFGS_B             : 100.0009624483876         N_evals : 1050
        DA                   : 100.00001379336425        N_evals : 1281
        L_BFGS               : 99.99999999272549         N_evals : 778
        Scipy L_BFGS_B       : 29897968248.72122         N_evals : 275
        Scipy DA             : 100.13537775392062        N_evals : 21233
        Scipy NelderMead     : 2712.375402366421         N_evals : 6914
        Minuit Migrad        : 100.00000417019726        N_evals : 814

Function :  func_2
        ARRDE                : 199.99999993565933        N_evals : 100001
        NelderMead           : 200.0000010326318         N_evals : 6034
        L_BFGS_B             : 200.00363128383273        N_evals : 3129
        DA                   : 200.00011677720008        N_evals : 5304
        L_BFGS               : 7.556706384292428e+17     N_evals : 1366
        Scipy L_BFGS_B       : 280.9979295515162         N_evals : 1188
        Scipy DA             : 200.00019632056274        N_evals : 41055
        Scipy NelderMead     : 199.99999999072733        N_evals : 21375
        Minuit Migrad        : 200.00089811538908        N_evals : 6630

Function :  func_3
        ARRDE                : 299.9999999213533         N_evals : 100001
        NelderMead           : 299.99999996584063        N_evals : 2896
        L_BFGS_B             : 300.00000001076796        N_evals : 1239
        DA                   : 300.00000051117325        N_evals : 1239
        L_BFGS               : 299.99999998086923        N_evals : 1429
        Scipy L_BFGS_B       : 19858.03799099809         N_evals : 440
        Scipy DA             : 300.0001108522928         N_evals : 50889
        Scipy NelderMead     : 299.99999994684214        N_evals : 7118
        Minuit Migrad        : 310.1777139138017         N_evals : 2067

Function :  func_4
        ARRDE                : 399.9999998658786         N_evals : 100001
        NelderMead           : 399.99999999279345        N_evals : 3815
        L_BFGS_B             : 399.9999999433373         N_evals : 1932
        DA                   : 400.0000006620398         N_evals : 3120
        L_BFGS               : 400.00009030576746        N_evals : 3865
        Scipy L_BFGS_B       : 668.0884246137065         N_evals : 308
        Scipy DA             : 403.7859473281134         N_evals : 100015
        Scipy NelderMead     : 399.99999994842284        N_evals : 8608
        Minuit Migrad        : 400.00005720577417        N_evals : 1252

Function :  func_5
        ARRDE                : 503.9798360871961         N_evals : 100001
        NelderMead           : 621.3833907395931         N_evals : 1651
        L_BFGS_B             : 632.3276596207262         N_evals : 525
        DA                   : 516.914268548041          N_evals : 1023
        L_BFGS               : 621.383390724091          N_evals : 505
        Scipy L_BFGS_B       : 709.1164235457267         N_evals : 352
        Scipy DA             : 511.9395263940738         N_evals : 37436
        Scipy NelderMead     : 624.3681396072418         N_evals : 5039
        Minuit Migrad        : 625.3626769470601         N_evals : 372

Function :  func_6
        ARRDE                : 600.000000371674          N_evals : 100001
        NelderMead           : 660.1105186740317         N_evals : 1454
        L_BFGS_B             : 660.1105188231505         N_evals : 1008
        DA                   : 616.9817475587724         N_evals : 5826
        L_BFGS               : 660.1105188980666         N_evals : 1177
        Scipy L_BFGS_B       : 698.0341262119649         N_evals : 649
        Scipy DA             : 600.0000997158321         N_evals : 45741
        Scipy NelderMead     : 660.1105185503545         N_evals : 4797
        Minuit Migrad        : 659.0966218201778         N_evals : 504

Function :  func_7
        ARRDE                : 712.042563268756          N_evals : 100001
        NelderMead           : 811.2731446455233         N_evals : 1254
        L_BFGS_B             : 811.2731445679221         N_evals : 399
        DA                   : 831.7839559817265         N_evals : 583
        L_BFGS               : 778.2115142737575         N_evals : 442
        Scipy L_BFGS_B       : 878.0067172260142         N_evals : 231
        Scipy DA             : 734.1892278889011         N_evals : 33212
        Scipy NelderMead     : 811.2731446930785         N_evals : 3185
        Minuit Migrad        : 805.9804038908035         N_evals : 498

Function :  func_8
        ARRDE                : 801.9899178905    N_evals : 100001
        NelderMead           : 831.8386141313889         N_evals : 1363
        L_BFGS_B             : 831.8386140076935         N_evals : 546
        DA                   : 808.9546263998956         N_evals : 1586
        L_BFGS               : 828.8537419710136         N_evals : 484
        Scipy L_BFGS_B       : 920.006513574195          N_evals : 286
        Scipy DA             : 811.9395320053095         N_evals : 36688
        Scipy NelderMead     : 831.8386140305837         N_evals : 5122
        Minuit Migrad        : 831.8386159661018         N_evals : 483

Function :  func_9
        ARRDE                : 899.9999997729188         N_evals : 100001
        NelderMead           : 1783.2257716256397        N_evals : 1394
        L_BFGS_B             : 1783.225770873628         N_evals : 1050
        DA                   : 1681.731076062514         N_evals : 923
        L_BFGS               : 1783.2257708608636        N_evals : 1219
        Scipy L_BFGS_B       : 1785.2615421331277        N_evals : 781
        Scipy DA             : 900.1053556380818         N_evals : 74209
        Scipy NelderMead     : 1778.8623675719282        N_evals : 4335
        Minuit Migrad        : 1772.4759529571918        N_evals : 454

Function :  func_10
        ARRDE                : 1125.2682557088067        N_evals : 100001
        NelderMead           : 3138.500725681896         N_evals : 1510
        L_BFGS_B             : 3138.5007250833514        N_evals : 399
        DA                   : 2755.3269198472794        N_evals : 921
        L_BFGS               : 3501.7289056007967        N_evals : 1765
        Scipy L_BFGS_B       : 2787.910188243063         N_evals : 715
        Scipy DA             : 1913.8577215425562        N_evals : 56411
        Scipy NelderMead     : 3039.7075119200554        N_evals : 5117
        Minuit Migrad        : 3534.634500875155         N_evals : 399

Function :  func_11
        ARRDE                : 1099.9999996138115        N_evals : 100001
        NelderMead           : 1129.8486351117183        N_evals : 3736
        L_BFGS_B             : 1169.6460270577722        N_evals : 2310
        DA                   : 1110.9445313442993        N_evals : 2911
        L_BFGS               : 1129.8485160696594        N_evals : 2332
        Scipy L_BFGS_B       : 1336.7837634569573        N_evals : 880
        Scipy DA             : 1109.6920077788989        N_evals : 100072
        Scipy NelderMead     : 1136.186382591362         N_evals : 6943
        Minuit Migrad        : 1153.4488903991087        N_evals : 1684

Function :  func_12
        ARRDE                : 1199.9999998878038        N_evals : 100001
        NelderMead           : 2611.111505508244         N_evals : 5057
        L_BFGS_B             : 1812.3544600884197        N_evals : 5985
        DA                   : 1726.3730028082505        N_evals : 2436
        L_BFGS               : 1758.5646513088457        N_evals : 8968
        Scipy L_BFGS_B       : 4268.951717305508         N_evals : 1793
        Scipy DA             : 1555.7568854716865        N_evals : 51934
        Scipy NelderMead     : 11728.878104631654        N_evals : 4357
        Minuit Migrad        : 2218.736513928364         N_evals : 3365

Function :  func_13
        ARRDE                : 1304.8371366199813        N_evals : 100001
        NelderMead           : 2236.4844073598533        N_evals : 8689
        L_BFGS_B             : 1516.8693637459319        N_evals : 9996
        DA                   : 1360.3290515936237        N_evals : 14569
        L_BFGS               : 1500.669599170696         N_evals : 9010
        Scipy L_BFGS_B       : 8189.850416016392         N_evals : 572
        Scipy DA             : 1323.189619795982         N_evals : 57027
        Scipy NelderMead     : 15206.401402697875        N_evals : 1741
        Minuit Migrad        : 1328.8537551610175        N_evals : 4644

Function :  func_14
        ARRDE                : 1399.9999996428405        N_evals : 100001
        NelderMead           : 1494.9115040380088        N_evals : 4289
        L_BFGS_B             : 1458.814582584569         N_evals : 5544
        DA                   : 1450.7101281497141        N_evals : 8347
        L_BFGS               : 1443.1137155238323        N_evals : 2542
        Scipy L_BFGS_B       : 2995.1614663307387        N_evals : 407
        Scipy DA             : 1412.2583940490247        N_evals : 53067
        Scipy NelderMead     : 1479.0048923378247        N_evals : 3122
        Minuit Migrad        : 1651.7001840062628        N_evals : 4961

Function :  func_15
        ARRDE                : 1500.474815633998         N_evals : 100001
        NelderMead           : 15039.717150466147        N_evals : 2235
        L_BFGS_B             : 1658.1350880919306        N_evals : 10962
        DA                   : 1528.019246092234         N_evals : 4237
        L_BFGS               : 1527.9315364946397        N_evals : 3487
        Scipy L_BFGS_B       : 1737.4709397042761        N_evals : 528
        Scipy DA             : 1503.354060867711         N_evals : 85924
        Scipy NelderMead     : 1587.8476295273717        N_evals : 6856
        Minuit Migrad        : 1516.9178324900286        N_evals : 3068

Function :  func_16
        ARRDE                : 1600.7303222740682        N_evals : 100001
        NelderMead           : 2420.872197391894         N_evals : 2365
        L_BFGS_B             : 2476.273766522429         N_evals : 1428
        DA                   : 1832.1180870874366        N_evals : 5251
        L_BFGS               : 2319.7516977458868        N_evals : 6133
        Scipy L_BFGS_B       : 2220.0061537793313        N_evals : 517
        Scipy DA             : 1600.9225566803525        N_evals : 100092
        Scipy NelderMead     : 2300.902044948217         N_evals : 4976
        Minuit Migrad        : 1960.1841942586007        N_evals : 3288

Function :  func_17
        ARRDE                : 1701.1193332298621        N_evals : 100001
        NelderMead           : 2168.7071205390903        N_evals : 4060
        L_BFGS_B             : 2387.5014494943503        N_evals : 1659
        DA                   : 1747.3483639370036        N_evals : 13360
        L_BFGS               : 1861.2399143739788        N_evals : 4558
        Scipy L_BFGS_B       : 2103.0299408802402        N_evals : 330
        Scipy DA             : 1826.768029395898         N_evals : 60327
        Scipy NelderMead     : 1956.769892577782         N_evals : 3807
        Minuit Migrad        : 1942.8894143160214        N_evals : 1228

Function :  func_18
        ARRDE                : 1800.004292679971         N_evals : 100001
        NelderMead           : 1847.8736300306157        N_evals : 4236
        L_BFGS_B             : 2113.9872607464945        N_evals : 8673
        DA                   : 1837.8341687039156        N_evals : 7267
        L_BFGS               : 1858.7760593478386        N_evals : 17515
        Scipy L_BFGS_B       : 2243.3871825625165        N_evals : 836
        Scipy DA             : 1856.8560459134587        N_evals : 39845
        Scipy NelderMead     : 1901.8038351232253        N_evals : 6264
        Minuit Migrad        : 1822.0122759029994        N_evals : 6961

Function :  func_19
        ARRDE                : 1900.0194312610824        N_evals : 100001
        NelderMead           : 2053.821007369393         N_evals : 1724
        L_BFGS_B             : 2417.42187004048          N_evals : 2058
        DA                   : 1907.9144925205946        N_evals : 16829
        L_BFGS               : 1908.7549517365435        N_evals : 4852
        Scipy L_BFGS_B       : 1935.7137518049362        N_evals : 1023
        Scipy DA             : 1902.0328663331313        N_evals : 43970
        Scipy NelderMead     : 1938.6994692947494        N_evals : 2753
        Minuit Migrad        : 2168.899940798828         N_evals : 3241

Function :  func_20
        ARRDE                : 1999.9999996007014        N_evals : 100001
        NelderMead           : 2584.474943854936         N_evals : 1904
        L_BFGS_B             : 2564.7882148408285        N_evals : 1596
        DA                   : 2070.6119267139443        N_evals : 18401
        L_BFGS               : 2441.6914534373072        N_evals : 3298
        Scipy L_BFGS_B       : 2545.95490676824          N_evals : 407
        Scipy DA             : 2017.7178543130467        N_evals : 69501
        Scipy NelderMead     : 2885.343594599009         N_evals : 1145
        Minuit Migrad        : 2590.591206600132         N_evals : 446

Function :  func_21
        ARRDE                : 2199.999999830778         N_evals : 100001
        NelderMead           : 2384.6205292361633        N_evals : 2456
        L_BFGS_B             : 2401.4007962149367        N_evals : 651
        DA                   : 2366.6920061999313        N_evals : 2884
        L_BFGS               : 2413.816735052941         N_evals : 589
        Scipy L_BFGS_B       : 2417.537422208354         N_evals : 759
        Scipy DA             : 2316.07573885705          N_evals : 38580
        Scipy NelderMead     : 2399.218873215332         N_evals : 5725
        Minuit Migrad        : 2464.8566597013073        N_evals : 461

Function :  func_22
        ARRDE                : 2217.5208412282195        N_evals : 100001
        NelderMead           : 2304.9364330297344        N_evals : 2621
        L_BFGS_B             : 2300.400568883661         N_evals : 1764
        DA                   : 2304.9486487804684        N_evals : 3286
        L_BFGS               : 2307.293065323737         N_evals : 2227
        Scipy L_BFGS_B       : 4376.629758768608         N_evals : 418
        Scipy DA             : 2305.0608614898865        N_evals : 56323
        Scipy NelderMead     : 2315.857957683809         N_evals : 6896
        Minuit Migrad        : 2325.4777008112023        N_evals : 853

Function :  func_23
        ARRDE                : 2602.5757456994925        N_evals : 100001
        NelderMead           : 3303.6106937474556        N_evals : 1635
        L_BFGS_B             : 3303.610693721895         N_evals : 546
        DA                   : 2638.252522043448         N_evals : 4238
        L_BFGS               : 3303.6106925487284        N_evals : 1366
        Scipy L_BFGS_B       : 2865.2700449728895        N_evals : 484
        Scipy DA             : 2622.832788576034         N_evals : 66663
        Scipy NelderMead     : 3303.6106933004244        N_evals : 5081
        Minuit Migrad        : 3303.610803724456         N_evals : 466

Function :  func_24
        ARRDE                : 2500.000000206955         N_evals : 100001
        NelderMead           : 2500.000173755127         N_evals : 2434
        L_BFGS_B             : 2500.000000864877         N_evals : 2058
        DA                   : 2756.1132142325937        N_evals : 3369
        L_BFGS               : 2500.000005795864         N_evals : 1723
        Scipy L_BFGS_B       : 3392.208830848436         N_evals : 220
        Scipy DA             : 2762.981079583888         N_evals : 39163
        Scipy NelderMead     : 2594.1917468915917        N_evals : 6981
        Minuit Migrad        : 2500.0000005720176        N_evals : 2367

Function :  func_25
        ARRDE                : 2897.742868567268         N_evals : 100001
        NelderMead           : 2949.983784956831         N_evals : 2529
        L_BFGS_B             : 2946.8612958642902        N_evals : 1113
        DA                   : 2898.567081478314         N_evals : 2865
        L_BFGS               : 2946.5116704355014        N_evals : 1618
        Scipy L_BFGS_B       : 4820.812335079147         N_evals : 231
        Scipy DA             : 2600.7485541715273        N_evals : 35038
        Scipy NelderMead     : 2983.6997824071595        N_evals : 8194
        Minuit Migrad        : 2946.2282070121646        N_evals : 1601

Function :  func_26
        ARRDE                : 2599.999999779497         N_evals : 100001
        NelderMead           : 4780.43259028747          N_evals : 2349
        L_BFGS_B             : 4988.055831546297         N_evals : 1071
        DA                   : 2815.66789291437          N_evals : 2154
        L_BFGS               : 4620.754650409745         N_evals : 1744
        Scipy L_BFGS_B       : 4989.487145247573         N_evals : 649
        Scipy DA             : 2900.0002887112537        N_evals : 48700
        Scipy NelderMead     : 4449.721572281183         N_evals : 7262
        Minuit Migrad        : 5076.137411142922         N_evals : 675

Function :  func_27
        ARRDE                : 3089.5179894387848        N_evals : 100001
        NelderMead           : 3382.3552311541403        N_evals : 2163
        L_BFGS_B             : 3275.6071288783937        N_evals : 3024
        DA                   : 3176.9004482832374        N_evals : 8706
        L_BFGS               : 3343.567146222038         N_evals : 1051
        Scipy L_BFGS_B       : 4959.259195371837         N_evals : 275
        Scipy DA             : 3098.5623709934653        N_evals : 49503
        Scipy NelderMead     : 3507.6979463969624        N_evals : 6676
        Minuit Migrad        : 3353.1642679992924        N_evals : 732

Function :  func_28
        ARRDE                : 3100.0000002580587        N_evals : 100001
        NelderMead           : 3383.782873309628         N_evals : 3340
        L_BFGS_B             : 3383.829791107919         N_evals : 3276
        DA                   : 3421.8816720786735        N_evals : 4737
        L_BFGS               : 3287.354574569687         N_evals : 2500
        Scipy L_BFGS_B       : 4517.335286381725         N_evals : 231
        Scipy DA             : 3383.7459141658   N_evals : 68621
        Scipy NelderMead     : 3383.754830147831         N_evals : 7191
        Minuit Migrad        : 3383.7340587644594        N_evals : 1000

Function :  func_29
        ARRDE                : 3130.150841267856         N_evals : 100001
        NelderMead           : 4066.4735956667337        N_evals : 5805
        L_BFGS_B             : 4103.663885765831         N_evals : 3024
        DA                   : 3305.8124133470437        N_evals : 4426
        L_BFGS               : 3434.9355013386185        N_evals : 5965
        Scipy L_BFGS_B       : 4079.624646001649         N_evals : 671
        Scipy DA             : 3146.206617853803         N_evals : 49019
        Scipy NelderMead     : 5146.984082985418         N_evals : 2899
        Minuit Migrad        : 3362.8606432993515        N_evals : 7535

Function :  func_30
        ARRDE                : 3394.5007722243595        N_evals : 100001
        NelderMead           : 4016.888676868196         N_evals : 4224
        L_BFGS_B             : 3950.683095937818         N_evals : 6363
        DA                   : 3494.5833886014075        N_evals : 3171
        L_BFGS               : 4182.527872702481         N_evals : 4978
        Scipy L_BFGS_B       : 8812.622123372295         N_evals : 1276
        Scipy DA             : 6127.556623818476         N_evals : 66003
        Scipy NelderMead     : 4331.26199848144          N_evals : 8992
        Minuit Migrad        : 3561.6881749758477        N_evals : 11885

We can that L-BFGS-B are generally more robust than similar algorithms implemented by Scipy and Minuit library.