[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:
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.