[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 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, relTol=0.0, 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, relTol=0.0, 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, relTol=0.0, 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, relTol=0.0, 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
    res_minimize = iminuit.minimize(func_scipy, x0=x0[0], method="migrad", options={"maxfun": Nmaxeval}, bounds=bounds_list)
    result["Minuit Migrad"] = res_minimize.fun
    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, relTol=0.0, 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, relTol=0.0, 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
    res_minimize = iminuit.minimize(func_scipy, x0=x0[0], method="migrad", options={"maxfun": Nmaxeval}, bounds=bounds_list)
    result["Minuit Migrad"] = res_minimize.fun
    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         : 155440809.72642672        N_evals : 2519
        L_BFGS_B N=3         : 7795.616161828173         N_evals : 3234
        L_BFGS_B N=5         : 4202.942475048814         N_evals : 3485
        L_BFGS_B N=7         : 3646.845485023124         N_evals : 8235
        Scipy L_BFGS_B       : 29974922011.342438        N_evals : 231
        Minuit Migrad        : 29971490671.017815        N_evals : 3031

Function :  func_2
        L_BFGS_B N=1         : 23408.84444166098         N_evals : 2618
        L_BFGS_B N=3         : 1697216202721.2932        N_evals : 2877
        L_BFGS_B N=5         : 1428.0826101061891        N_evals : 10086
        L_BFGS_B N=7         : 1546.2404073861996        N_evals : 14335
        Scipy L_BFGS_B       : 8.870509186758547e+17     N_evals : 231
        Minuit Migrad        : 2.2047323275094912e+17    N_evals : 3203

Function :  func_3
        L_BFGS_B N=1         : 4597.56779217251          N_evals : 4521
        L_BFGS_B N=3         : 621.7111063178112         N_evals : 4410
        L_BFGS_B N=5         : 433.47696673857763        N_evals : 7175
        L_BFGS_B N=7         : 888.8083046306449         N_evals : 16836
        Scipy L_BFGS_B       : 1343417.8747845036        N_evals : 495
        Minuit Migrad        : 21134.768415007187        N_evals : 2941

Function :  func_4
        L_BFGS_B N=1         : 443.4522406303349         N_evals : 3531
        L_BFGS_B N=3         : 418.341182038582          N_evals : 4179
        L_BFGS_B N=5         : 643.8708223602927         N_evals : 3772
        L_BFGS_B N=7         : 415.6436200050286         N_evals : 10553
        Scipy L_BFGS_B       : 5901.457891573997         N_evals : 308
        Minuit Migrad        : 5901.210405002834         N_evals : 2743

Function :  func_5
        L_BFGS_B N=1         : 700.6807343216228         N_evals : 3113
        L_BFGS_B N=3         : 647.1940015139536         N_evals : 5040
        L_BFGS_B N=5         : 621.8665559985304         N_evals : 4674
        L_BFGS_B N=7         : 632.3909943698453         N_evals : 5612
        Scipy L_BFGS_B       : 726.6561934832323         N_evals : 297
        Minuit Migrad        : 726.5685275284108         N_evals : 2634

Function :  func_6
        L_BFGS_B N=1         : 671.1270881342274         N_evals : 2739
        L_BFGS_B N=3         : 686.2400699392347         N_evals : 3612
        L_BFGS_B N=5         : 662.2177896889857         N_evals : 3813
        L_BFGS_B N=7         : 660.5973252367953         N_evals : 7686
        Scipy L_BFGS_B       : 741.761456934054          N_evals : 231
        Minuit Migrad        : 741.6739995100946         N_evals : 2852

Function :  func_7
        L_BFGS_B N=1         : 818.195037670342          N_evals : 2013
        L_BFGS_B N=3         : 813.6717212776309         N_evals : 5439
        L_BFGS_B N=5         : 758.3449125999913         N_evals : 4838
        L_BFGS_B N=7         : 811.0404491034517         N_evals : 6222
        Scipy L_BFGS_B       : 939.6710379885674         N_evals : 462
        Minuit Migrad        : 939.4582456360488         N_evals : 2758

Function :  func_8
        L_BFGS_B N=1         : 843.0413967044738         N_evals : 1265
        L_BFGS_B N=3         : 855.5138378984695         N_evals : 5985
        L_BFGS_B N=5         : 838.2106871761632         N_evals : 4059
        L_BFGS_B N=7         : 836.7115256490926         N_evals : 13664
        Scipy L_BFGS_B       : 946.7609121787876         N_evals : 506
        Minuit Migrad        : 946.5829104796138         N_evals : 3092

Function :  func_9
        L_BFGS_B N=1         : 1784.2784449928758        N_evals : 2662
        L_BFGS_B N=3         : 1772.0248328461803        N_evals : 4746
        L_BFGS_B N=5         : 1782.817457216045         N_evals : 6601
        L_BFGS_B N=7         : 1783.0274542278253        N_evals : 5063
        Scipy L_BFGS_B       : 4306.037275856034         N_evals : 231
        Minuit Migrad        : 4305.293812540061         N_evals : 2757

Function :  func_10
        L_BFGS_B N=1         : 3405.8742271717174        N_evals : 2387
        L_BFGS_B N=3         : 3000.1936307853557        N_evals : 2919
        L_BFGS_B N=5         : 3217.031561367762         N_evals : 5699
        L_BFGS_B N=7         : 3402.716662194973         N_evals : 14030
        Scipy L_BFGS_B       : 6138.46610562601          N_evals : 352
        Minuit Migrad        : 6137.082686554565         N_evals : 2904

Function :  func_11
        L_BFGS_B N=1         : 1151.0572534289265        N_evals : 2508
        L_BFGS_B N=3         : 1125.8621046435683        N_evals : 3486
        L_BFGS_B N=5         : 1149.2244538016819        N_evals : 5125
        L_BFGS_B N=7         : 1133.5994255649591        N_evals : 20740
        Scipy L_BFGS_B       : 65026990.500262365        N_evals : 231
        Minuit Migrad        : 9346.87016121856          N_evals : 2746

Function :  func_12
        L_BFGS_B N=1         : 372553.0221083625         N_evals : 2376
        L_BFGS_B N=3         : 5153.04328169742          N_evals : 3024
        L_BFGS_B N=5         : 12265.128147984524        N_evals : 6437
        L_BFGS_B N=7         : 4455.74461133355          N_evals : 13847
        Scipy L_BFGS_B       : 5721593315.830217         N_evals : 308
        Minuit Migrad        : 5720759886.064651         N_evals : 3012

Function :  func_13
        L_BFGS_B N=1         : 31913.468438756976        N_evals : 1529
        L_BFGS_B N=3         : 11204.354955715491        N_evals : 3864
        L_BFGS_B N=5         : 12368.85814230509         N_evals : 5576
        L_BFGS_B N=7         : 15263.413855378709        N_evals : 8113
        Scipy L_BFGS_B       : 2841944917.3087363        N_evals : 429
        Minuit Migrad        : 2841158927.2814994        N_evals : 3241

Function :  func_14
        L_BFGS_B N=1         : 33544.99633496924         N_evals : 1925
        L_BFGS_B N=3         : 10209.189644942318        N_evals : 1932
        L_BFGS_B N=5         : 9196.806884613237         N_evals : 3772
        L_BFGS_B N=7         : 1481.8419406175674        N_evals : 12383
        Scipy L_BFGS_B       : 2215163175.6679897        N_evals : 231
        Minuit Migrad        : 2214965903.1708007        N_evals : 2797

Function :  func_15
        L_BFGS_B N=1         : 21656.60610119508         N_evals : 1232
        L_BFGS_B N=3         : 25177.876084290885        N_evals : 2331
        L_BFGS_B N=5         : 2067.268278183376         N_evals : 4428
        L_BFGS_B N=7         : 22084.141893839624        N_evals : 10553
        Scipy L_BFGS_B       : 769591680.847867          N_evals : 231
        Minuit Migrad        : 769389673.723791          N_evals : 2767

Function :  func_16
        L_BFGS_B N=1         : 2484.0807895695625        N_evals : 2024
        L_BFGS_B N=3         : 2746.7981107500564        N_evals : 3780
        L_BFGS_B N=5         : 2448.0951824339263        N_evals : 6888
        L_BFGS_B N=7         : 2960.2414496123743        N_evals : 7869
        Scipy L_BFGS_B       : 3437.8138117955878        N_evals : 231
        Minuit Migrad        : 3437.189462018849         N_evals : 2835

Function :  func_17
        L_BFGS_B N=1         : 2134.361186648782         N_evals : 1463
        L_BFGS_B N=3         : 1892.1422555911688        N_evals : 5334
        L_BFGS_B N=5         : 1813.8794782735883        N_evals : 4879
        L_BFGS_B N=7         : 1769.330262905609         N_evals : 9211
        Scipy L_BFGS_B       : 3283.6485517994247        N_evals : 374
        Minuit Migrad        : 3282.8696739596567        N_evals : 2592

Function :  func_18
        L_BFGS_B N=1         : 37606.13637977068         N_evals : 1287
        L_BFGS_B N=3         : 24286.044256773377        N_evals : 4704
        L_BFGS_B N=5         : 3122.179545617672         N_evals : 8118
        L_BFGS_B N=7         : 4351.299816515797         N_evals : 9028
        Scipy L_BFGS_B       : 14470384256.633804        N_evals : 231
        Minuit Migrad        : 14467316149.540823        N_evals : 2732

Function :  func_19
        L_BFGS_B N=1         : 16052.470323644358        N_evals : 1540
        L_BFGS_B N=3         : 3650.901075234203         N_evals : 2583
        L_BFGS_B N=5         : 4188.2613703731195        N_evals : 4469
        L_BFGS_B N=7         : 3679.0767133103363        N_evals : 11895
        Scipy L_BFGS_B       : 12287890055.088867        N_evals : 319
        Minuit Migrad        : 12269880580.153625        N_evals : 2988

Function :  func_20
        L_BFGS_B N=1         : 2451.4932153107166        N_evals : 1155
        L_BFGS_B N=3         : 2530.608467258198         N_evals : 3843
        L_BFGS_B N=5         : 2527.1378216541234        N_evals : 6929
        L_BFGS_B N=7         : 2530.0445864216317        N_evals : 5185
        Scipy L_BFGS_B       : 3152.718601840979         N_evals : 308
        Minuit Migrad        : 3151.9590707996176        N_evals : 2843

Function :  func_21
        L_BFGS_B N=1         : 2430.079071641513         N_evals : 1771
        L_BFGS_B N=3         : 2341.7262145129694        N_evals : 4095
        L_BFGS_B N=5         : 2451.807337889535         N_evals : 10373
        L_BFGS_B N=7         : 2445.2111837642715        N_evals : 15494
        Scipy L_BFGS_B       : 2828.5357166026292        N_evals : 319
        Minuit Migrad        : 2828.237264586217         N_evals : 2736

Function :  func_22
        L_BFGS_B N=1         : 2913.8893338331104        N_evals : 2321
        L_BFGS_B N=3         : 4559.031548124035         N_evals : 5985
        L_BFGS_B N=5         : 4365.309083676264         N_evals : 6027
        L_BFGS_B N=7         : 4205.599338797904         N_evals : 7991
        Scipy L_BFGS_B       : 5301.946474244454         N_evals : 506
        Minuit Migrad        : 5301.341336607905         N_evals : 2983

Function :  func_23
        L_BFGS_B N=1         : 3318.324002606267         N_evals : 1914
        L_BFGS_B N=3         : 2929.4954175515186        N_evals : 3507
        L_BFGS_B N=5         : 3306.5016534320066        N_evals : 4264
        L_BFGS_B N=7         : 3303.349284063384         N_evals : 11773
        Scipy L_BFGS_B       : 4335.773839407028         N_evals : 341
        Minuit Migrad        : 4335.505035312942         N_evals : 2958

Function :  func_24
        L_BFGS_B N=1         : 3385.8938603112774        N_evals : 2057
        L_BFGS_B N=3         : 3391.195443812986         N_evals : 1575
        L_BFGS_B N=5         : 3386.837237876338         N_evals : 2747
        L_BFGS_B N=7         : 2513.3979716183644        N_evals : 9028
        Scipy L_BFGS_B       : 3392.4983401907657        N_evals : 231
        Minuit Migrad        : 3059.31260792418          N_evals : 3124

Function :  func_25
        L_BFGS_B N=1         : 3488.1655569615805        N_evals : 1298
        L_BFGS_B N=3         : 3402.4692121229386        N_evals : 1890
        L_BFGS_B N=5         : 2953.309753934707         N_evals : 11644
        L_BFGS_B N=7         : 2941.1859877639463        N_evals : 6832
        Scipy L_BFGS_B       : 4821.704556470619         N_evals : 231
        Minuit Migrad        : 4819.326039378562         N_evals : 2802

Function :  func_26
        L_BFGS_B N=1         : 4850.133453901348         N_evals : 1683
        L_BFGS_B N=3         : 4911.194395353413         N_evals : 2814
        L_BFGS_B N=5         : 4991.3483732223   N_evals : 4305
        L_BFGS_B N=7         : 5111.340156940121         N_evals : 8906
        Scipy L_BFGS_B       : 5733.595210109736         N_evals : 231
        Minuit Migrad        : 5732.87407545577          N_evals : 2817

Function :  func_27
        L_BFGS_B N=1         : 3296.98321909499          N_evals : 1628
        L_BFGS_B N=3         : 3384.1161256760647        N_evals : 8883
        L_BFGS_B N=5         : 3565.413366701667         N_evals : 7503
        L_BFGS_B N=7         : 3227.1772657243055        N_evals : 8723
        Scipy L_BFGS_B       : 5056.758818927193         N_evals : 418
        Minuit Migrad        : 3130.748304843105         N_evals : 2983

Function :  func_28
        L_BFGS_B N=1         : 4512.301431340783         N_evals : 1177
        L_BFGS_B N=3         : 3875.637613160838         N_evals : 6090
        L_BFGS_B N=5         : 3710.5245150100495        N_evals : 9061
        L_BFGS_B N=7         : 3617.9277402263597        N_evals : 7503
        Scipy L_BFGS_B       : 4517.9151119053   N_evals : 616
        Minuit Migrad        : 4516.557146279219         N_evals : 2686

Function :  func_29
        L_BFGS_B N=1         : 3693.5465125843516        N_evals : 1485
        L_BFGS_B N=3         : 3560.666078239055         N_evals : 8274
        L_BFGS_B N=5         : 3364.7043812574675        N_evals : 5371
        L_BFGS_B N=7         : 3571.2845480196056        N_evals : 8174
        Scipy L_BFGS_B       : 48957.11825190846         N_evals : 330
        Minuit Migrad        : 48949.368333533246        N_evals : 2691

Function :  func_30
        L_BFGS_B N=1         : 78917.47112663732         N_evals : 1199
        L_BFGS_B N=3         : 31711.41063765028         N_evals : 3276
        L_BFGS_B N=5         : 8456.956628860362         N_evals : 4592
        L_BFGS_B N=7         : 5584.994614573756         N_evals : 10492
        Scipy L_BFGS_B       : 506164235.8925811         N_evals : 231
        Minuit Migrad        : 505964581.308316          N_evals : 2871

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.02404359824438        N_evals : 1144
        L_BFGS_B N=3         : 100.0             N_evals : 924
        L_BFGS_B N=5         : 100.0             N_evals : 1763
        L_BFGS_B N=7         : 100.0             N_evals : 2623
        Scipy L_BFGS_B       : 100.00000379608935        N_evals : 341
        Minuit Migrad        : 100.00000007939512        N_evals : 805

Function :  func_2
        L_BFGS_B N=1         : 200.09360056634537        N_evals : 1958
        L_BFGS_B N=3         : 200.00000912847912        N_evals : 3633
        L_BFGS_B N=5         : 200.00334332154017        N_evals : 7093
        L_BFGS_B N=7         : 200.000242639945          N_evals : 13786
        Scipy L_BFGS_B       : 200.00004652119523        N_evals : 1485
        Minuit Migrad        : 200.00024257079139        N_evals : 9267

Function :  func_3
        L_BFGS_B N=1         : 300.0000000000427         N_evals : 627
        L_BFGS_B N=3         : 300.00000000000296        N_evals : 1197
        L_BFGS_B N=5         : 300.0000000000003         N_evals : 2337
        L_BFGS_B N=7         : 300.00000000000006        N_evals : 3477
        Scipy L_BFGS_B       : 300.0000000005501         N_evals : 550
        Minuit Migrad        : 301.5204252616123         N_evals : 2390

Function :  func_4
        L_BFGS_B N=1         : 400.00000000126374        N_evals : 858
        L_BFGS_B N=3         : 400.0000000019323         N_evals : 1659
        L_BFGS_B N=5         : 400.00000001535653        N_evals : 3075
        L_BFGS_B N=7         : 400.0000000001161         N_evals : 4636
        Scipy L_BFGS_B       : 400.00000013205766        N_evals : 858
        Minuit Migrad        : 400.00003301481394        N_evals : 1322

Function :  func_5
        L_BFGS_B N=1         : 621.3833908048283         N_evals : 231
        L_BFGS_B N=3         : 621.383390804823          N_evals : 441
        L_BFGS_B N=5         : 621.3833908048204         N_evals : 861
        L_BFGS_B N=7         : 621.38339080482   N_evals : 1281
        Scipy L_BFGS_B       : 609.4440395324008         N_evals : 264
        Minuit Migrad        : 612.4282904177915         N_evals : 424

Function :  func_6
        L_BFGS_B N=1         : 660.1105187317696         N_evals : 363
        L_BFGS_B N=3         : 660.1105187313311         N_evals : 693
        L_BFGS_B N=5         : 660.1105187313864         N_evals : 1353
        L_BFGS_B N=7         : 660.1105187314524         N_evals : 2013
        Scipy L_BFGS_B       : 666.717372819352          N_evals : 341
        Minuit Migrad        : 659.0966069652629         N_evals : 501

Function :  func_7
        L_BFGS_B N=1         : 778.2115143005784         N_evals : 176
        L_BFGS_B N=3         : 778.2115143005782         N_evals : 336
        L_BFGS_B N=5         : 778.2115143005778         N_evals : 656
        L_BFGS_B N=7         : 778.2115143005776         N_evals : 976
        Scipy L_BFGS_B       : 757.7543541552618         N_evals : 198
        Minuit Migrad        : 794.8575844767726         N_evals : 496

Function :  func_8
        L_BFGS_B N=1         : 831.8386141688312         N_evals : 242
        L_BFGS_B N=3         : 831.8386141688279         N_evals : 462
        L_BFGS_B N=5         : 831.8386141688278         N_evals : 902
        L_BFGS_B N=7         : 831.8386141688281         N_evals : 1342
        Scipy L_BFGS_B       : 834.8234863035414         N_evals : 143
        Minuit Migrad        : 831.8386162060639         N_evals : 471

Function :  func_9
        L_BFGS_B N=1         : 1783.2257711126772        N_evals : 374
        L_BFGS_B N=3         : 1783.22577111268          N_evals : 714
        L_BFGS_B N=5         : 1783.2257711126763        N_evals : 1394
        L_BFGS_B N=7         : 1783.2257711126767        N_evals : 2074
        Scipy L_BFGS_B       : 1783.225774239457         N_evals : 506
        Minuit Migrad        : 1772.47578747336          N_evals : 473

Function :  func_10
        L_BFGS_B N=1         : 3138.500725530957         N_evals : 242
        L_BFGS_B N=3         : 3138.500725530961         N_evals : 462
        L_BFGS_B N=5         : 3138.5007255309542        N_evals : 902
        L_BFGS_B N=7         : 3138.5007255309506        N_evals : 1342
        Scipy L_BFGS_B       : 3145.626912686981         N_evals : 583
        Minuit Migrad        : 3534.6345007057125        N_evals : 394

Function :  func_11
        L_BFGS_B N=1         : 1129.848513216169         N_evals : 891
        L_BFGS_B N=3         : 1129.848513183287         N_evals : 1617
        L_BFGS_B N=5         : 1129.8485131828318        N_evals : 3116
        L_BFGS_B N=7         : 1129.8485131867667        N_evals : 4697
        Scipy L_BFGS_B       : 1129.8485134486527        N_evals : 858
        Minuit Migrad        : 1255.2086982593696        N_evals : 2288

Function :  func_12
        L_BFGS_B N=1         : 1323.660931879245         N_evals : 1903
        L_BFGS_B N=3         : 1752.7181713259856        N_evals : 5355
        L_BFGS_B N=5         : 1752.9224909175168        N_evals : 5658
        L_BFGS_B N=7         : 1930.386070566106         N_evals : 14213
        Scipy L_BFGS_B       : 1752.9778786965803        N_evals : 5148
        Minuit Migrad        : 1569.1753651738106        N_evals : 3376

Function :  func_13
        L_BFGS_B N=1         : 1566.901445302515         N_evals : 1485
        L_BFGS_B N=3         : 1534.8107110058247        N_evals : 3717
        L_BFGS_B N=5         : 1500.0867512340901        N_evals : 7872
        L_BFGS_B N=7         : 1453.0395695451102        N_evals : 11773
        Scipy L_BFGS_B       : 1528.3440682538076        N_evals : 5577
        Minuit Migrad        : 1307.458129681006         N_evals : 7110

Function :  func_14
        L_BFGS_B N=1         : 1450.7037870160248        N_evals : 1485
        L_BFGS_B N=3         : 1438.0384296120644        N_evals : 3066
        L_BFGS_B N=5         : 1441.1952435357825        N_evals : 4715
        L_BFGS_B N=7         : 2009.1550821656542        N_evals : 6466
        Scipy L_BFGS_B       : 1438.8977193948288        N_evals : 2563
        Minuit Migrad        : 1649.405249936061         N_evals : 3778

Function :  func_15
        L_BFGS_B N=1         : 1527.9343202872521        N_evals : 1551
        L_BFGS_B N=3         : 1594.2385085785927        N_evals : 2415
        L_BFGS_B N=5         : 1527.9412063923282        N_evals : 5904
        L_BFGS_B N=7         : 1561.8642070644444        N_evals : 11895
        Scipy L_BFGS_B       : 1566.9333151713322        N_evals : 1925
        Minuit Migrad        : 1521.3884508553413        N_evals : 3077

Function :  func_16
        L_BFGS_B N=1         : 2319.657910115671         N_evals : 3806
        L_BFGS_B N=3         : 2322.1713538379663        N_evals : 4893
        L_BFGS_B N=5         : 2473.435095059006         N_evals : 13243
        L_BFGS_B N=7         : 2473.4384974845625        N_evals : 32513
        Scipy L_BFGS_B       : 2241.1013647143145        N_evals : 1573
        Minuit Migrad        : 2419.3176592013588        N_evals : 2349

Function :  func_17
        L_BFGS_B N=1         : 1859.4461246377919        N_evals : 1914
        L_BFGS_B N=3         : 1821.7485049648965        N_evals : 3423
        L_BFGS_B N=5         : 1823.2456729780552        N_evals : 11644
        L_BFGS_B N=7         : 1770.1382478477715        N_evals : 13725
        Scipy L_BFGS_B       : 1933.6464563499044        N_evals : 517
        Minuit Migrad        : 1767.5177644174664        N_evals : 1296

Function :  func_18
        L_BFGS_B N=1         : 1925.95719594953          N_evals : 1221
        L_BFGS_B N=3         : 1857.1160945069876        N_evals : 7434
        L_BFGS_B N=5         : 1859.26845723625          N_evals : 13489
        L_BFGS_B N=7         : 1860.0591511084888        N_evals : 20679
        Scipy L_BFGS_B       : 1913.2023730232422        N_evals : 2365
        Minuit Migrad        : 1822.3105988070927        N_evals : 4993

Function :  func_19
        L_BFGS_B N=1         : 1907.3087638205411        N_evals : 2123
        L_BFGS_B N=3         : 1906.8170643917647        N_evals : 4830
        L_BFGS_B N=5         : 1907.2818851556954        N_evals : 9922
        L_BFGS_B N=7         : 1916.1116292576653        N_evals : 7381
        Scipy L_BFGS_B       : 3151.089954015937         N_evals : 1155
        Minuit Migrad        : 1905.696993266833         N_evals : 3402

Function :  func_20
        L_BFGS_B N=1         : 2596.9998879927416        N_evals : 1650
        L_BFGS_B N=3         : 2525.636151989915         N_evals : 2184
        L_BFGS_B N=5         : 2584.390861986193         N_evals : 5166
        L_BFGS_B N=7         : 2577.065310387093         N_evals : 4697
        Scipy L_BFGS_B       : 2453.4971938947438        N_evals : 1672
        Minuit Migrad        : 2467.0430337766966        N_evals : 1063

Function :  func_21
        L_BFGS_B N=1         : 2413.8167353914746        N_evals : 253
        L_BFGS_B N=3         : 2413.816735391473         N_evals : 483
        L_BFGS_B N=5         : 2413.816735391474         N_evals : 943
        L_BFGS_B N=7         : 2413.816735391473         N_evals : 1403
        Scipy L_BFGS_B       : 2473.30737207598          N_evals : 374
        Minuit Migrad        : 2488.969509451181         N_evals : 478

Function :  func_22
        L_BFGS_B N=1         : 2319.4873871757736        N_evals : 847
        L_BFGS_B N=3         : 2301.2724157804664        N_evals : 1722
        L_BFGS_B N=5         : 2302.112096175503         N_evals : 3321
        L_BFGS_B N=7         : 2302.5985149383   N_evals : 5246
        Scipy L_BFGS_B       : 2303.5741928508846        N_evals : 726
        Minuit Migrad        : 4418.942850060065         N_evals : 585

Function :  func_23
        L_BFGS_B N=1         : 3246.5299036854244        N_evals : 319
        L_BFGS_B N=3         : 3246.529903704273         N_evals : 609
        L_BFGS_B N=5         : 3246.5299036961783        N_evals : 1189
        L_BFGS_B N=7         : 3246.529903689443         N_evals : 1769
        Scipy L_BFGS_B       : 2750.84064139051          N_evals : 242
        Minuit Migrad        : 3303.6107331735884        N_evals : 539

Function :  func_24
        L_BFGS_B N=1         : 2500.00001099148          N_evals : 1111
        L_BFGS_B N=3         : 2500.000011635133         N_evals : 2142
        L_BFGS_B N=5         : 2500.0000093103   N_evals : 4223
        L_BFGS_B N=7         : 2500.0000089521627        N_evals : 6405
        Scipy L_BFGS_B       : 2500.000004375227         N_evals : 880
        Minuit Migrad        : 2500.0000002352485        N_evals : 3139

Function :  func_25
        L_BFGS_B N=1         : 2944.637212627589         N_evals : 693
        L_BFGS_B N=3         : 2948.0617386468903        N_evals : 1491
        L_BFGS_B N=5         : 2950.348631527948         N_evals : 2296
        L_BFGS_B N=7         : 2950.2783694119985        N_evals : 3660
        Scipy L_BFGS_B       : 2944.235214039048         N_evals : 627
        Minuit Migrad        : 2897.7572322735177        N_evals : 2789

Function :  func_26
        L_BFGS_B N=1         : 4564.393574740458         N_evals : 440
        L_BFGS_B N=3         : 4564.393574739803         N_evals : 840
        L_BFGS_B N=5         : 4564.3935747483265        N_evals : 1599
        L_BFGS_B N=7         : 4564.393574739817         N_evals : 2440
        Scipy L_BFGS_B       : 4562.724102756209         N_evals : 253
        Minuit Migrad        : 4987.958213640113         N_evals : 864

Function :  func_27
        L_BFGS_B N=1         : 3109.129738918923         N_evals : 2090
        L_BFGS_B N=3         : 3097.9035459101988        N_evals : 1722
        L_BFGS_B N=5         : 3108.0806799785346        N_evals : 3198
        L_BFGS_B N=7         : 3109.658564489433         N_evals : 6588
        Scipy L_BFGS_B       : 3456.809577847508         N_evals : 913
        Minuit Migrad        : 3353.1641236492887        N_evals : 748

Function :  func_28
        L_BFGS_B N=1         : 3383.734041612164         N_evals : 396
        L_BFGS_B N=3         : 3383.734041488487         N_evals : 756
        L_BFGS_B N=5         : 3383.7340414884766        N_evals : 1476
        L_BFGS_B N=7         : 3383.734041488476         N_evals : 2196
        Scipy L_BFGS_B       : 3383.734041551642         N_evals : 352
        Minuit Migrad        : 3383.734043464136         N_evals : 1282

Function :  func_29
        L_BFGS_B N=1         : 4002.5214380769944        N_evals : 2013
        L_BFGS_B N=3         : 3954.506356161578         N_evals : 5082
        L_BFGS_B N=5         : 3701.294953530076         N_evals : 9348
        L_BFGS_B N=7         : 3372.7400472558274        N_evals : 16104
        Scipy L_BFGS_B       : 3748.3174566518373        N_evals : 1144
        Minuit Migrad        : 3436.59285091239          N_evals : 4780

Function :  func_30
        L_BFGS_B N=1         : 4463.3894536118105        N_evals : 2629
        L_BFGS_B N=3         : 3815.1584198996907        N_evals : 10206
        L_BFGS_B N=5         : 3882.371958617324         N_evals : 11685
        L_BFGS_B N=7         : 3941.84777267862          N_evals : 18056
        Scipy L_BFGS_B       : 4477.290404916146         N_evals : 1298
        Minuit Migrad        : 3619.424442500836         N_evals : 13810

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.83056355792034         N_evals : 100045
        NelderMead           : 9817.135238543873         N_evals : 100002
        L_BFGS_B             : 28731749346.948776        N_evals : 1827
        DA                   : 7897.666034163657         N_evals : 100016
        L_BFGS               : 28960575391.590675        N_evals : 3004
        Scipy L_BFGS_B       : 29753789678.50404         N_evals : 330
        Scipy DA             : 3831.710700738001         N_evals : 46643
        Scipy NelderMead     : 28602754549.99285         N_evals : 100000
        Minuit Migrad        : 29449489984.593414        N_evals : 1773

Function :  func_2
        ARRDE                : 190.81799856352387        N_evals : 100045
        NelderMead           : 1854199.683945974         N_evals : 100009
        L_BFGS_B             : 1603191813016.7212        N_evals : 2583
        DA                   : 227.3965489355769         N_evals : 100019
        L_BFGS               : 8.557274387291581e+17     N_evals : 1366
        Scipy L_BFGS_B       : 8.787431660279418e+17     N_evals : 286
        Scipy DA             : 346.82787769901154        N_evals : 48557
        Scipy NelderMead     : 8.446879183409578e+17     N_evals : 100000
        Minuit Migrad        : 8.718807359108983e+17     N_evals : 1879

Function :  func_3
        ARRDE                : 289.74478749131197        N_evals : 100045
        NelderMead           : 3310.400663445662         N_evals : 100007
        L_BFGS_B             : 18885.870763878527        N_evals : 2541
        DA                   : 2621.050671689936         N_evals : 100007
        L_BFGS               : 18899.825614527406        N_evals : 1996
        Scipy L_BFGS_B       : 1344022.1603730582        N_evals : 231
        Scipy DA             : 1150.5078169139533        N_evals : 40978
        Scipy NelderMead     : 1285496.3133188202        N_evals : 100000
        Minuit Migrad        : 1310937.769615607         N_evals : 2272

Function :  func_4
        ARRDE                : 390.92624196320827        N_evals : 100045
        NelderMead           : 446.11001804426957        N_evals : 100004
        L_BFGS_B             : 5677.529444589855         N_evals : 2835
        DA                   : 466.4269100745968         N_evals : 100007
        L_BFGS               : 5671.254691636418         N_evals : 4285
        Scipy L_BFGS_B       : 5994.843024844297         N_evals : 231
        Scipy DA             : 401.0061813702541         N_evals : 34180
        Scipy NelderMead     : 5654.506626005817         N_evals : 100000
        Minuit Migrad        : 5741.84236422582          N_evals : 1905

Function :  func_5
        ARRDE                : 490.9864869167989         N_evals : 100045
        NelderMead           : 528.0543001444947         N_evals : 100005
        L_BFGS_B             : 703.2789782526261         N_evals : 2625
        DA                   : 504.7393338331721         N_evals : 100015
        L_BFGS               : 680.016041616948          N_evals : 2752
        Scipy L_BFGS_B       : 734.3231692445454         N_evals : 231
        Scipy DA             : 498.81169122212657        N_evals : 27976
        Scipy NelderMead     : 694.5132926394868         N_evals : 100000
        Minuit Migrad        : 708.856895578421          N_evals : 2058

Function :  func_6
        ARRDE                : 581.8905922969144         N_evals : 100045
        NelderMead           : 608.4447915907498         N_evals : 100010
        L_BFGS_B             : 721.2015503245066         N_evals : 1386
        DA                   : 602.9642966824363         N_evals : 100020
        L_BFGS               : 714.9478579801329         N_evals : 1576
        Scipy L_BFGS_B       : 739.2790662497016         N_evals : 231
        Scipy DA             : 583.3255602274826         N_evals : 29912
        Scipy NelderMead     : 707.7101765921658         N_evals : 100000
        Minuit Migrad        : 729.3492081143532         N_evals : 1644

Function :  func_7
        ARRDE                : 692.340096509118          N_evals : 100045
        NelderMead           : 748.3061843240997         N_evals : 100011
        L_BFGS_B             : 883.6642792753314         N_evals : 2814
        DA                   : 728.0326224714562         N_evals : 100022
        L_BFGS               : 884.5373069079724         N_evals : 5314
        Scipy L_BFGS_B       : 958.6630628247756         N_evals : 330
        Scipy DA             : 727.9939490065384         N_evals : 25281
        Scipy NelderMead     : 895.9702732836614         N_evals : 100000
        Minuit Migrad        : 928.9892006470031         N_evals : 2160

Function :  func_8
        ARRDE                : 784.8033708833176         N_evals : 100044
        NelderMead           : 823.9742135032108         N_evals : 100013
        L_BFGS_B             : 914.1475842840929         N_evals : 1701
        DA                   : 825.7014548883765         N_evals : 100013
        L_BFGS               : 910.1843829812358         N_evals : 2521
        Scipy L_BFGS_B       : 948.2088246300609         N_evals : 231
        Scipy DA             : 815.560073127057          N_evals : 26964
        Scipy NelderMead     : 906.3930849583663         N_evals : 100000
        Minuit Migrad        : 928.0306783950988         N_evals : 2015

Function :  func_9
        ARRDE                : 861.5489585606445         N_evals : 100045
        NelderMead           : 941.1055341575693         N_evals : 100007
        L_BFGS_B             : 4070.905942714036         N_evals : 2100
        DA                   : 1085.6995244083146        N_evals : 100019
        L_BFGS               : 3573.6646502394838        N_evals : 1681
        Scipy L_BFGS_B       : 4298.614403571974         N_evals : 231
        Scipy DA             : 904.6866906592247         N_evals : 27140
        Scipy NelderMead     : 4121.933140539198         N_evals : 100000
        Minuit Migrad        : 4263.742343556215         N_evals : 1926

Function :  func_10
        ARRDE                : 1291.5101019454646        N_evals : 100044
        NelderMead           : 1926.23798029281          N_evals : 100006
        L_BFGS_B             : 5817.954904305635         N_evals : 2184
        DA                   : 2404.7894750325695        N_evals : 100003
        L_BFGS               : 4913.967036996218         N_evals : 4369
        Scipy L_BFGS_B       : 6186.684522269911         N_evals : 572
        Scipy DA             : 1742.5053069838914        N_evals : 27712
        Scipy NelderMead     : 5870.978383346848         N_evals : 100000
        Minuit Migrad        : 6003.047903549202         N_evals : 2017

Function :  func_11
        ARRDE                : 1069.2463178286446        N_evals : 100045
        NelderMead           : 1252.9494819552644        N_evals : 100009
        L_BFGS_B             : 63278370.57813622         N_evals : 2814
        DA                   : 1110.5808431563298        N_evals : 100009
        L_BFGS               : 61902669.44180777         N_evals : 1954
        Scipy L_BFGS_B       : 64656575.36827779         N_evals : 429
        Scipy DA             : 1316.648756376054         N_evals : 28185
        Scipy NelderMead     : 62021202.7254734          N_evals : 100000
        Minuit Migrad        : 63814535.807802685        N_evals : 1897

Function :  func_12
        ARRDE                : 1277.037074442322         N_evals : 100045
        NelderMead           : 5958079.961154514         N_evals : 100008
        L_BFGS_B             : 5541602147.9776535        N_evals : 1617
        DA                   : 4822056.101345285         N_evals : 100017
        L_BFGS               : 5544631263.221177         N_evals : 1555
        Scipy L_BFGS_B       : 5783104835.920871         N_evals : 374
        Scipy DA             : 3030091.4039554475        N_evals : 45026
        Scipy NelderMead     : 5475372445.0849   N_evals : 100000
        Minuit Migrad        : 5631090187.513581         N_evals : 1798

Function :  func_13
        ARRDE                : 1258.1110919955279        N_evals : 100045
        NelderMead           : 6537.012869793612         N_evals : 100010
        L_BFGS_B             : 2719519157.5831523        N_evals : 2058
        DA                   : 2690.437172179469         N_evals : 100010
        L_BFGS               : 2751929242.580764         N_evals : 2857
        Scipy L_BFGS_B       : 2862158514.131736         N_evals : 330
        Scipy DA             : 3142.274139039956         N_evals : 35566
        Scipy NelderMead     : 2718609833.8804708        N_evals : 100000
        Minuit Migrad        : 2818775081.1161194        N_evals : 2493

Function :  func_14
        ARRDE                : 1385.8112701635682        N_evals : 100045
        NelderMead           : 1454.0210325603662        N_evals : 100004
        L_BFGS_B             : 2162545887.258267         N_evals : 2961
        DA                   : 1629.0740812954368        N_evals : 100014
        L_BFGS               : 2120004034.6722066        N_evals : 1849
        Scipy L_BFGS_B       : 2221549920.3859515        N_evals : 231
        Scipy DA             : 5641.015967579858         N_evals : 26117
        Scipy NelderMead     : 2119925976.3707871        N_evals : 100000
        Minuit Migrad        : 2176739777.888132         N_evals : 2109

Function :  func_15
        ARRDE                : 1446.2174557915957        N_evals : 100045
        NelderMead           : 1881.8111880542826        N_evals : 100003
        L_BFGS_B             : 738874798.0053478         N_evals : 5859
        DA                   : 5950.077257699132         N_evals : 100006
        L_BFGS               : 737914653.7655107         N_evals : 3907
        Scipy L_BFGS_B       : 772590521.3713137         N_evals : 231
        Scipy DA             : 28305.190381640183        N_evals : 29065
        Scipy NelderMead     : 735845228.317282          N_evals : 100000
        Minuit Migrad        : 756097154.9217217         N_evals : 1684

Function :  func_16
        ARRDE                : 1562.080730015805         N_evals : 100045
        NelderMead           : 1985.397714498681         N_evals : 100003
        L_BFGS_B             : 3307.9830646982   N_evals : 1995
        DA                   : 1679.6080779416188        N_evals : 100006
        L_BFGS               : 3313.371895353559         N_evals : 2332
        Scipy L_BFGS_B       : 3481.9366073390347        N_evals : 231
        Scipy DA             : 1717.5695698241586        N_evals : 27393
        Scipy NelderMead     : 3296.050924438243         N_evals : 100000
        Minuit Migrad        : 3400.3190000219884        N_evals : 2207

Function :  func_17
        ARRDE                : 1701.9478538799324        N_evals : 100044
        NelderMead           : 1770.4900997295026        N_evals : 100011
        L_BFGS_B             : 3143.0910865814794        N_evals : 2373
        DA                   : 1801.0656640107009        N_evals : 100012
        L_BFGS               : 3171.6571060808046        N_evals : 2122
        Scipy L_BFGS_B       : 3229.228726113192         N_evals : 264
        Scipy DA             : 1698.8477433587266        N_evals : 26139
        Scipy NelderMead     : 3149.978082679083         N_evals : 100000
        Minuit Migrad        : 3238.1661274753487        N_evals : 1865

Function :  func_18
        ARRDE                : 1758.10111370455          N_evals : 100045
        NelderMead           : 4309.680691305517         N_evals : 100012
        L_BFGS_B             : 13918193280.505915        N_evals : 2226
        DA                   : 1870.6388550331528        N_evals : 100017
        L_BFGS               : 14133169170.50625         N_evals : 1366
        Scipy L_BFGS_B       : 14664714758.518076        N_evals : 352
        Scipy DA             : 3182.9506520592604        N_evals : 28328
        Scipy NelderMead     : 13917262744.372921        N_evals : 100000
        Minuit Migrad        : 14134444950.779884        N_evals : 2035

Function :  func_19
        ARRDE                : 1844.308565916834         N_evals : 100045
        NelderMead           : 6512.045172077545         N_evals : 100012
        L_BFGS_B             : 11877139607.511427        N_evals : 4074
        DA                   : 2670.000623265564         N_evals : 100013
        L_BFGS               : 11796436336.716541        N_evals : 5629
        Scipy L_BFGS_B       : 12294166863.646753        N_evals : 374
        Scipy DA             : 1904.090232568472         N_evals : 27041
        Scipy NelderMead     : 11738533771.206179        N_evals : 100000
        Minuit Migrad        : 12068134904.045794        N_evals : 2168

Function :  func_20
        ARRDE                : 1967.5624369670609        N_evals : 100045
        NelderMead           : 2109.1630161029234        N_evals : 100011
        L_BFGS_B             : 3039.7925105061354        N_evals : 5607
        DA                   : 2010.754687902372         N_evals : 100018
        L_BFGS               : 3053.9915973064653        N_evals : 2395
        Scipy L_BFGS_B       : 3155.69367995363          N_evals : 297
        Scipy DA             : 1993.9921773404292        N_evals : 25853
        Scipy NelderMead     : 3022.7770263125717        N_evals : 100000
        Minuit Migrad        : 3097.243482684427         N_evals : 1893

Function :  func_21
        ARRDE                : 2267.772664840567         N_evals : 100045
        NelderMead           : 2158.048922552143         N_evals : 100005
        L_BFGS_B             : 2710.0711774818797        N_evals : 2646
        DA                   : 2286.571393750535         N_evals : 100016
        L_BFGS               : 2730.589384670544         N_evals : 4411
        Scipy L_BFGS_B       : 2812.879762552969         N_evals : 462
        Scipy DA             : 2265.424834398556         N_evals : 24940
        Scipy NelderMead     : 2702.293910067494         N_evals : 100000
        Minuit Migrad        : 2783.309889088772         N_evals : 1922

Function :  func_22
        ARRDE                : 2204.6080291921417        N_evals : 100045
        NelderMead           : 2296.0613458576445        N_evals : 100001
        L_BFGS_B             : 5170.091009056358         N_evals : 2436
        DA                   : 2282.4670439968495        N_evals : 100003
        L_BFGS               : 5090.736892756032         N_evals : 1849
        Scipy L_BFGS_B       : 5317.590881922163         N_evals : 231
        Scipy DA             : 2270.9766464423697        N_evals : 24467
        Scipy NelderMead     : 5087.9524178900665        N_evals : 100000
        Minuit Migrad        : 5247.07163479223          N_evals : 1874

Function :  func_23
        ARRDE                : 2515.8902268164375        N_evals : 100045
        NelderMead           : 2573.5452774383907        N_evals : 100009
        L_BFGS_B             : 4123.872362233166         N_evals : 2058
        DA                   : 2589.3866125867667        N_evals : 100018
        L_BFGS               : 4201.477922746551         N_evals : 1534
        Scipy L_BFGS_B       : 4350.549105457307         N_evals : 429
        Scipy DA             : 2575.7102966670686        N_evals : 27514
        Scipy NelderMead     : 4155.706888004777         N_evals : 100000
        Minuit Migrad        : 4244.609653570781         N_evals : 1949

Function :  func_24
        ARRDE                : 2438.850523278313         N_evals : 100045
        NelderMead           : 2692.1758568809346        N_evals : 100010
        L_BFGS_B             : 3279.4624165838736        N_evals : 3444
        DA                   : 2747.004107134658         N_evals : 100006
        L_BFGS               : 3256.6063159037485        N_evals : 2437
        Scipy L_BFGS_B       : 3466.589818121219         N_evals : 231
        Scipy DA             : 2720.1055663476213        N_evals : 23763
        Scipy NelderMead     : 3247.7772621543445        N_evals : 100000
        Minuit Migrad        : 3358.949414664634         N_evals : 2139

Function :  func_25
        ARRDE                : 2831.140911028333         N_evals : 100045
        NelderMead           : 2878.9624095212316        N_evals : 100009
        L_BFGS_B             : 4649.929952341991         N_evals : 2415
        DA                   : 3002.075405075922         N_evals : 100018
        L_BFGS               : 4664.0576976751245        N_evals : 3109
        Scipy L_BFGS_B       : 4776.826739487109         N_evals : 231
        Scipy DA             : 2846.818656948672         N_evals : 25094
        Scipy NelderMead     : 4608.0611863632475        N_evals : 100000
        Minuit Migrad        : 4784.329907802706         N_evals : 1856

Function :  func_26
        ARRDE                : 2721.1049870271704        N_evals : 100045
        NelderMead           : 3101.5259269133307        N_evals : 100009
        L_BFGS_B             : 5526.984698207056         N_evals : 2541
        DA                   : 3334.661780225864         N_evals : 100002
        L_BFGS               : 5541.256276979093         N_evals : 3865
        Scipy L_BFGS_B       : 5838.06093468493          N_evals : 319
        Scipy DA             : 2972.7828607569286        N_evals : 28933
        Scipy NelderMead     : 5502.780373103895         N_evals : 100000
        Minuit Migrad        : 5702.515365377215         N_evals : 1989

Function :  func_27
        ARRDE                : 2971.8407058448115        N_evals : 100045
        NelderMead           : 3026.1490154599546        N_evals : 100008
        L_BFGS_B             : 4588.710025815855         N_evals : 4830
        DA                   : 3110.688243486055         N_evals : 100016
        L_BFGS               : 4922.095651982306         N_evals : 1933
        Scipy L_BFGS_B       : 5075.269459066873         N_evals : 231
        Scipy DA             : 3041.6243007617695        N_evals : 23477
        Scipy NelderMead     : 4836.068844317065         N_evals : 100000
        Minuit Migrad        : 5009.794037492836         N_evals : 1982

Function :  func_28
        ARRDE                : 3032.9149896087315        N_evals : 100045
        NelderMead           : 3179.4533923434105        N_evals : 100009
        L_BFGS_B             : 4339.758325755842         N_evals : 1512
        DA                   : 3469.9402344913833        N_evals : 100016
        L_BFGS               : 4268.639519427811         N_evals : 1408
        Scipy L_BFGS_B       : 4620.746460926448         N_evals : 231
        Scipy DA             : 3368.431252924286         N_evals : 25743
        Scipy NelderMead     : 4326.0290459127355        N_evals : 100000
        Minuit Migrad        : 4466.16896650251          N_evals : 1894

Function :  func_29
        ARRDE                : 3106.586982849417         N_evals : 100045
        NelderMead           : 3096.531302375519         N_evals : 100021
        L_BFGS_B             : 47773.78202137524         N_evals : 2373
        DA                   : 3141.6130415809744        N_evals : 100010
        L_BFGS               : 47244.06567485894         N_evals : 2752
        Scipy L_BFGS_B       : 49247.79514126138         N_evals : 330
        Scipy DA             : 3152.3085907140894        N_evals : 25919
        Scipy NelderMead     : 46714.00072793446         N_evals : 100000
        Minuit Migrad        : 47836.381445710744        N_evals : 1879

Function :  func_30
        ARRDE                : 3454.1126204808224        N_evals : 100045
        NelderMead           : 22918.574075735993        N_evals : 100001
        L_BFGS_B             : 455532080.98460054        N_evals : 2121
        DA                   : 106916.03853844912        N_evals : 100008
        L_BFGS               : 445170321.4239029         N_evals : 2395
        Scipy L_BFGS_B       : 505937779.04247105        N_evals : 231
        Scipy DA             : 109209.9207387307         N_evals : 59799
        Scipy NelderMead     : 485232128.89190733        N_evals : 100000
        Minuit Migrad        : 495684739.2473731         N_evals : 1923

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.97398954921276         N_evals : 100045
        NelderMead           : 250425718.5703963         N_evals : 100003
        L_BFGS_B             : 2878.6106795768783        N_evals : 3108
        DA                   : 9035.479444262133         N_evals : 100011
        L_BFGS               : 1836.2246069441626        N_evals : 2416
        Scipy L_BFGS_B       : 29976884575.383377        N_evals : 418
        Scipy DA             : 662.9100090171434         N_evals : 53375
        Scipy NelderMead     : 29963325809.53629         N_evals : 100000
        Minuit Migrad        : 29972756324.34399         N_evals : 3175

Function :  func_2
        ARRDE                : 199.92291590576446        N_evals : 100044
        NelderMead           : 1540.4934804779364        N_evals : 100006
        L_BFGS_B             : 7.502755353132613e+17     N_evals : 1386
        DA                   : 199.92597744190107        N_evals : 100012
        L_BFGS               : 7.564475030591148e+17     N_evals : 1366
        Scipy L_BFGS_B       : 8.869696164696824e+17     N_evals : 275
        Scipy DA             : 199.95752105397563        N_evals : 81282
        Scipy NelderMead     : 8.865879677833524e+17     N_evals : 100000
        Minuit Migrad        : 2.172880786247e+17        N_evals : 2958

Function :  func_3
        ARRDE                : 299.8984571313125         N_evals : 100045
        NelderMead           : 1667.8159473605817        N_evals : 100001
        L_BFGS_B             : 419.0537006796958         N_evals : 3171
        DA                   : 299.9989724723881         N_evals : 100009
        L_BFGS               : 490.4974525684888         N_evals : 7078
        Scipy L_BFGS_B       : 1343077.2922585437        N_evals : 330
        Scipy DA             : 319.63136609177957        N_evals : 100369
        Scipy NelderMead     : 1340121.1354931558        N_evals : 100000
        Minuit Migrad        : 21120.405284785265        N_evals : 2829

Function :  func_4
        ARRDE                : 399.9853371560608         N_evals : 100045
        NelderMead           : 447.8124807602607         N_evals : 100003
        L_BFGS_B             : 509.2401676227964         N_evals : 2205
        DA                   : 406.3056915658384         N_evals : 100021
        L_BFGS               : 408.07074838736366        N_evals : 6574
        Scipy L_BFGS_B       : 5902.144746857225         N_evals : 330
        Scipy DA             : 400.56084371713723        N_evals : 33443
        Scipy NelderMead     : 5898.885416913537         N_evals : 100000
        Minuit Migrad        : 5321.304945212138         N_evals : 2682

Function :  func_5
        ARRDE                : 503.02399633384124        N_evals : 100045
        NelderMead           : 527.2133144584726         N_evals : 100003
        L_BFGS_B             : 637.5515319554121         N_evals : 4158
        DA                   : 528.6922555478317         N_evals : 100017
        L_BFGS               : 647.1389818644826         N_evals : 2101
        Scipy L_BFGS_B       : 726.5457356437863         N_evals : 231
        Scipy DA             : 521.8358710939284         N_evals : 33047
        Scipy NelderMead     : 726.3621724997661         N_evals : 100000
        Minuit Migrad        : 726.6251574494711         N_evals : 2747

Function :  func_6
        ARRDE                : 599.8643705717615         N_evals : 100045
        NelderMead           : 602.1756319144124         N_evals : 100005
        L_BFGS_B             : 706.4480765011948         N_evals : 3108
        DA                   : 599.9289229827007         N_evals : 100007
        L_BFGS               : 659.2476374135205         N_evals : 5860
        Scipy L_BFGS_B       : 741.682247421374          N_evals : 319
        Scipy DA             : 599.9748468204334         N_evals : 37854
        Scipy NelderMead     : 741.4694017160443         N_evals : 100000
        Minuit Migrad        : 741.7011753171744         N_evals : 3200

Function :  func_7
        ARRDE                : 713.0785809072186         N_evals : 100045
        NelderMead           : 738.5481146869507         N_evals : 100002
        L_BFGS_B             : 812.7922927465183         N_evals : 4095
        DA                   : 734.8082809566149         N_evals : 100016
        L_BFGS               : 812.8814098426648         N_evals : 5356
        Scipy L_BFGS_B       : 939.7509136389721         N_evals : 341
        Scipy DA             : 734.5558157334877         N_evals : 38503
        Scipy NelderMead     : 939.3452071134508         N_evals : 100000
        Minuit Migrad        : 939.5826652934305         N_evals : 2694

Function :  func_8
        ARRDE                : 805.0114531673278         N_evals : 100045
        NelderMead           : 816.8299168627145         N_evals : 100003
        L_BFGS_B             : 872.2253623881882         N_evals : 9513
        DA                   : 810.690055576169          N_evals : 100012
        L_BFGS               : 875.0346640863272         N_evals : 4033
        Scipy L_BFGS_B       : 946.697108726903          N_evals : 231
        Scipy DA             : 811.7749801288732         N_evals : 42111
        Scipy NelderMead     : 946.2408891832066         N_evals : 100000
        Minuit Migrad        : 946.4933101563973         N_evals : 3277

Function :  func_9
        ARRDE                : 899.7035620261589         N_evals : 100044
        NelderMead           : 999.6556957408797         N_evals : 100006
        L_BFGS_B             : 1784.1129682766639        N_evals : 1911
        DA                   : 911.1174052039307         N_evals : 100012
        L_BFGS               : 1830.8259439142855        N_evals : 2563
        Scipy L_BFGS_B       : 4305.999378721955         N_evals : 297
        Scipy DA             : 946.4684956531622         N_evals : 47138
        Scipy NelderMead     : 4303.763719320696         N_evals : 100000
        Minuit Migrad        : 4305.436456945482         N_evals : 2825

Function :  func_10
        ARRDE                : 1143.3215043657358        N_evals : 100044
        NelderMead           : 1860.4366709331052        N_evals : 100009
        L_BFGS_B             : 3139.678256989393         N_evals : 6174
        DA                   : 1953.7085543813878        N_evals : 100018
        L_BFGS               : 3080.1655135206997        N_evals : 2395
        Scipy L_BFGS_B       : 6138.26368614968          N_evals : 374
        Scipy DA             : 1718.7907386738575        N_evals : 37205
        Scipy NelderMead     : 6135.599067104017         N_evals : 100000
        Minuit Migrad        : 6137.395909624754         N_evals : 2709

Function :  func_11
        ARRDE                : 1104.8680312364263        N_evals : 100045
        NelderMead           : 1158.7748493665379        N_evals : 100001
        L_BFGS_B             : 1131.0180009853088        N_evals : 3612
        DA                   : 1115.116661605461         N_evals : 100018
        L_BFGS               : 1134.0201840044315        N_evals : 2983
        Scipy L_BFGS_B       : 65031667.059521675        N_evals : 385
        Scipy DA             : 1108.2601099700066        N_evals : 53507
        Scipy NelderMead     : 64998574.46818639         N_evals : 100000
        Minuit Migrad        : 65015242.45812702         N_evals : 2816

Function :  func_12
        ARRDE                : 1199.83952566857          N_evals : 100044
        NelderMead           : 8218.914798836537         N_evals : 100003
        L_BFGS_B             : 7454.747343308128         N_evals : 2247
        DA                   : 1500.6445406376884        N_evals : 100015
        L_BFGS               : 8224.858415559303         N_evals : 2773
        Scipy L_BFGS_B       : 5721979276.617425         N_evals : 231
        Scipy DA             : 396599.0214210665         N_evals : 100108
        Scipy NelderMead     : 5718574595.373932         N_evals : 100000
        Minuit Migrad        : 5720238282.895653         N_evals : 2757

Function :  func_13
        ARRDE                : 1302.8286117272523        N_evals : 100044
        NelderMead           : 1492.0845792883574        N_evals : 100008
        L_BFGS_B             : 11425.99617078585         N_evals : 3192
        DA                   : 1336.8001996003577        N_evals : 100017
        L_BFGS               : 10564.565700710815        N_evals : 3025
        Scipy L_BFGS_B       : 2841737598.549046         N_evals : 286
        Scipy DA             : 20478.683189831783        N_evals : 43167
        Scipy NelderMead     : 2840391391.153341         N_evals : 100000
        Minuit Migrad        : 1182363450.77991          N_evals : 2700

Function :  func_14
        ARRDE                : 1401.668918151325         N_evals : 100045
        NelderMead           : 1587.7026776897246        N_evals : 100009
        L_BFGS_B             : 7935.741641268469         N_evals : 2814
        DA                   : 1628.9088074074093        N_evals : 100013
        L_BFGS               : 6257.007269433303         N_evals : 2458
        Scipy L_BFGS_B       : 2215935475.817911         N_evals : 319
        Scipy DA             : 2188.11299798793          N_evals : 41451
        Scipy NelderMead     : 2214414132.28249          N_evals : 100000
        Minuit Migrad        : 2214951266.7481685        N_evals : 3030

Function :  func_15
        ARRDE                : 1499.758241892499         N_evals : 100045
        NelderMead           : 1817.036105926235         N_evals : 100008
        L_BFGS_B             : 17498.438421452483        N_evals : 3255
        DA                   : 1504.2407142718987        N_evals : 100018
        L_BFGS               : 21151.504600980043        N_evals : 2962
        Scipy L_BFGS_B       : 769631833.7790315         N_evals : 231
        Scipy DA             : 1670.1669182975747        N_evals : 44883
        Scipy NelderMead     : 769222486.7922529         N_evals : 100000
        Minuit Migrad        : 769371639.4157549         N_evals : 2913

Function :  func_16
        ARRDE                : 1602.9659072261927        N_evals : 100045
        NelderMead           : 1659.276760310669         N_evals : 100006
        L_BFGS_B             : 2511.2601189739726        N_evals : 2730
        DA                   : 1723.219374266837         N_evals : 100022
        L_BFGS               : 2417.1605592695405        N_evals : 2416
        Scipy L_BFGS_B       : 3438.226214139711         N_evals : 385
        Scipy DA             : 1869.6711114003672        N_evals : 49921
        Scipy NelderMead     : 3436.3474073438074        N_evals : 100000
        Minuit Migrad        : 3437.133409730512         N_evals : 2819

Function :  func_17
        ARRDE                : 1701.4304725436027        N_evals : 100045
        NelderMead           : 1782.034071923235         N_evals : 100005
        L_BFGS_B             : 2551.8382100108624        N_evals : 4116
        DA                   : 1705.4583677800651        N_evals : 100007
        L_BFGS               : 1834.8988726658097        N_evals : 2122
        Scipy L_BFGS_B       : 3283.2709171921733        N_evals : 341
        Scipy DA             : 1758.2362500628446        N_evals : 35093
        Scipy NelderMead     : 3281.508828370808         N_evals : 100000
        Minuit Migrad        : 3282.494897207339         N_evals : 2820

Function :  func_18
        ARRDE                : 1820.4132209366423        N_evals : 100045
        NelderMead           : 4098.563279748932         N_evals : 100008
        L_BFGS_B             : 8073.532915808978         N_evals : 2982
        DA                   : 1875.651813435142         N_evals : 100021
        L_BFGS               : 3014.31728790276          N_evals : 1639
        Scipy L_BFGS_B       : 14468711922.636732        N_evals : 374
        Scipy DA             : 24331.147625435282        N_evals : 43838
        Scipy NelderMead     : 14461707174.241901        N_evals : 100000
        Minuit Migrad        : 14466465837.632093        N_evals : 2947

Function :  func_19
        ARRDE                : 1900.722250593314         N_evals : 100045
        NelderMead           : 2038.1319162890552        N_evals : 100011
        L_BFGS_B             : 5991.705480969812         N_evals : 3549
        DA                   : 1911.4488118003471        N_evals : 100002
        L_BFGS               : 2125.503666966294         N_evals : 4159
        Scipy L_BFGS_B       : 12291153135.940708        N_evals : 319
        Scipy DA             : 5624.405233596111         N_evals : 49481
        Scipy NelderMead     : 12283832540.37543         N_evals : 100000
        Minuit Migrad        : 12287946952.6033          N_evals : 2969

Function :  func_20
        ARRDE                : 1999.3375271133614        N_evals : 100044
        NelderMead           : 2103.139451897375         N_evals : 100005
        L_BFGS_B             : 2445.409159240669         N_evals : 4473
        DA                   : 2007.869068629202         N_evals : 100010
        L_BFGS               : 2446.036812421946         N_evals : 4873
        Scipy L_BFGS_B       : 3152.5764066816378        N_evals : 352
        Scipy DA             : 2002.2481530395007        N_evals : 53529
        Scipy NelderMead     : 3150.9713472833846        N_evals : 100000
        Minuit Migrad        : 3151.5909459292975        N_evals : 2846

Function :  func_21
        ARRDE                : 2206.394295799416         N_evals : 100045
        NelderMead           : 2214.1048401020817        N_evals : 100006
        L_BFGS_B             : 2425.327305583956         N_evals : 4116
        DA                   : 2224.5240114051862        N_evals : 100014
        L_BFGS               : 2471.6097880841917        N_evals : 3277
        Scipy L_BFGS_B       : 2828.7570421783885        N_evals : 484
        Scipy DA             : 2207.8003909300096        N_evals : 40296
        Scipy NelderMead     : 2827.236064961357         N_evals : 100000
        Minuit Migrad        : 2828.2972738335247        N_evals : 2912

Function :  func_22
        ARRDE                : 2220.367848829268         N_evals : 100045
        NelderMead           : 2320.268416811298         N_evals : 100008
        L_BFGS_B             : 4630.276571387268         N_evals : 2856
        DA                   : 2306.141702244525         N_evals : 100010
        L_BFGS               : 4209.402614857713         N_evals : 2920
        Scipy L_BFGS_B       : 5302.009855794798         N_evals : 231
        Scipy DA             : 2303.024508494588         N_evals : 40527
        Scipy NelderMead     : 5300.384358597136         N_evals : 100000
        Minuit Migrad        : 5301.595205745655         N_evals : 2940

Function :  func_23
        ARRDE                : 2606.592474210589         N_evals : 100045
        NelderMead           : 2651.427284034966         N_evals : 100002
        L_BFGS_B             : 3423.1256422964907        N_evals : 1848
        DA                   : 2633.8037896398746        N_evals : 100019
        L_BFGS               : 3311.0711938659847        N_evals : 9409
        Scipy L_BFGS_B       : 4335.936069420504         N_evals : 539
        Scipy DA             : 2628.4436752123015        N_evals : 34378
        Scipy NelderMead     : 4334.1049847947415        N_evals : 100000
        Minuit Migrad        : 4335.025486519908         N_evals : 3116

Function :  func_24
        ARRDE                : 2499.144448050211         N_evals : 100044
        NelderMead           : 2752.3196646159877        N_evals : 100010
        L_BFGS_B             : 3347.1063335395957        N_evals : 1575
        DA                   : 2770.646656881288         N_evals : 100005
        L_BFGS               : 3391.3801807681907        N_evals : 1597
        Scipy L_BFGS_B       : 3391.816500979647         N_evals : 363
        Scipy DA             : 2769.2948015817346        N_evals : 31441
        Scipy NelderMead     : 3390.7678073998563        N_evals : 100000
        Minuit Migrad        : 3391.5341428599586        N_evals : 2710

Function :  func_25
        ARRDE                : 2897.0411403772046        N_evals : 100045
        NelderMead           : 2947.501163702278         N_evals : 100009
        L_BFGS_B             : 3000.410324448454         N_evals : 7644
        DA                   : 2899.7701997629674        N_evals : 100020
        L_BFGS               : 3036.5531127906793        N_evals : 4180
        Scipy L_BFGS_B       : 4820.403803226335         N_evals : 429
        Scipy DA             : 2948.129277541235         N_evals : 35885
        Scipy NelderMead     : 4818.626630537185         N_evals : 100000
        Minuit Migrad        : 4820.013072891607         N_evals : 3263

Function :  func_26
        ARRDE                : 2599.1997422579207        N_evals : 100045
        NelderMead           : 3266.8721460303177        N_evals : 100006
        L_BFGS_B             : 5314.837265835571         N_evals : 4956
        DA                   : 2799.153462455562         N_evals : 100004
        L_BFGS               : 2799.6534573138742        N_evals : 6175
        Scipy L_BFGS_B       : 5734.11658871078          N_evals : 231
        Scipy DA             : 2900.1655932880462        N_evals : 47688
        Scipy NelderMead     : 5731.425620692347         N_evals : 100000
        Minuit Migrad        : 5732.784984577089         N_evals : 2692

Function :  func_27
        ARRDE                : 3088.635718377062         N_evals : 100045
        NelderMead           : 3102.138871019347         N_evals : 100008
        L_BFGS_B             : 3985.8805165281524        N_evals : 7266
        DA                   : 3186.1616657069244        N_evals : 100018
        L_BFGS               : 3169.36487931358          N_evals : 5923
        Scipy L_BFGS_B       : 5055.848496956892         N_evals : 374
        Scipy DA             : 3097.135530125197         N_evals : 36864
        Scipy NelderMead     : 5053.793363768702         N_evals : 100000
        Minuit Migrad        : 3170.9339782155957        N_evals : 3012

Function :  func_28
        ARRDE                : 3099.1831041104274        N_evals : 100045
        NelderMead           : 3233.5882097224417        N_evals : 100007
        L_BFGS_B             : 4494.541029012757         N_evals : 1722
        DA                   : 3215.8538293297406        N_evals : 100018
        L_BFGS               : 3843.5869813167674        N_evals : 5965
        Scipy L_BFGS_B       : 4517.030500145132         N_evals : 231
        Scipy DA             : 3217.182640302305         N_evals : 55729
        Scipy NelderMead     : 4515.347789193575         N_evals : 100000
        Minuit Migrad        : 3388.0033666690283        N_evals : 3244

Function :  func_29
        ARRDE                : 3146.818557745588         N_evals : 100045
        NelderMead           : 3223.8334484851225        N_evals : 100002
        L_BFGS_B             : 3538.1805637517396        N_evals : 3318
        DA                   : 3198.108510631354         N_evals : 100020
        L_BFGS               : 3569.2943762295795        N_evals : 2185
        Scipy L_BFGS_B       : 48955.04401106232         N_evals : 231
        Scipy DA             : 3243.6696947949386        N_evals : 36369
        Scipy NelderMead     : 48936.56395404345         N_evals : 100000
        Minuit Migrad        : 3432.758653277318         N_evals : 3140

Function :  func_30
        ARRDE                : 3447.526135652937         N_evals : 100044
        NelderMead           : 15054.496189489022        N_evals : 100008
        L_BFGS_B             : 46768.59201285958         N_evals : 5397
        DA                   : 1888436.1830356773        N_evals : 100013
        L_BFGS               : 9773.071862772898         N_evals : 2752
        Scipy L_BFGS_B       : 506159534.8138832         N_evals : 231
        Scipy DA             : 87838.78383967647         N_evals : 100089
        Scipy NelderMead     : 505859172.9137379         N_evals : 100000
        Minuit Migrad        : 505959731.10538256        N_evals : 2769

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.99965568441243         N_evals : 100045
        NelderMead           : 411510483.0143577         N_evals : 100008
        L_BFGS_B             : 99.99974266892346         N_evals : 3255
        DA                   : 99.99964758925897         N_evals : 100021
        L_BFGS               : 102.51224266242104        N_evals : 2584
        Scipy L_BFGS_B       : 29975433231.454494        N_evals : 341
        Scipy DA             : 9525.140513432096         N_evals : 55883
        Scipy NelderMead     : 3261974710.6240864        N_evals : 100000
        Minuit Migrad        : 4696.276270522521         N_evals : 8204

Function :  func_2
        ARRDE                : 199.9994039717403         N_evals : 100045
        NelderMead           : 280.6718174861575         N_evals : 100012
        L_BFGS_B             : 200.0015072927467         N_evals : 3696
        DA                   : 199.99983015965012        N_evals : 100017
        L_BFGS               : 7.556722049752932e+17     N_evals : 1366
        Scipy L_BFGS_B       : 8.869638406639756e+17     N_evals : 231
        Scipy DA             : 200.00463296648388        N_evals : 56235
        Scipy NelderMead     : 75365.86209133535         N_evals : 100000
        Minuit Migrad        : 200.00538627302817        N_evals : 9180

Function :  func_3
        ARRDE                : 299.99896723240084        N_evals : 100045
        NelderMead           : 1351.859139658249         N_evals : 100006
        L_BFGS_B             : 299.99916261593165        N_evals : 5229
        DA                   : 299.9990081922694         N_evals : 100005
        L_BFGS               : 299.99942455837197        N_evals : 2710
        Scipy L_BFGS_B       : 1343217.3708453623        N_evals : 297
        Scipy DA             : 621.5523950409889         N_evals : 100149
        Scipy NelderMead     : 4108.968349322301         N_evals : 100000
        Minuit Migrad        : 310.11100640126386        N_evals : 7948

Function :  func_4
        ARRDE                : 399.9988165510882         N_evals : 100045
        NelderMead           : 403.6163085722612         N_evals : 100008
        L_BFGS_B             : 402.94446056175826        N_evals : 8106
        DA                   : 400.2175317046606         N_evals : 100009
        L_BFGS               : 404.78367958186396        N_evals : 5356
        Scipy L_BFGS_B       : 5901.661791017457         N_evals : 363
        Scipy DA             : 407.0511076668341         N_evals : 100090
        Scipy NelderMead     : 473.469492270753          N_evals : 100000
        Minuit Migrad        : 400.9799947815121         N_evals : 5761

Function :  func_5
        ARRDE                : 504.9950337896259         N_evals : 100045
        NelderMead           : 527.1818546296221         N_evals : 100006
        L_BFGS_B             : 621.3819666242026         N_evals : 5481
        DA                   : 516.9122408064221         N_evals : 100013
        L_BFGS               : 621.3821400076105         N_evals : 2647
        Scipy L_BFGS_B       : 726.7153289789646         N_evals : 231
        Scipy DA             : 518.9031337054248         N_evals : 40967
        Scipy NelderMead     : 634.928081385159          N_evals : 100000
        Minuit Migrad        : 561.8001949927622         N_evals : 4822

Function :  func_6
        ARRDE                : 599.9986118753684         N_evals : 100045
        NelderMead           : 619.1531792711021         N_evals : 100007
        L_BFGS_B             : 660.1088437605096         N_evals : 5460
        DA                   : 600.0933011562701         N_evals : 100010
        L_BFGS               : 660.1096607939446         N_evals : 3613
        Scipy L_BFGS_B       : 741.7753624774518         N_evals : 396
        Scipy DA             : 600.0247129828565         N_evals : 46434
        Scipy NelderMead     : 659.1465416464789         N_evals : 100000
        Minuit Migrad        : 650.3570906951594         N_evals : 4376

Function :  func_7
        ARRDE                : 711.5737047510712         N_evals : 100045
        NelderMead           : 732.7467043575933         N_evals : 100002
        L_BFGS_B             : 778.2094063345955         N_evals : 4242
        DA                   : 748.8476520678751         N_evals : 100010
        L_BFGS               : 811.2713595228851         N_evals : 2311
        Scipy L_BFGS_B       : 939.7164373854255         N_evals : 286
        Scipy DA             : 715.4509937910693         N_evals : 41484
        Scipy NelderMead     : 802.8436404595018         N_evals : 100000
        Minuit Migrad        : 792.4994158615726         N_evals : 4989

Function :  func_8
        ARRDE                : 804.9779909162004         N_evals : 100045
        NelderMead           : 843.0848906747862         N_evals : 100011
        L_BFGS_B             : 834.8219680252072         N_evals : 4284
        DA                   : 808.95177013287   N_evals : 100021
        L_BFGS               : 828.8514459992714         N_evals : 3298
        Scipy L_BFGS_B       : 946.6447552622569         N_evals : 363
        Scipy DA             : 817.9082611798573         N_evals : 39240
        Scipy NelderMead     : 946.6298297842018         N_evals : 100000
        Minuit Migrad        : 830.8436438245291         N_evals : 5157

Function :  func_9
        ARRDE                : 899.9965015948762         N_evals : 100044
        NelderMead           : 994.1777337812193         N_evals : 100003
        L_BFGS_B             : 1783.2350868435265        N_evals : 2415
        DA                   : 906.7264234710125         N_evals : 100015
        L_BFGS               : 1783.2221842916192        N_evals : 3718
        Scipy L_BFGS_B       : 4301.262308915138         N_evals : 462
        Scipy DA             : 901.5172337419739         N_evals : 54057
        Scipy NelderMead     : 1778.8550110071794        N_evals : 100000
        Minuit Migrad        : 1755.7830494897687        N_evals : 5378

Function :  func_10
        ARRDE                : 1018.7823450406715        N_evals : 100044
        NelderMead           : 1551.6346811924334        N_evals : 100003
        L_BFGS_B             : 3138.4927084683536        N_evals : 3990
        DA                   : 1954.3492313396844        N_evals : 100020
        L_BFGS               : 3138.4934622132314        N_evals : 3214
        Scipy L_BFGS_B       : 6138.308986782028         N_evals : 319
        Scipy DA             : 1367.3343340832785        N_evals : 42628
        Scipy NelderMead     : 3149.769101658298         N_evals : 100000
        Minuit Migrad        : 2740.7645499202995        N_evals : 4827

Function :  func_11
        ARRDE                : 1101.534032239261         N_evals : 100045
        NelderMead           : 1152.8455535489836        N_evals : 100012
        L_BFGS_B             : 1130.2055960887506        N_evals : 3171
        DA                   : 1106.7875924872956        N_evals : 100018
        L_BFGS               : 1132.4815849221511        N_evals : 3970
        Scipy L_BFGS_B       : 65027269.05111647         N_evals : 319
        Scipy DA             : 1113.7960561038444        N_evals : 100215
        Scipy NelderMead     : 1228.9858838602595        N_evals : 100000
        Minuit Migrad        : 1129.578312550509         N_evals : 7672

Function :  func_12
        ARRDE                : 1318.6485794081839        N_evals : 100045
        NelderMead           : 8219.687717487664         N_evals : 100003
        L_BFGS_B             : 1899.352770317027         N_evals : 5250
        DA                   : 1750.3658207126882        N_evals : 100013
        L_BFGS               : 2229.3199182286253        N_evals : 4936
        Scipy L_BFGS_B       : 5721203580.513788         N_evals : 352
        Scipy DA             : 2456997.582110197         N_evals : 100087
        Scipy NelderMead     : 553906.0438645157         N_evals : 100000
        Minuit Migrad        : 4781.938078472289         N_evals : 8156

Function :  func_13
        ARRDE                : 1304.9921757610862        N_evals : 100045
        NelderMead           : 1597.42230459353          N_evals : 100011
        L_BFGS_B             : 1467.9231355273143        N_evals : 4158
        DA                   : 1312.01299525334          N_evals : 100016
        L_BFGS               : 1499.6945896816221        N_evals : 6742
        Scipy L_BFGS_B       : 2841540530.5151534        N_evals : 385
        Scipy DA             : 8189.97113057223          N_evals : 46302
        Scipy NelderMead     : 9777.617303245743         N_evals : 100000
        Minuit Migrad        : 3412.2021019149165        N_evals : 7524

Function :  func_14
        ARRDE                : 1400.9906324210351        N_evals : 100045
        NelderMead           : 1578.4605362110967        N_evals : 100007
        L_BFGS_B             : 1456.9567815377873        N_evals : 6006
        DA                   : 1452.3967920641921        N_evals : 100004
        L_BFGS               : 1477.481176099491         N_evals : 5314
        Scipy L_BFGS_B       : 2215436174.4004235        N_evals : 396
        Scipy DA             : 2334.4847982200413        N_evals : 80996
        Scipy NelderMead     : 7762.169190775192         N_evals : 100000
        Minuit Migrad        : 1562.2415443387167        N_evals : 5732

Function :  func_15
        ARRDE                : 1500.4951608041026        N_evals : 100044
        NelderMead           : 1587.6195277259524        N_evals : 100009
        L_BFGS_B             : 1599.6237605382917        N_evals : 2877
        DA                   : 1503.1277084847704        N_evals : 100005
        L_BFGS               : 1535.6069724985055        N_evals : 9493
        Scipy L_BFGS_B       : 769548622.4956751         N_evals : 231
        Scipy DA             : 13530.58666126373         N_evals : 33135
        Scipy NelderMead     : 24736.05595603283         N_evals : 100000
        Minuit Migrad        : 1927.3129575310327        N_evals : 5019

Function :  func_16
        ARRDE                : 1601.063596606803         N_evals : 100044
        NelderMead           : 1635.7905982605994        N_evals : 100002
        L_BFGS_B             : 2423.1840637702417        N_evals : 3465
        DA                   : 1718.6893804226456        N_evals : 100012
        L_BFGS               : 2283.4460952721433        N_evals : 4894
        Scipy L_BFGS_B       : 3437.769078201145         N_evals : 231
        Scipy DA             : 1963.5638555751493        N_evals : 100000
        Scipy NelderMead     : 2387.4243751958065        N_evals : 100000
        Minuit Migrad        : 2060.436783535179         N_evals : 4869

Function :  func_17
        ARRDE                : 1700.2025213518575        N_evals : 100045
        NelderMead           : 1777.0945140029419        N_evals : 100012
        L_BFGS_B             : 1876.8875030383283        N_evals : 2940
        DA                   : 1725.7159573803065        N_evals : 100012
        L_BFGS               : 1788.0143774273845        N_evals : 2227
        Scipy L_BFGS_B       : 3283.0091642457046        N_evals : 264
        Scipy DA             : 1825.9860898790314        N_evals : 47512
        Scipy NelderMead     : 1955.624502599227         N_evals : 100000
        Minuit Migrad        : 1918.0427658290494        N_evals : 3566

Function :  func_18
        ARRDE                : 1802.0424755755075        N_evals : 100045
        NelderMead           : 3240.9576477599026        N_evals : 100004
        L_BFGS_B             : 2004.4829083809466        N_evals : 2457
        DA                   : 1824.8985540688266        N_evals : 100001
        L_BFGS               : 1946.2424908588023        N_evals : 2353
        Scipy L_BFGS_B       : 14468765592.803608        N_evals : 374
        Scipy DA             : 15138.421693962837        N_evals : 44157
        Scipy NelderMead     : 2551.1176890225834        N_evals : 100000
        Minuit Migrad        : 5287.861030830303         N_evals : 6569

Function :  func_19
        ARRDE                : 1900.2000505497808        N_evals : 100045
        NelderMead           : 1980.9708681253708        N_evals : 100005
        L_BFGS_B             : 1932.1677007324429        N_evals : 4116
        DA                   : 1904.8284318943404        N_evals : 100002
        L_BFGS               : 1913.8367971720184        N_evals : 4222
        Scipy L_BFGS_B       : 12289156082.302404        N_evals : 341
        Scipy DA             : 12909.360924871953        N_evals : 57588
        Scipy NelderMead     : 1163724.4374382212        N_evals : 100000
        Minuit Migrad        : 2651.1726476538424        N_evals : 5736

Function :  func_20
        ARRDE                : 1999.9937608835364        N_evals : 100045
        NelderMead           : 2118.119077407478         N_evals : 100015
        L_BFGS_B             : 2443.1753416408897        N_evals : 5292
        DA                   : 2005.0422082117534        N_evals : 100022
        L_BFGS               : 2586.8626076768564        N_evals : 3508
        Scipy L_BFGS_B       : 3152.3445816742355        N_evals : 231
        Scipy DA             : 2005.6107207990694        N_evals : 66509
        Scipy NelderMead     : 3152.0976061753117        N_evals : 100000
        Minuit Migrad        : 2348.896481942625         N_evals : 4630

Function :  func_21
        ARRDE                : 2199.9944226342704        N_evals : 100045
        NelderMead           : 2219.7396205948826        N_evals : 100009
        L_BFGS_B             : 2408.6090405082414        N_evals : 2625
        DA                   : 2202.656274040207         N_evals : 100005
        L_BFGS               : 2364.608858952653         N_evals : 2290
        Scipy L_BFGS_B       : 2828.6142411779188        N_evals : 231
        Scipy DA             : 2327.634517570187         N_evals : 39229
        Scipy NelderMead     : 2828.6021713729074        N_evals : 100000
        Minuit Migrad        : 2345.994161874921         N_evals : 4764

Function :  func_22
        ARRDE                : 2199.9935883882827        N_evals : 100045
        NelderMead           : 2313.7721158626237        N_evals : 100010
        L_BFGS_B             : 4202.892662430537         N_evals : 2079
        DA                   : 2301.2255474995577        N_evals : 100015
        L_BFGS               : 4202.892297532052         N_evals : 3613
        Scipy L_BFGS_B       : 5302.503969224863         N_evals : 341
        Scipy DA             : 2304.2037879002123        N_evals : 48216
        Scipy NelderMead     : 4599.592683785272         N_evals : 100000
        Minuit Migrad        : 2335.8328155220856        N_evals : 6014

Function :  func_23
        ARRDE                : 2605.1029586095183        N_evals : 100045
        NelderMead           : 2645.551537143992         N_evals : 100010
        L_BFGS_B             : 3303.602382262219         N_evals : 4389
        DA                   : 2665.5241567093417        N_evals : 100003
        L_BFGS               : 3303.601753622085         N_evals : 1849
        Scipy L_BFGS_B       : 4335.935485219025         N_evals : 231
        Scipy DA             : 2615.0689067492635        N_evals : 100177
        Scipy NelderMead     : 3318.557357295846         N_evals : 100000
        Minuit Migrad        : 2823.9878527020287        N_evals : 5306

Function :  func_24
        ARRDE                : 2499.9938366437364        N_evals : 100044
        NelderMead           : 2500.024828910897         N_evals : 100009
        L_BFGS_B             : 2499.9989506545553        N_evals : 4725
        DA                   : 2791.021975606074         N_evals : 100006
        L_BFGS               : 2500.003833816128         N_evals : 3277
        Scipy L_BFGS_B       : 3392.2103871641966        N_evals : 231
        Scipy DA             : 2762.6129571083984        N_evals : 44432
        Scipy NelderMead     : 3392.1947620781852        N_evals : 100000
        Minuit Migrad        : 2743.842891315348         N_evals : 4802

Function :  func_25
        ARRDE                : 2898.068637359863         N_evals : 100045
        NelderMead           : 2948.5641858409804        N_evals : 100009
        L_BFGS_B             : 2945.4021453179853        N_evals : 4200
        DA                   : 2898.914790401096         N_evals : 100007
        L_BFGS               : 2945.0227546371093        N_evals : 3928
        Scipy L_BFGS_B       : 4820.809604336691         N_evals : 319
        Scipy DA             : 2946.585921218999         N_evals : 47633
        Scipy NelderMead     : 4820.763396696243         N_evals : 100000
        Minuit Migrad        : 2899.6051197038846        N_evals : 4717

Function :  func_26
        ARRDE                : 2799.9931200131255        N_evals : 100045
        NelderMead           : 3009.7316690155767        N_evals : 100012
        L_BFGS_B             : 4988.193165884794         N_evals : 2877
        DA                   : 2799.993994017318         N_evals : 100007
        L_BFGS               : 4621.358120102736         N_evals : 3214
        Scipy L_BFGS_B       : 5733.9128690783855        N_evals : 341
        Scipy DA             : 2900.0043012861006        N_evals : 60470
        Scipy NelderMead     : 5733.879857090661         N_evals : 100000
        Minuit Migrad        : 2995.782434440826         N_evals : 5008

Function :  func_27
        ARRDE                : 3089.5084587328574        N_evals : 100045
        NelderMead           : 3100.3927598270534        N_evals : 100008
        L_BFGS_B             : 3201.1096989832076        N_evals : 2016
        DA                   : 3191.8602891458386        N_evals : 100009
        L_BFGS               : 3370.152045736729         N_evals : 3571
        Scipy L_BFGS_B       : 5055.88822687667          N_evals : 231
        Scipy DA             : 3105.683195243443         N_evals : 49855
        Scipy NelderMead     : 3561.388379127069         N_evals : 100000
        Minuit Migrad        : 3189.6401713157898        N_evals : 5649

Function :  func_28
        ARRDE                : 3099.9938885236206        N_evals : 100044
        NelderMead           : 3232.535107381396         N_evals : 100011
        L_BFGS_B             : 3418.758505923391         N_evals : 4746
        DA                   : 3099.9912573140628        N_evals : 100012
        L_BFGS               : 3297.507008585088         N_evals : 2752
        Scipy L_BFGS_B       : 4517.336569792302         N_evals : 231
        Scipy DA             : 3169.136317444072         N_evals : 100203
        Scipy NelderMead     : 4517.308772509756         N_evals : 100000
        Minuit Migrad        : 3100.0851976881295        N_evals : 6623

Function :  func_29
        ARRDE                : 3154.6926942245786        N_evals : 100045
        NelderMead           : 3211.7307313763795        N_evals : 100009
        L_BFGS_B             : 3359.623494239029         N_evals : 3570
        DA                   : 3182.661434273551         N_evals : 100008
        L_BFGS               : 3411.2192756296076        N_evals : 4705
        Scipy L_BFGS_B       : 48958.469759465355        N_evals : 231
        Scipy DA             : 3189.424251958579         N_evals : 40780
        Scipy NelderMead     : 16532.095702945313        N_evals : 100000
        Minuit Migrad        : 3396.213783187279         N_evals : 4052

Function :  func_30
        ARRDE                : 3412.295336409609         N_evals : 100044
        NelderMead           : 11616.524650425132        N_evals : 100005
        L_BFGS_B             : 5304.392267674555         N_evals : 2646
        DA                   : 3948.2698338529017        N_evals : 100022
        L_BFGS               : 4132.987421074662         N_evals : 4936
        Scipy L_BFGS_B       : 506077241.6708051         N_evals : 319
        Scipy DA             : 467493.100681527          N_evals : 100015
        Scipy NelderMead     : 822823.899574373          N_evals : 100000
        Minuit Migrad        : 1346081.6218397561        N_evals : 7181

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.99999751719136         N_evals : 100045
        NelderMead           : 411510501.72534627        N_evals : 100006
        L_BFGS_B             : 99.99999779301376         N_evals : 1869
        DA                   : 99.99999583687155         N_evals : 100008
        L_BFGS               : 99.99999811741898         N_evals : 2290
        Scipy L_BFGS_B       : 22097418029.7505          N_evals : 836
        Scipy DA             : 5176.843214574206         N_evals : 40747
        Scipy NelderMead     : 2422.988133120459         N_evals : 6951
        Minuit Migrad        : 100.00006918869452        N_evals : 816

Function :  func_2
        ARRDE                : 199.99999339314   N_evals : 100045
        NelderMead           : 340.031347288827          N_evals : 100001
        L_BFGS_B             : 200.00084391445952        N_evals : 4935
        DA                   : 200.00050007089212        N_evals : 100015
        L_BFGS               : 7.556704944803493e+17     N_evals : 1366
        Scipy L_BFGS_B       : 8.869645460851034e+17     N_evals : 231
        Scipy DA             : 200.00055279858842        N_evals : 59513
        Scipy NelderMead     : 200.0000007337802         N_evals : 9171
        Minuit Migrad        : 200.00010594758123        N_evals : 6948

Function :  func_3
        ARRDE                : 299.9999901966331         N_evals : 100045
        NelderMead           : 299.9999908884268         N_evals : 100007
        L_BFGS_B             : 299.99999486730593        N_evals : 2604
        DA                   : 299.99998810897887        N_evals : 100014
        L_BFGS               : 299.9999946845395         N_evals : 2878
        Scipy L_BFGS_B       : 19615.642367441516        N_evals : 924
        Scipy DA             : 1156.5509861366247        N_evals : 100234
        Scipy NelderMead     : 299.999992425618          N_evals : 7653
        Minuit Migrad        : 301.49456371031744        N_evals : 2206

Function :  func_4
        ARRDE                : 399.99998698858326        N_evals : 100044
        NelderMead           : 421.63355047274   N_evals : 100005
        L_BFGS_B             : 400.0028656171424         N_evals : 5943
        DA                   : 400.0019729919129         N_evals : 100004
        L_BFGS               : 400.00111695889086        N_evals : 5902
        Scipy L_BFGS_B       : 5901.656443009923         N_evals : 231
        Scipy DA             : 404.25633564155794        N_evals : 100029
        Scipy NelderMead     : 403.36761746871224        N_evals : 6708
        Minuit Migrad        : 400.0000146646939         N_evals : 1266

Function :  func_5
        ARRDE                : 502.9848613713583         N_evals : 100045
        NelderMead           : 525.8688839014476         N_evals : 100009
        L_BFGS_B             : 632.3276454133297         N_evals : 1911
        DA                   : 516.9142530428069         N_evals : 100014
        L_BFGS               : 621.383373293557          N_evals : 1702
        Scipy L_BFGS_B       : 726.7145603573398         N_evals : 341
        Scipy DA             : 525.8688936653596         N_evals : 42111
        Scipy NelderMead     : 619.4643474640518         N_evals : 4693
        Minuit Migrad        : 624.3677138884559         N_evals : 393

Function :  func_6
        ARRDE                : 599.9999869998317         N_evals : 100044
        NelderMead           : 608.3064089746418         N_evals : 100005
        L_BFGS_B             : 660.1105304503817         N_evals : 1932
        DA                   : 600.000029520358          N_evals : 100022
        L_BFGS               : 660.1105057870227         N_evals : 2059
        Scipy L_BFGS_B       : 741.7754907770716         N_evals : 253
        Scipy DA             : 600.000255280635          N_evals : 52484
        Scipy NelderMead     : 659.2185644798254         N_evals : 3737
        Minuit Migrad        : 659.0966443218176         N_evals : 537

Function :  func_7
        ARRDE                : 713.3229871796216         N_evals : 100045
        NelderMead           : 732.7427836272224         N_evals : 100010
        L_BFGS_B             : 778.2115010450884         N_evals : 1407
        DA                   : 733.8179870302197         N_evals : 100003
        L_BFGS               : 778.2115050609812         N_evals : 1114
        Scipy L_BFGS_B       : 891.8949607260842         N_evals : 297
        Scipy DA             : 721.7974979880865         N_evals : 56422
        Scipy NelderMead     : 811.2731264144727         N_evals : 3296
        Minuit Migrad        : 797.5708625221881         N_evals : 734

Function :  func_8
        ARRDE                : 804.9765584584326         N_evals : 100044
        NelderMead           : 842.4968650489645         N_evals : 100013
        L_BFGS_B             : 831.8385984225299         N_evals : 2226
        DA                   : 808.9546011265818         N_evals : 100014
        L_BFGS               : 828.8537243093589         N_evals : 1366
        Scipy L_BFGS_B       : 930.9765355368567         N_evals : 616
        Scipy DA             : 811.9395238193504         N_evals : 46137
        Scipy NelderMead     : 831.8385978559583         N_evals : 5122
        Minuit Migrad        : 831.8386257570597         N_evals : 658

Function :  func_9
        ARRDE                : 899.999969261106          N_evals : 100044
        NelderMead           : 993.6316409473914         N_evals : 100002
        L_BFGS_B             : 1783.2257181887187        N_evals : 2541
        DA                   : 911.091103704458          N_evals : 100016
        L_BFGS               : 1783.2257156653684        N_evals : 2962
        Scipy L_BFGS_B       : 2310.838821331191         N_evals : 627
        Scipy DA             : 901.7278267155689         N_evals : 77322
        Scipy NelderMead     : 1778.8623240007043        N_evals : 4367
        Minuit Migrad        : 1772.4757397506983        N_evals : 655

Function :  func_10
        ARRDE                : 1003.7965075498726        N_evals : 100044
        NelderMead           : 1551.1057231723819        N_evals : 100011
        L_BFGS_B             : 3138.5006720504916        N_evals : 1806
        DA                   : 1954.3555788736776        N_evals : 100022
        L_BFGS               : 3500.875297707733         N_evals : 3529
        Scipy L_BFGS_B       : 4686.596532251753         N_evals : 440
        Scipy DA             : 1455.1085065201598        N_evals : 45510
        Scipy NelderMead     : 3039.70743484738          N_evals : 5650
        Minuit Migrad        : 3534.6343905478475        N_evals : 461

Function :  func_11
        ARRDE                : 1101.9130266494954        N_evals : 100045
        NelderMead           : 1151.7896627443768        N_evals : 100008
        L_BFGS_B             : 1182.3128196457465        N_evals : 6468
        DA                   : 1110.9493911721636        N_evals : 100013
        L_BFGS               : 1140.8205122319953        N_evals : 4936
        Scipy L_BFGS_B       : 65027135.62521542         N_evals : 286
        Scipy DA             : 1119.9052562032973        N_evals : 100075
        Scipy NelderMead     : 1184.7297225789503        N_evals : 5988
        Minuit Migrad        : 1285.771833239217         N_evals : 3615

Function :  func_12
        ARRDE                : 1200.2081148538743        N_evals : 100044
        NelderMead           : 8219.687778735673         N_evals : 100001
        L_BFGS_B             : 1512.0777231854474        N_evals : 3507
        DA                   : 1634.4875559356146        N_evals : 100005
        L_BFGS               : 1835.3088021470523        N_evals : 3361
        Scipy L_BFGS_B       : 5721203390.98989          N_evals : 231
        Scipy DA             : 3555597.5551406275        N_evals : 100173
        Scipy NelderMead     : 11402.767506888602        N_evals : 100000
        Minuit Migrad        : 1318.6733509771022        N_evals : 8715

Function :  func_13
        ARRDE                : 1304.1087408084663        N_evals : 100045
        NelderMead           : 1542.044157940823         N_evals : 100002
        L_BFGS_B             : 1577.5511576293245        N_evals : 4515
        DA                   : 1339.3677800492367        N_evals : 100009
        L_BFGS               : 1473.398292543709         N_evals : 5125
        Scipy L_BFGS_B       : 2841537163.967545         N_evals : 429
        Scipy DA             : 4781.081690299964         N_evals : 47380
        Scipy NelderMead     : 12616.808206856933        N_evals : 100000
        Minuit Migrad        : 1318.4603419872433        N_evals : 8879

Function :  func_14
        ARRDE                : 1400.99492122921          N_evals : 100045
        NelderMead           : 1570.2555416571834        N_evals : 100009
        L_BFGS_B             : 1537.5055464543284        N_evals : 3801
        DA                   : 1422.75524729409          N_evals : 100016
        L_BFGS               : 1458.862350138285         N_evals : 2983
        Scipy L_BFGS_B       : 2215435602.920833         N_evals : 231
        Scipy DA             : 1649.4182549246668        N_evals : 42914
        Scipy NelderMead     : 8421.508876883721         N_evals : 100000
        Minuit Migrad        : 1617.2719448900284        N_evals : 5315

Function :  func_15
        ARRDE                : 1501.4739492658132        N_evals : 100045
        NelderMead           : 1588.5016960728824        N_evals : 100003
        L_BFGS_B             : 1567.4489003446197        N_evals : 4494
        DA                   : 1518.456091881986         N_evals : 100018
        L_BFGS               : 1528.5511071078172        N_evals : 2815
        Scipy L_BFGS_B       : 769548247.5403284         N_evals : 209
        Scipy DA             : 1950.660954513282         N_evals : 80413
        Scipy NelderMead     : 15169.154745137783        N_evals : 100000
        Minuit Migrad        : 1538.00810080853          N_evals : 6192

Function :  func_16
        ARRDE                : 1601.050074308418         N_evals : 100045
        NelderMead           : 1600.8843697114792        N_evals : 100006
        L_BFGS_B             : 2464.5775200174535        N_evals : 3969
        DA                   : 1723.451314610054         N_evals : 100008
        L_BFGS               : 2316.681504698129         N_evals : 2941
        Scipy L_BFGS_B       : 3437.7629818131904        N_evals : 231
        Scipy DA             : 1736.905288545219         N_evals : 100000
        Scipy NelderMead     : 2310.009476003972         N_evals : 3658
        Minuit Migrad        : 1611.4312270950584        N_evals : 6461

Function :  func_17
        ARRDE                : 1701.105636641274         N_evals : 100045
        NelderMead           : 1776.2905766741853        N_evals : 100011
        L_BFGS_B             : 1885.8343672087624        N_evals : 2310
        DA                   : 1706.0489525285302        N_evals : 100009
        L_BFGS               : 1751.3990786691047        N_evals : 3634
        Scipy L_BFGS_B       : 2382.9276113438186        N_evals : 308
        Scipy DA             : 1741.7465062234203        N_evals : 58864
        Scipy NelderMead     : 2683.235343796058         N_evals : 1350
        Minuit Migrad        : 1796.5374941390548        N_evals : 4240

Function :  func_18
        ARRDE                : 1800.3843923439567        N_evals : 100045
        NelderMead           : 2325.796563421607         N_evals : 100011
        L_BFGS_B             : 1876.898796726942         N_evals : 2919
        DA                   : 1805.0794082456644        N_evals : 100021
        L_BFGS               : 1860.472098396039         N_evals : 5566
        Scipy L_BFGS_B       : 305148756.70617896        N_evals : 1243
        Scipy DA             : 11343.907734424596        N_evals : 44300
        Scipy NelderMead     : 1865.9907900902956        N_evals : 4711
        Minuit Migrad        : 1836.164807977784         N_evals : 9663

Function :  func_19
        ARRDE                : 1900.01938573213          N_evals : 100044
        NelderMead           : 1980.4178743956556        N_evals : 100002
        L_BFGS_B             : 1914.993741965292         N_evals : 3969
        DA                   : 1904.024465664457         N_evals : 100002
        L_BFGS               : 1906.8550380730214        N_evals : 5377
        Scipy L_BFGS_B       : 12289135565.028492        N_evals : 308
        Scipy DA             : 2017.4876762270567        N_evals : 42111
        Scipy NelderMead     : 2585.467260875594         N_evals : 2769
        Minuit Migrad        : 1903.076183004396         N_evals : 10993

Function :  func_20
        ARRDE                : 1999.9999345828169        N_evals : 100044
        NelderMead           : 2065.5899446394014        N_evals : 100005
        L_BFGS_B             : 2526.4802508281564        N_evals : 5061
        DA                   : 2017.034338660544         N_evals : 100002
        L_BFGS               : 2455.624929819974         N_evals : 1765
        Scipy L_BFGS_B       : 2935.7330447982117        N_evals : 935
        Scipy DA             : 2000.9974749810865        N_evals : 72328
        Scipy NelderMead     : 2629.9265436115747        N_evals : 3398
        Minuit Migrad        : 2590.515847851497         N_evals : 452

Function :  func_21
        ARRDE                : 2199.999939344757         N_evals : 100045
        NelderMead           : 2209.3077176057704        N_evals : 100005
        L_BFGS_B             : 2413.816724161348         N_evals : 567
        DA                   : 2366.69194482348          N_evals : 100010
        L_BFGS               : 2427.9074720301533        N_evals : 1492
        Scipy L_BFGS_B       : 2828.6145443510914        N_evals : 297
        Scipy DA             : 2330.4547912604075        N_evals : 44124
        Scipy NelderMead     : 2366.6578828022407        N_evals : 7131
        Minuit Migrad        : 2373.7395426760945        N_evals : 748

Function :  func_22
        ARRDE                : 2299.999941341407         N_evals : 100044
        NelderMead           : 2310.0095632067537        N_evals : 100006
        L_BFGS_B             : 2351.0817624749448        N_evals : 4284
        DA                   : 2300.821213533321         N_evals : 100015
        L_BFGS               : 4051.6423921456544        N_evals : 1975
        Scipy L_BFGS_B       : 4241.792951393489         N_evals : 440
        Scipy DA             : 2301.603983366127         N_evals : 63946
        Scipy NelderMead     : 4506.392759551173         N_evals : 100000
        Minuit Migrad        : 2707.1981844825186        N_evals : 2403

Function :  func_23
        ARRDE                : 2604.7463757640085        N_evals : 100045
        NelderMead           : 2645.3739692865943        N_evals : 100008
        L_BFGS_B             : 3246.5300632811663        N_evals : 1344
        DA                   : 2626.5464006874495        N_evals : 100011
        L_BFGS               : 3303.6106646127055        N_evals : 1849
        Scipy L_BFGS_B       : 4335.929883782289         N_evals : 231
        Scipy DA             : 2617.301591157175         N_evals : 100146
        Scipy NelderMead     : 3303.610594708305         N_evals : 4816
        Minuit Migrad        : 3303.6106275213156        N_evals : 704

Function :  func_24
        ARRDE                : 2499.99993709232          N_evals : 100044
        NelderMead           : 2500.0001050928217        N_evals : 100006
        L_BFGS_B             : 2500.000084681375         N_evals : 3360
        DA                   : 2760.74892909843          N_evals : 100011
        L_BFGS               : 2500.0001306005515        N_evals : 2479
        Scipy L_BFGS_B       : 3392.208809276254         N_evals : 220
        Scipy DA             : 2745.6010061072634        N_evals : 44795
        Scipy NelderMead     : 2680.449906836158         N_evals : 6515
        Minuit Migrad        : 2500.0000145691192        N_evals : 4252

Function :  func_25
        ARRDE                : 2699.9999400842157        N_evals : 100045
        NelderMead           : 2957.9131071019688        N_evals : 100012
        L_BFGS_B             : 2955.891416611311         N_evals : 2310
        DA                   : 2898.6010815514765        N_evals : 100020
        L_BFGS               : 2946.366989279092         N_evals : 1786
        Scipy L_BFGS_B       : 4820.812318524614         N_evals : 231
        Scipy DA             : 2943.7088398334745        N_evals : 43068
        Scipy NelderMead     : 3146.362210922964         N_evals : 4077
        Minuit Migrad        : 2945.551614324517         N_evals : 2161

Function :  func_26
        ARRDE                : 2799.9999340093987        N_evals : 100045
        NelderMead           : 2947.1492954076416        N_evals : 100004
        L_BFGS_B             : 4621.845210086224         N_evals : 1470
        DA                   : 2799.9999544728084        N_evals : 100015
        L_BFGS               : 4988.055970315561         N_evals : 3319
        Scipy L_BFGS_B       : 5733.919111649673         N_evals : 231
        Scipy DA             : 3079.1227718496584        N_evals : 59062
        Scipy NelderMead     : 4833.112527113192         N_evals : 100000
        Minuit Migrad        : 4988.055723905056         N_evals : 3270

Function :  func_27
        ARRDE                : 3089.517894167052         N_evals : 100045
        NelderMead           : 3100.2684699624647        N_evals : 100010
        L_BFGS_B             : 3184.57373604425          N_evals : 2604
        DA                   : 3185.4086186851227        N_evals : 100014
        L_BFGS               : 3101.393791744527         N_evals : 3802
        Scipy L_BFGS_B       : 3440.4689456641668        N_evals : 770
        Scipy DA             : 3104.8672705852055        N_evals : 61251
        Scipy NelderMead     : 3217.8916155233333        N_evals : 6008
        Minuit Migrad        : 3152.5371669066544        N_evals : 1450

Function :  func_28
        ARRDE                : 3099.999908587518         N_evals : 100044
        NelderMead           : 3229.0161330062433        N_evals : 100006
        L_BFGS_B             : 3396.1080017403224        N_evals : 2772
        DA                   : 3446.4844626390523        N_evals : 100006
        L_BFGS               : 3287.3359565799456        N_evals : 5734
        Scipy L_BFGS_B       : 4517.335304975492         N_evals : 308
        Scipy DA             : 3165.635309121298         N_evals : 100103
        Scipy NelderMead     : 3383.748044911579         N_evals : 7569
        Minuit Migrad        : 3383.7340127597354        N_evals : 4379

Function :  func_29
        ARRDE                : 3151.433549682732         N_evals : 100045
        NelderMead           : 3211.2172116131023        N_evals : 100008
        L_BFGS_B             : 3584.326614164005         N_evals : 3591
        DA                   : 3198.8512081753843        N_evals : 100008
        L_BFGS               : 3393.714829252586         N_evals : 3403
        Scipy L_BFGS_B       : 10342.705428834948        N_evals : 473
        Scipy DA             : 3213.2924915939934        N_evals : 45048
        Scipy NelderMead     : 3758.205250899091         N_evals : 5094
        Minuit Migrad        : 3349.0780602163063        N_evals : 7065

Function :  func_30
        ARRDE                : 3480.979267836456         N_evals : 100045
        NelderMead           : 11616.516169321321        N_evals : 100010
        L_BFGS_B             : 5567.87264012787          N_evals : 2583
        DA                   : 3481.765455497704         N_evals : 100021
        L_BFGS               : 4133.80375260588          N_evals : 3676
        Scipy L_BFGS_B       : 368538695.196276          N_evals : 715
        Scipy DA             : 390282.0211696862         N_evals : 100142
        Scipy NelderMead     : 4187.87287891103          N_evals : 12517
        Minuit Migrad        : 3493.5005707839036        N_evals : 16342

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.99999998146482         N_evals : 100045
        NelderMead           : 411510502.8785815         N_evals : 100008
        L_BFGS_B             : 100.00000000471442        N_evals : 903
        DA                   : 99.9999999675947          N_evals : 100017
        L_BFGS               : 99.99999996461153         N_evals : 925
        Scipy L_BFGS_B       : 100.02471298242172        N_evals : 1386
        Scipy DA             : 100.00062903391391        N_evals : 21090
        Scipy NelderMead     : 2712.3754020719502        N_evals : 6914
        Minuit Migrad        : 100.00002479993728        N_evals : 746

Function :  func_2
        ARRDE                : 199.99999998141658        N_evals : 100045
        NelderMead           : 295.94632102454506        N_evals : 100004
        L_BFGS_B             : 200.00015248095772        N_evals : 4809
        DA                   : 200.00005569235267        N_evals : 100004
        L_BFGS               : 7.556706336095375e+17     N_evals : 1366
        Scipy L_BFGS_B       : 301.150547252332          N_evals : 946
        Scipy DA             : 200.00045148238053        N_evals : 39229
        Scipy NelderMead     : 307.37085372535427        N_evals : 9058
        Minuit Migrad        : 200.00083707023333        N_evals : 6929

Function :  func_3
        ARRDE                : 299.9999999212991         N_evals : 100045
        NelderMead           : 299.99999994905033        N_evals : 100013
        L_BFGS_B             : 300.0000001291188         N_evals : 1134
        DA                   : 299.99999989569767        N_evals : 100022
        L_BFGS               : 299.9999999497001         N_evals : 1807
        Scipy L_BFGS_B       : 4985.404787192905         N_evals : 583
        Scipy DA             : 300.00034167935314        N_evals : 47710
        Scipy NelderMead     : 299.99999993087397        N_evals : 7116
        Minuit Migrad        : 301.5219449007896         N_evals : 2043

Function :  func_4
        ARRDE                : 399.9999999056293         N_evals : 100045
        NelderMead           : 399.9999999188782         N_evals : 100003
        L_BFGS_B             : 400.00017884678   N_evals : 2247
        DA                   : 400.00013642436915        N_evals : 100016
        L_BFGS               : 400.0000002671418         N_evals : 1555
        Scipy L_BFGS_B       : 570.7081459210068         N_evals : 407
        Scipy DA             : 405.6629459977546         N_evals : 100084
        Scipy NelderMead     : 399.9999999288301         N_evals : 8700
        Minuit Migrad        : 400.0000444576483         N_evals : 1347

Function :  func_5
        ARRDE                : 502.01699511349983        N_evals : 100045
        NelderMead           : 525.8688902129203         N_evals : 100007
        L_BFGS_B             : 621.3833907217139         N_evals : 525
        DA                   : 516.9142684661023         N_evals : 100019
        L_BFGS               : 621.3833907087973         N_evals : 799
        Scipy L_BFGS_B       : 684.1455739388281         N_evals : 495
        Scipy DA             : 511.93953709876735        N_evals : 60646
        Scipy NelderMead     : 624.3681395778656         N_evals : 5002
        Minuit Migrad        : 612.4283306781778         N_evals : 409

Function :  func_6
        ARRDE                : 599.9999998360609         N_evals : 100044
        NelderMead           : 614.6275609620569         N_evals : 100004
        L_BFGS_B             : 660.1105189512664         N_evals : 1428
        DA                   : 600.0000719594337         N_evals : 100007
        L_BFGS               : 660.1105188258935         N_evals : 610
        Scipy L_BFGS_B       : 675.6729314479452         N_evals : 781
        Scipy DA             : 600.0000604883195         N_evals : 45312
        Scipy NelderMead     : 660.1105185414015         N_evals : 4772
        Minuit Migrad        : 659.0966070252388         N_evals : 511

Function :  func_7
        ARRDE                : 711.8848753263945         N_evals : 100044
        NelderMead           : 732.7427932666927         N_evals : 100010
        L_BFGS_B             : 778.2115142547051         N_evals : 336
        DA                   : 735.2614561246186         N_evals : 100014
        L_BFGS               : 778.2115141688279         N_evals : 442
        Scipy L_BFGS_B       : 793.6657444139023         N_evals : 440
        Scipy DA             : 735.5269306321622         N_evals : 33905
        Scipy NelderMead     : 811.2731445582131         N_evals : 3258
        Minuit Migrad        : 794.857583900823          N_evals : 500

Function :  func_8
        ARRDE                : 800.9949588812672         N_evals : 100045
        NelderMead           : 842.2946074467682         N_evals : 100012
        L_BFGS_B             : 831.8386141546785         N_evals : 441
        DA                   : 808.954626222599          N_evals : 100017
        L_BFGS               : 828.8537420040867         N_evals : 379
        Scipy L_BFGS_B       : 936.4731278001937         N_evals : 253
        Scipy DA             : 818.9042524940464         N_evals : 37469
        Scipy NelderMead     : 831.838613925965          N_evals : 5103
        Minuit Migrad        : 831.838616152109          N_evals : 477

Function :  func_9
        ARRDE                : 899.9999996844036         N_evals : 100044
        NelderMead           : 993.3438817082854         N_evals : 100001
        L_BFGS_B             : 1783.2257708689433        N_evals : 945
        DA                   : 902.1820705507712         N_evals : 100014
        L_BFGS               : 1783.225770950813         N_evals : 820
        Scipy L_BFGS_B       : 1770.6991732767485        N_evals : 1078
        Scipy DA             : 903.6378776612943         N_evals : 93855
        Scipy NelderMead     : 1778.8623675260847        N_evals : 4328
        Minuit Migrad        : 1772.4757881360126        N_evals : 472

Function :  func_10
        ARRDE                : 1247.7602398161525        N_evals : 100044
        NelderMead           : 1551.1057140870519        N_evals : 100012
        L_BFGS_B             : 3138.5007249988053        N_evals : 903
        DA                   : 1954.355642464167         N_evals : 100022
        L_BFGS               : 3500.7941654713086        N_evals : 2563
        Scipy L_BFGS_B       : 3644.4435496588108        N_evals : 264
        Scipy DA             : 1688.2180178853594        N_evals : 32112
        Scipy NelderMead     : 3039.707511649384         N_evals : 5132
        Minuit Migrad        : 3534.634499987548         N_evals : 396

Function :  func_11
        ARRDE                : 1099.9999998912513        N_evals : 100045
        NelderMead           : 1135.8611556949534        N_evals : 100001
        L_BFGS_B             : 1133.8307463021624        N_evals : 2499
        DA                   : 1110.9452883542801        N_evals : 100016
        L_BFGS               : 1129.8628356817023        N_evals : 3403
        Scipy L_BFGS_B       : 1344.4944816284578        N_evals : 726
        Scipy DA             : 1108.5719901485656        N_evals : 100031
        Scipy NelderMead     : 1161.4684217775798        N_evals : 9042
        Minuit Migrad        : 1209.1651206631147        N_evals : 2244

Function :  func_12
        ARRDE                : 1342.083783265013         N_evals : 100045
        NelderMead           : 8219.687793338193         N_evals : 100010
        L_BFGS_B             : 1535.763345874584         N_evals : 2772
        DA                   : 1420.271248685288         N_evals : 100014
        L_BFGS               : 1758.5645441967642        N_evals : 2920
        Scipy L_BFGS_B       : 6437.1831451569415        N_evals : 1815
        Scipy DA             : 1448.7842557101337        N_evals : 43585
        Scipy NelderMead     : 3376.8788165790543        N_evals : 8680
        Minuit Migrad        : 1715.3581386709848        N_evals : 3561

Function :  func_13
        ARRDE                : 1308.5079442175504        N_evals : 100045
        NelderMead           : 1542.0441652679488        N_evals : 100009
        L_BFGS_B             : 1519.8601301606323        N_evals : 3129
        DA                   : 1322.0582581719614        N_evals : 100007
        L_BFGS               : 1468.183384816729         N_evals : 4369
        Scipy L_BFGS_B       : 12354.512516033907        N_evals : 671
        Scipy DA             : 1327.6026057956046        N_evals : 64639
        Scipy NelderMead     : 15242.747760378243        N_evals : 1749
        Minuit Migrad        : 1612.3905308605854        N_evals : 5445

Function :  func_14
        ARRDE                : 1400.9949586009227        N_evals : 100045
        NelderMead           : 1569.1836101255283        N_evals : 100004
        L_BFGS_B             : 1543.5047187935504        N_evals : 5145
        DA                   : 1447.3375565337026        N_evals : 100006
        L_BFGS               : 1439.9339825548159        N_evals : 3067
        Scipy L_BFGS_B       : 1495.0059253606237        N_evals : 1100
        Scipy DA             : 2191.4574704770366        N_evals : 57280
        Scipy NelderMead     : 1524.125181259149         N_evals : 3124
        Minuit Migrad        : 1589.7731661411156        N_evals : 1890

Function :  func_15
        ARRDE                : 1500.0421946175218        N_evals : 100044
        NelderMead           : 1588.5068472335402        N_evals : 100001
        L_BFGS_B             : 1594.7593610857539        N_evals : 4977
        DA                   : 1505.0514764785137        N_evals : 100008
        L_BFGS               : 1527.303940615181         N_evals : 5272
        Scipy L_BFGS_B       : 9260.750858802949         N_evals : 979
        Scipy DA             : 1514.1660787694475        N_evals : 92249
        Scipy NelderMead     : 1612.9356733627378        N_evals : 8003
        Minuit Migrad        : 1530.0589077491554        N_evals : 3468

Function :  func_16
        ARRDE                : 1600.5751134593133        N_evals : 100045
        NelderMead           : 1722.1107412729946        N_evals : 100004
        L_BFGS_B             : 2455.155472769112         N_evals : 2772
        DA                   : 1884.9162911037147        N_evals : 100005
        L_BFGS               : 2318.0365175335046        N_evals : 6679
        Scipy L_BFGS_B       : 2284.768275336976         N_evals : 594
        Scipy DA             : 1600.8008072647428        N_evals : 100089
        Scipy NelderMead     : 2300.9020452568893        N_evals : 5067
        Minuit Migrad        : 2291.662902487966         N_evals : 3368

Function :  func_17
        ARRDE                : 1702.1720096950983        N_evals : 100045
        NelderMead           : 1776.2904298272954        N_evals : 100006
        L_BFGS_B             : 1992.859374861787         N_evals : 2625
        DA                   : 1706.3016592444403        N_evals : 100003
        L_BFGS               : 1973.7877116811278        N_evals : 2647
        Scipy L_BFGS_B       : 1974.2686304243216        N_evals : 352
        Scipy DA             : 1705.3271848814586        N_evals : 49140
        Scipy NelderMead     : 1956.7698931576792        N_evals : 3807
        Minuit Migrad        : 1943.4261650808003        N_evals : 1158

Function :  func_18
        ARRDE                : 1801.2581665957507        N_evals : 100045
        NelderMead           : 1842.3915127353753        N_evals : 100005
        L_BFGS_B             : 1999.6001332910319        N_evals : 3381
        DA                   : 1822.001206333412         N_evals : 100017
        L_BFGS               : 1860.4910653078512        N_evals : 6217
        Scipy L_BFGS_B       : 3428.3298841022834        N_evals : 517
        Scipy DA             : 1842.5938493411552        N_evals : 30165
        Scipy NelderMead     : 2092.535972853888         N_evals : 4283
        Minuit Migrad        : 1825.0218335001955        N_evals : 4470

Function :  func_19
        ARRDE                : 1902.0143908343193        N_evals : 100045
        NelderMead           : 1980.412273553875         N_evals : 100012
        L_BFGS_B             : 2000.102750789216         N_evals : 2751
        DA                   : 1904.0980475809583        N_evals : 100003
        L_BFGS               : 1905.8088954888249        N_evals : 5881
        Scipy L_BFGS_B       : 29149.80152195076         N_evals : 308
        Scipy DA             : 1946.18411399218          N_evals : 73505
        Scipy NelderMead     : 1938.30976067719          N_evals : 2672
        Minuit Migrad        : 1937.8924500344967        N_evals : 4942

Function :  func_20
        ARRDE                : 1999.999999501442         N_evals : 100045
        NelderMead           : 2139.990672806584         N_evals : 100010
        L_BFGS_B             : 2441.731081045896         N_evals : 1575
        DA                   : 2000.9957413040825        N_evals : 100009
        L_BFGS               : 2441.693046550841         N_evals : 1870
        Scipy L_BFGS_B       : 2926.304359972402         N_evals : 264
        Scipy DA             : 2007.9602635077351        N_evals : 68720
        Scipy NelderMead     : 2885.343594599009         N_evals : 1145
        Minuit Migrad        : 2590.516858846803         N_evals : 349

Function :  func_21
        ARRDE                : 2199.99999947858          N_evals : 100045
        NelderMead           : 2209.305119600595         N_evals : 100006
        L_BFGS_B             : 2413.816735494357         N_evals : 483
        DA                   : 2327.718258452968         N_evals : 100014
        L_BFGS               : 2413.8167351936254        N_evals : 463
        Scipy L_BFGS_B       : 2499.0370052565613        N_evals : 825
        Scipy DA             : 2203.0629756643316        N_evals : 100186
        Scipy NelderMead     : 2398.98205919678          N_evals : 6799
        Minuit Migrad        : 2488.9695093253886        N_evals : 480

Function :  func_22
        ARRDE                : 2300.558057432392         N_evals : 100044
        NelderMead           : 2310.009551032577         N_evals : 100010
        L_BFGS_B             : 2310.0913490071434        N_evals : 2268
        DA                   : 2301.374562134717         N_evals : 100016
        L_BFGS               : 2301.8219094012115        N_evals : 2815
        Scipy L_BFGS_B       : 5083.305075764876         N_evals : 297
        Scipy DA             : 2307.3939192593125        N_evals : 42639
        Scipy NelderMead     : 4396.443215753653         N_evals : 5520
        Minuit Migrad        : 4418.942836509127         N_evals : 570

Function :  func_23
        ARRDE                : 2602.459432423742         N_evals : 100045
        NelderMead           : 2645.325568212316         N_evals : 100007
        L_BFGS_B             : 3246.5299039774254        N_evals : 630
        DA                   : 2629.4783935499768        N_evals : 100006
        L_BFGS               : 3303.6106936856104        N_evals : 463
        Scipy L_BFGS_B       : 2712.890077481842         N_evals : 231
        Scipy DA             : 2634.737882074044         N_evals : 94031
        Scipy NelderMead     : 3303.6106929846314        N_evals : 5096
        Minuit Migrad        : 3303.6107275587037        N_evals : 541

Function :  func_24
        ARRDE                : 2499.999999594927         N_evals : 100045
        NelderMead           : 2500.0000022156432        N_evals : 100007
        L_BFGS_B             : 2500.0000060990938        N_evals : 1449
        DA                   : 2756.3514459540265        N_evals : 100006
        L_BFGS               : 2500.0000056972212        N_evals : 1996
        Scipy L_BFGS_B       : 3354.7640307433844        N_evals : 286
        Scipy DA             : 2781.4060608081627        N_evals : 36534
        Scipy NelderMead     : 2500.0001851725815        N_evals : 11195
        Minuit Migrad        : 2500.0000037752634        N_evals : 4228

Function :  func_25
        ARRDE                : 2898.008988679196         N_evals : 100045
        NelderMead           : 2957.7709873832478        N_evals : 100008
        L_BFGS_B             : 2944.824121097827         N_evals : 1638
        DA                   : 2898.306113453491         N_evals : 100006
        L_BFGS               : 2947.659118524446         N_evals : 1660
        Scipy L_BFGS_B       : 4116.3916055457275        N_evals : 253
        Scipy DA             : 2949.2121627336646        N_evals : 47776
        Scipy NelderMead     : 3091.019884836397         N_evals : 7559
        Minuit Migrad        : 2955.80979603171          N_evals : 1259

Function :  func_26
        ARRDE                : 2799.99999934918          N_evals : 100045
        NelderMead           : 2947.25088672464          N_evals : 100005
        L_BFGS_B             : 4620.754650501499         N_evals : 1239
        DA                   : 2799.999999635519         N_evals : 100022
        L_BFGS               : 4621.845115265906         N_evals : 883
        Scipy L_BFGS_B       : 5733.919058268073         N_evals : 231
        Scipy DA             : 2900.0004454143213        N_evals : 60547
        Scipy NelderMead     : 4449.575518059603         N_evals : 6999
        Minuit Migrad        : 4987.958197766668         N_evals : 859

Function :  func_27
        ARRDE                : 3089.5179892238616        N_evals : 100044
        NelderMead           : 3100.1873325185493        N_evals : 100011
        L_BFGS_B             : 3098.121929194018         N_evals : 3528
        DA                   : 3092.8903990465737        N_evals : 100004
        L_BFGS               : 3343.5671460771046        N_evals : 967
        Scipy L_BFGS_B       : 3828.3674742898725        N_evals : 792
        Scipy DA             : 3103.579046379763         N_evals : 59887
        Scipy NelderMead     : 3507.6979462903837        N_evals : 6610
        Minuit Migrad        : 3353.1643058963023        N_evals : 692

Function :  func_28
        ARRDE                : 3099.9999996103097        N_evals : 100045
        NelderMead           : 3229.016082451607         N_evals : 100007
        L_BFGS_B             : 3383.75918472034          N_evals : 2961
        DA                   : 3196.568315476675         N_evals : 100013
        L_BFGS               : 3287.305931327285         N_evals : 3508
        Scipy L_BFGS_B       : 4517.335286475703         N_evals : 231
        Scipy DA             : 3100.000860782523         N_evals : 50922
        Scipy NelderMead     : 3383.7552070973447        N_evals : 7785
        Minuit Migrad        : 3383.7452274717984        N_evals : 1219

Function :  func_29
        ARRDE                : 3143.9156177703317        N_evals : 100045
        NelderMead           : 3211.667612811737         N_evals : 100011
        L_BFGS_B             : 3820.472617273393         N_evals : 3234
        DA                   : 3190.9826741772727        N_evals : 100015
        L_BFGS               : 3692.3397079899414        N_evals : 2374
        Scipy L_BFGS_B       : 3801.3592625559577        N_evals : 1012
        Scipy DA             : 3145.533346837897         N_evals : 97793
        Scipy NelderMead     : 5146.9840820185955        N_evals : 2899
        Minuit Migrad        : 3386.0439564630633        N_evals : 8730

Function :  func_30
        ARRDE                : 3405.8147512435576        N_evals : 100044
        NelderMead           : 11616.516184998627        N_evals : 100012
        L_BFGS_B             : 5839.057050934611         N_evals : 2331
        DA                   : 3469.228641221694         N_evals : 100010
        L_BFGS               : 4509.115956499942         N_evals : 2794
        Scipy L_BFGS_B       : 12608.111506184603        N_evals : 1672
        Scipy DA             : 4544.046668110243         N_evals : 54904
        Scipy NelderMead     : 4331.263001559403         N_evals : 9032
        Minuit Migrad        : 3556.5277756919704        N_evals : 20434

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