[1]:
import numpy as np
import time
from scipy.optimize import differential_evolution, minimize, dual_annealing
import matplotlib.pyplot as plt
import concurrent.futures
import threading, multiprocessing
import sys
sys.path.append("../")
import minionpy as mpy
import minionpy.test_functions as mpytest
import time
import iminuit
Minimizing CEC benchmark problems with noise
[2]:
# Global variables
N = 0 # Global counter for function evaluations
noise_ratio = 1e-4 # Noise level for the objective function
N_dict = {} # Stores the number of function evaluations per algorithm
algos = ["ARRDE", "NelderMead", "L_BFGS_B", "DA"] #here, DA is dual annealing, ABC=artificial bee colony
def run_minuit_migrad(func_scipy, x0, bounds_list, maxevals):
state = {"best": np.inf}
def minuit_objective(*args):
value = float(func_scipy(np.array(args, dtype=float)))
if np.isfinite(value):
state["best"] = min(state["best"], value)
return value
m = iminuit.Minuit(minuit_objective, *x0)
for i, bound in enumerate(bounds_list):
m.limits[i] = bound
m.errordef = 1.0
try:
m.migrad(ncall=maxevals)
return float(m.fval)
except RuntimeError:
try:
last_x = np.array(list(m.values), dtype=float)
return float(func_scipy(last_x))
except Exception:
return float(state["best"])
def test_optimization_noise(func_number, year, bounds, dimension, func_name, Nmaxeval, seed):
"""
Runs multiple optimization algorithms on the given function and stores results.
Parameters:
- func: Objective function to be minimized
- bounds: Tuple representing the search space bounds
- dimension: Number of dimensions for the problem
- func_name: Name of the function (used for logging results)
- Nmaxeval: Maximum number of function evaluations
- seed: Random seed for reproducibility
"""
global results, N, N_dict, noise_ratio, results_lock, algos
if year == 2014:
cec_func = mpy.CEC2014Functions(function_number=func_number, dimension=dimension)
elif year == 2017:
cec_func = mpy.CEC2017Functions(function_number=func_number, dimension=dimension)
elif year == 2019:
cec_func = mpy.CEC2019Functions(function_number=func_number)
elif year == 2020:
cec_func = mpy.CEC2020Functions(function_number=func_number, dimension=dimension)
elif year == 2022:
cec_func = mpy.CEC2022Functions(function_number=func_number, dimension=dimension)
else:
raise Exception("Unknown CEC year.")
func = cec_func
result = {}
result['Dimensions'] = dimension
result['Function'] = func_name
bounds_list = [bounds] * dimension # Extend bounds to all dimensions
x0 = [[0.0 for _ in range(dimension)]] # Initial starting point
def func_wrapper(X):
"""Wraps the function to add evaluation tracking and noise."""
global N
ret = np.array(func(X)) # Compute function value
N += len(X) # Track the number of function evaluations
return ret + noise_ratio * np.random.normal(size=len(X)) * np.abs(ret) # Add noise
def func_scipy(par):
"""Wrapper for compatibility with SciPy optimization methods."""
return func_wrapper([par])[0]
N = 0 # Reset evaluation counter
res = mpy.Minimizer(
func_wrapper, bounds_list, x0=x0, algo="L_BFGS_B", maxevals=Nmaxeval,
callback=None, seed=seed, options={
"population_size": 0,
"N_points_derivative": 1,
"use_local_search": True,
"func_noise_ratio": noise_ratio
}
).optimize()
result["L_BFGS_B N=1"] = res.fun
N_dict["L_BFGS_B N=1"] = N
N = 0 # Reset evaluation counter
res = mpy.Minimizer(
func_wrapper, bounds_list, x0=x0, algo="L_BFGS_B", maxevals=Nmaxeval,
callback=None, seed=seed, options={
"population_size": 0,
"N_points_derivative": 3,
"use_local_search": True,
"func_noise_ratio": noise_ratio
}
).optimize()
result["L_BFGS_B N=3"] = res.fun
N_dict["L_BFGS_B N=3"] = N
N = 0 # Reset evaluation counter
res = mpy.Minimizer(
func_wrapper, bounds_list, x0=x0, algo="L_BFGS_B", maxevals=Nmaxeval,
callback=None, seed=seed, options={
"population_size": 0,
"N_points_derivative": 5,
"use_local_search": True,
"func_noise_ratio": noise_ratio
}
).optimize()
result["L_BFGS_B N=5"] = res.fun
N_dict["L_BFGS_B N=5"] = N
N = 0 # Reset evaluation counter
res = mpy.Minimizer(
func_wrapper, bounds_list, x0=x0, algo="L_BFGS_B", maxevals=Nmaxeval,
callback=None, seed=seed, options={
"population_size": 0,
"N_points_derivative": 7,
"use_local_search": True,
"func_noise_ratio": noise_ratio
}
).optimize()
result["L_BFGS_B N=7"] = res.fun
N_dict["L_BFGS_B N=7"] = N
# Run L-BFGS-B from SciPy
N = 0
res_minimize = minimize(func_scipy, x0=x0[0], method="L-BFGS-B", options={"maxfun": Nmaxeval}, bounds=bounds_list)
result["Scipy L_BFGS_B"] = res_minimize.fun
N_dict["Scipy L_BFGS_B"] = N
# Run Minuit Migrad from iminuit
N = 0
result["Minuit Migrad"] = run_minuit_migrad(func_scipy, x0[0], bounds_list, Nmaxeval)
N_dict["Minuit Migrad"] = N
# Print results
for res in result:
if res == "Function" :
print("Function : ", result[res])
if res not in ['Dimensions', 'Function']:
print(f"\t{res:<20} : {result[res]:<10} \t N_evals : {N_dict[res]:<10}")
print("")
def test_optimization(func, bounds, dimension, func_name, Nmaxeval, seed):
"""
Runs multiple optimization algorithms on the given function and stores results.
Parameters:
- func: Objective function to be minimized
- bounds: Tuple representing the search space bounds
- dimension: Number of dimensions for the problem
- func_name: Name of the function (used for logging results)
- Nmaxeval: Maximum number of function evaluations
- seed: Random seed for reproducibility
"""
global results, N, N_dict, noise_ratio, results_lock, algos
result = {}
result['Dimensions'] = dimension
result['Function'] = func_name
bounds_list = [bounds] * dimension # Extend bounds to all dimensions
x0 = [[0.0 for _ in range(dimension)] ]# Initial starting point
def func_wrapper(X):
"""Wraps the function to add evaluation tracking and noise."""
global N
ret = np.array(func(X)) # Compute function value
N += len(X) # Track the number of function evaluations
return ret + noise_ratio * np.random.normal(size=len(X)) * np.abs(ret) # Add noise
def func_scipy(par):
"""Wrapper for compatibility with SciPy optimization methods."""
return func_wrapper([par])[0]
# Run various optimization algorithms
for algo in algos:
N = 0 # Reset evaluation counter
res = mpy.Minimizer(
func_wrapper, bounds_list, x0=x0, algo=algo, maxevals=Nmaxeval,
callback=None, seed=seed, options={
"population_size": 0,
"N_points_derivative": 3,
"use_local_search": True,
"func_noise_ratio": noise_ratio
}
).optimize()
result[algo] = res.fun
N_dict[algo] = N
# Run L-BFGS method from minionpy
N = 0
res = mpy.L_BFGS(
func_wrapper, x0=x0, maxevals=Nmaxeval,
callback=None, seed=seed, options={
"population_size": 0,
"N_points_derivative": 3,
"use_local_search": True,
"func_noise_ratio": noise_ratio
}
).optimize()
result["L_BFGS"] = res.fun
N_dict["L_BFGS"] = N
# Run L-BFGS-B from SciPy
N = 0
res_minimize = minimize(func_scipy, x0=x0[0], method="L-BFGS-B", options={"maxfun": Nmaxeval}, bounds=bounds_list)
result["Scipy L_BFGS_B"] = res_minimize.fun
N_dict["Scipy L_BFGS_B"] = N
# Run Dual Annealing from SciPy
N = 0
dual_ann = dual_annealing(func_scipy, bounds_list, x0=x0[0],maxfun=Nmaxeval, no_local_search=False)
result["Scipy DA"] = dual_ann.fun
N_dict["Scipy DA"] = N
# Run Nelder-Mead from SciPy
N = 0
res_minimize = minimize(func_scipy, x0=x0[0], method="Nelder-Mead", options={"maxfev": Nmaxeval, "adaptive": True}, bounds=bounds_list)
result["Scipy NelderMead"] = res_minimize.fun
N_dict["Scipy NelderMead"] = N
# Run Minuit Migrad from iminuit
N = 0
result["Minuit Migrad"] = run_minuit_migrad(func_scipy, x0[0], bounds_list, Nmaxeval)
N_dict["Minuit Migrad"] = N
# Print results
for res in result:
if res == "Function" :
print("Function : ", result[res])
if res not in ['Dimensions', 'Function']:
print(f"\t{res:<20} : {result[res]:<10} \t N_evals : {N_dict[res]:<10}")
print("")
def run_test_optimization(j, dim, year=2017, seed=None, Nmaxeval=10000):
"""
Runs optimization tests for a specified CEC benchmark function.
Parameters:
- j: Function index in the CEC benchmark set
- dim: Dimensionality of the function
- year: Year of the CEC benchmark suite (default: 2017)
- seed: Random seed for reproducibility
- Nmaxeval: Maximum number of function evaluations
"""
if year == 2014:
cec_func = mpy.CEC2014Functions(function_number=j, dimension=dim)
elif year == 2017:
cec_func = mpy.CEC2017Functions(function_number=j, dimension=dim)
elif year == 2019:
cec_func = mpy.CEC2019Functions(function_number=j)
elif year == 2020:
cec_func = mpy.CEC2020Functions(function_number=j, dimension=dim)
elif year == 2022:
cec_func = mpy.CEC2022Functions(function_number=j, dimension=dim)
else:
raise Exception("Unknown CEC year.")
test_optimization(cec_func, (-100, 100), dim, "func_" + str(j), Nmaxeval, seed)
Performance of Minion’s L-BFGS-B with Different \(N\) Derivative Points
Minion’s L-BFGS-B is vectorized and designed to be robust against noise. Function evaluations and their derivatives are computed in batches, ensuring efficient execution. To estimate derivatives, Minion employs the noise-robust Lanczos derivative method.
In the L-BFGS-B and L-BFGS settings, the key parameter 'N_points_derivative' determines the number of points used for derivative calculation. This notebook compares the performance of L-BFGS-B with different values of 'N_points_derivative'. A noise level of \(10^{-4}\) is added to the CEC2017 benchmark problems to simulate real-world conditions.
When \(N = 1\), the numerical derivative reduces to the standard forward difference method.
For \(N \geq 2\), the Lanczos derivative formula is used.
Specifically, \(N = 3\) corresponds to the central difference method.
The following sections analyze how different values of 'N_points_derivative' impact optimization performance.
[3]:
# Counter for function evaluations
N = 0
# Noise ratio for function evaluations (set to zero for noiseless optimization)
noise_ratio = 1e-4
# Dictionary to store the number of evaluations per algorithm
N_dict = {}
# Maximum number of function evaluations allowed per optimization run
Nmaxeval = 100000
# Dimensionality of the optimization problem
dimension = 10
# Number of times each function should be tested (repetitions)
NRuns = 1
# The CEC benchmark year to use for function selection
year = 2017
# Dictionary mapping CEC benchmark years to their respective function sets
func_numbers_dict = {
2022: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
2020: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
2019: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
2017: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
2014: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
}
# Retrieve the function numbers for the selected benchmark year
func_numbers = func_numbers_dict[year]
for j in func_numbers:
test_optimization_noise(j, year, (-100, 100), dimension, "func_"+str(j), Nmaxeval, None)
Function : func_1
L_BFGS_B N=1 : 5973727634.063842 N_evals : 792
L_BFGS_B N=3 : 153.98172646152972 N_evals : 672
L_BFGS_B N=5 : 533.4192837079554 N_evals : 2378
L_BFGS_B N=7 : 781.6660243810908 N_evals : 1769
Scipy L_BFGS_B : 29974986144.93106 N_evals : 308
Minuit Migrad : 29976327652.15234 N_evals : 2813
Function : func_2
L_BFGS_B N=1 : 8.192689894329618e+17 N_evals : 88
L_BFGS_B N=3 : 200.01288793682758 N_evals : 2688
L_BFGS_B N=5 : 199.9819941303 N_evals : 4715
L_BFGS_B N=7 : 199.94768065543064 N_evals : 6954
Scipy L_BFGS_B : 8.86995917802098e+17 N_evals : 319
Minuit Migrad : 8.870590722656401e+17 N_evals : 2853
Function : func_3
L_BFGS_B N=1 : 7871.994695250997 N_evals : 495
L_BFGS_B N=3 : 300.53766055109384 N_evals : 1407
L_BFGS_B N=5 : 300.0706827626695 N_evals : 1968
L_BFGS_B N=7 : 299.96460417801393 N_evals : 3904
Scipy L_BFGS_B : 1343401.2326947476 N_evals : 253
Minuit Migrad : 516.9317073388936 N_evals : 5472
Function : func_4
L_BFGS_B N=1 : 535.4115850836263 N_evals : 352
L_BFGS_B N=3 : 470.7019828202033 N_evals : 651
L_BFGS_B N=5 : 407.59414107876756 N_evals : 1435
L_BFGS_B N=7 : 407.73336798354177 N_evals : 1586
Scipy L_BFGS_B : 5901.2811611421275 N_evals : 330
Minuit Migrad : 5902.501237740702 N_evals : 2715
Function : func_5
L_BFGS_B N=1 : 626.435524658531 N_evals : 539
L_BFGS_B N=3 : 651.7178753952869 N_evals : 1638
L_BFGS_B N=5 : 632.6745287596315 N_evals : 3280
L_BFGS_B N=7 : 632.4506601225373 N_evals : 2684
Scipy L_BFGS_B : 726.7400295936447 N_evals : 231
Minuit Migrad : 726.6419518975932 N_evals : 2829
Function : func_6
L_BFGS_B N=1 : 680.4856243279562 N_evals : 539
L_BFGS_B N=3 : 667.7132294505789 N_evals : 1554
L_BFGS_B N=5 : 659.5275178316926 N_evals : 1845
L_BFGS_B N=7 : 660.3512360364566 N_evals : 1464
Scipy L_BFGS_B : 741.703588431771 N_evals : 451
Minuit Migrad : 727.4252615047818 N_evals : 2702
Function : func_7
L_BFGS_B N=1 : 814.4171581142839 N_evals : 418
L_BFGS_B N=3 : 813.0659417436532 N_evals : 1239
L_BFGS_B N=5 : 811.233000566351 N_evals : 1312
L_BFGS_B N=7 : 811.066601195408 N_evals : 2501
Scipy L_BFGS_B : 939.6997180169456 N_evals : 231
Minuit Migrad : 939.6647940915336 N_evals : 2948
Function : func_8
L_BFGS_B N=1 : 919.338501258366 N_evals : 726
L_BFGS_B N=3 : 865.8117570287477 N_evals : 567
L_BFGS_B N=5 : 838.217722137182 N_evals : 2173
L_BFGS_B N=7 : 831.7786229566003 N_evals : 2440
Scipy L_BFGS_B : 946.6592344459456 N_evals : 264
Minuit Migrad : 946.7788220020038 N_evals : 2185
Function : func_9
L_BFGS_B N=1 : 1838.5141195299113 N_evals : 253
L_BFGS_B N=3 : 1785.1656395572445 N_evals : 756
L_BFGS_B N=5 : 1782.880499182554 N_evals : 2747
L_BFGS_B N=7 : 1782.892000913451 N_evals : 2440
Scipy L_BFGS_B : 4305.927218998486 N_evals : 308
Minuit Migrad : 1793.8301239603884 N_evals : 2710
Function : func_10
L_BFGS_B N=1 : 3192.295247011129 N_evals : 297
L_BFGS_B N=3 : 3277.8778436311295 N_evals : 651
L_BFGS_B N=5 : 3138.336718287842 N_evals : 984
L_BFGS_B N=7 : 3128.452876724262 N_evals : 2867
Scipy L_BFGS_B : 6139.6648685972805 N_evals : 308
Minuit Migrad : 6138.75591857766 N_evals : 2588
Function : func_11
L_BFGS_B N=1 : 1130.3343700761332 N_evals : 528
L_BFGS_B N=3 : 1148.9091755604065 N_evals : 1155
L_BFGS_B N=5 : 1149.2497936089546 N_evals : 1722
L_BFGS_B N=7 : 1153.3370025888307 N_evals : 3111
Scipy L_BFGS_B : 65027994.63060891 N_evals : 341
Minuit Migrad : 65032361.439737506 N_evals : 3052
Function : func_12
L_BFGS_B N=1 : 11061.20935785019 N_evals : 506
L_BFGS_B N=3 : 12981.04151155694 N_evals : 840
L_BFGS_B N=5 : 10268.08710399846 N_evals : 1722
L_BFGS_B N=7 : 10805.62363247725 N_evals : 2318
Scipy L_BFGS_B : 5722196405.008203 N_evals : 330
Minuit Migrad : 5721672589.269727 N_evals : 2705
Function : func_13
L_BFGS_B N=1 : 11494.550017856725 N_evals : 275
L_BFGS_B N=3 : 15840.793450099107 N_evals : 567
L_BFGS_B N=5 : 11005.438240482377 N_evals : 492
L_BFGS_B N=7 : 15551.716951961022 N_evals : 1220
Scipy L_BFGS_B : 2841477091.5506043 N_evals : 231
Minuit Migrad : 2841008329.8383613 N_evals : 2819
Function : func_14
L_BFGS_B N=1 : 8677.003613218372 N_evals : 264
L_BFGS_B N=3 : 7764.258453467257 N_evals : 756
L_BFGS_B N=5 : 11357.62679399611 N_evals : 533
L_BFGS_B N=7 : 9916.86881894369 N_evals : 793
Scipy L_BFGS_B : 2215236328.9562206 N_evals : 429
Minuit Migrad : 2215215011.671327 N_evals : 2707
Function : func_15
L_BFGS_B N=1 : 22202.443147860173 N_evals : 165
L_BFGS_B N=3 : 22721.6697976241 N_evals : 399
L_BFGS_B N=5 : 22924.727455293483 N_evals : 615
L_BFGS_B N=7 : 17558.43827572106 N_evals : 671
Scipy L_BFGS_B : 769530970.690358 N_evals : 330
Minuit Migrad : 23425.55403264698 N_evals : 2858
Function : func_16
L_BFGS_B N=1 : 3077.489021282686 N_evals : 649
L_BFGS_B N=3 : 2594.6562805445224 N_evals : 1218
L_BFGS_B N=5 : 2475.585447221627 N_evals : 1066
L_BFGS_B N=7 : 2505.2812233951795 N_evals : 1403
Scipy L_BFGS_B : 3437.687737869119 N_evals : 396
Minuit Migrad : 3437.5130501359513 N_evals : 2713
Function : func_17
L_BFGS_B N=1 : 1841.3632585834282 N_evals : 1232
L_BFGS_B N=3 : 2276.137864784944 N_evals : 945
L_BFGS_B N=5 : 1819.0242409455316 N_evals : 2296
L_BFGS_B N=7 : 1959.902259021991 N_evals : 3843
Scipy L_BFGS_B : 3283.0628777211973 N_evals : 341
Minuit Migrad : 3027.9085956671847 N_evals : 2707
Function : func_18
L_BFGS_B N=1 : 17833.59327193814 N_evals : 374
L_BFGS_B N=3 : 5102.7138259430385 N_evals : 441
L_BFGS_B N=5 : 4979.352289384531 N_evals : 738
L_BFGS_B N=7 : 3742.997073975895 N_evals : 1281
Scipy L_BFGS_B : 14467754037.359793 N_evals : 319
Minuit Migrad : 14469400514.359905 N_evals : 3205
Function : func_19
L_BFGS_B N=1 : 8375.481996474984 N_evals : 759
L_BFGS_B N=3 : 15503.851117752829 N_evals : 672
L_BFGS_B N=5 : 4900.219203501571 N_evals : 2747
L_BFGS_B N=7 : 6340.915315560625 N_evals : 5429
Scipy L_BFGS_B : 12289722929.573496 N_evals : 231
Minuit Migrad : 12281979706.485401 N_evals : 2793
Function : func_20
L_BFGS_B N=1 : 2652.7532382048007 N_evals : 946
L_BFGS_B N=3 : 2446.155927573167 N_evals : 588
L_BFGS_B N=5 : 2446.6450151732424 N_evals : 1189
L_BFGS_B N=7 : 2445.850909155051 N_evals : 1952
Scipy L_BFGS_B : 3152.420380804673 N_evals : 231
Minuit Migrad : 3152.7670674554215 N_evals : 2695
Function : func_21
L_BFGS_B N=1 : 2826.6405771923874 N_evals : 209
L_BFGS_B N=3 : 2442.3432873041133 N_evals : 1008
L_BFGS_B N=5 : 2467.953774869329 N_evals : 2009
L_BFGS_B N=7 : 2440.5284574685543 N_evals : 1891
Scipy L_BFGS_B : 2828.1719277387742 N_evals : 231
Minuit Migrad : 2828.812563626788 N_evals : 2906
Function : func_22
L_BFGS_B N=1 : 3024.5191436033992 N_evals : 1133
L_BFGS_B N=3 : 4641.237283522873 N_evals : 882
L_BFGS_B N=5 : 4332.122810430588 N_evals : 943
L_BFGS_B N=7 : 4009.4124619401164 N_evals : 4331
Scipy L_BFGS_B : 5303.357414151271 N_evals : 231
Minuit Migrad : 5301.613317480257 N_evals : 2567
Function : func_23
L_BFGS_B N=1 : 3196.044550631877 N_evals : 1320
L_BFGS_B N=3 : 3310.084307299446 N_evals : 861
L_BFGS_B N=5 : 3305.6414046536856 N_evals : 1558
L_BFGS_B N=7 : 3305.931869617404 N_evals : 1098
Scipy L_BFGS_B : 4336.113317371275 N_evals : 231
Minuit Migrad : 4335.956254094321 N_evals : 2958
Function : func_24
L_BFGS_B N=1 : 3362.5756344185006 N_evals : 363
L_BFGS_B N=3 : 3391.4129561997065 N_evals : 399
L_BFGS_B N=5 : 3391.3542139049305 N_evals : 533
L_BFGS_B N=7 : 2584.529944785036 N_evals : 2257
Scipy L_BFGS_B : 3392.129125633006 N_evals : 319
Minuit Migrad : 3391.7877765995854 N_evals : 3154
Function : func_25
L_BFGS_B N=1 : 3154.4831903567733 N_evals : 1078
L_BFGS_B N=3 : 2969.2016916276375 N_evals : 1008
L_BFGS_B N=5 : 3056.558558576658 N_evals : 2419
L_BFGS_B N=7 : 2950.3846921376985 N_evals : 2013
Scipy L_BFGS_B : 4820.573795823135 N_evals : 572
Minuit Migrad : 4821.2534566023505 N_evals : 2781
Function : func_26
L_BFGS_B N=1 : 5728.3002923032445 N_evals : 308
L_BFGS_B N=3 : 5732.896625947583 N_evals : 588
L_BFGS_B N=5 : 4574.305895566096 N_evals : 2460
L_BFGS_B N=7 : 4410.8084223835895 N_evals : 1830
Scipy L_BFGS_B : 5733.703548387351 N_evals : 231
Minuit Migrad : 5735.049738811465 N_evals : 2979
Function : func_27
L_BFGS_B N=1 : 5054.666969580322 N_evals : 143
L_BFGS_B N=3 : 3951.530784957591 N_evals : 945
L_BFGS_B N=5 : 3956.277551854312 N_evals : 1435
L_BFGS_B N=7 : 3226.847408333101 N_evals : 2684
Scipy L_BFGS_B : 5055.5021355179015 N_evals : 231
Minuit Migrad : 5056.281397858915 N_evals : 2822
Function : func_28
L_BFGS_B N=1 : 4503.926363570821 N_evals : 154
L_BFGS_B N=3 : 4029.863886242149 N_evals : 672
L_BFGS_B N=5 : 3938.1736640303384 N_evals : 1476
L_BFGS_B N=7 : 3536.616972799019 N_evals : 1952
Scipy L_BFGS_B : 4517.65223076948 N_evals : 231
Minuit Migrad : 4517.322248170124 N_evals : 3176
Function : func_29
L_BFGS_B N=1 : 3603.841700944226 N_evals : 561
L_BFGS_B N=3 : 3643.597219936275 N_evals : 819
L_BFGS_B N=5 : 3484.3719311303507 N_evals : 2337
L_BFGS_B N=7 : 3624.2686982010464 N_evals : 2196
Scipy L_BFGS_B : 48954.829052800764 N_evals : 319
Minuit Migrad : 48961.751651433085 N_evals : 3162
Function : func_30
L_BFGS_B N=1 : 41445.33250545987 N_evals : 1749
L_BFGS_B N=3 : 61706.09704284079 N_evals : 1575
L_BFGS_B N=5 : 130330.37123602019 N_evals : 1353
L_BFGS_B N=7 : 38115.74563404509 N_evals : 2806
Scipy L_BFGS_B : 506043825.00221664 N_evals : 231
Minuit Migrad : 506094767.84394735 N_evals : 2725
We observe that with \(N=1\), where \(N\) is the number of points used in the derivative calculation, L-BFGS-B is more robust than both SciPy’s L-BFGS-B and Minuit Migrad. Notably, Minuit Migrad is a variant of the BFGS algorithm that has been widely used in high-energy physics for over 40 years due to its robustness. Our results confirm that Minuit Migrad is generally more robust than SciPy’s L-BFGS-B.
When using higher values of \(N\), we see that \(N=3\) generally improves robustness but also requires more function evaluations. Increasing \(N\) further, such as to \(N=7\), does not provide significant improvements compared to using \(N=3\) or \(N=5\). Based on these findings, we recommend using either \(N=3\) or \(N=5\) as a trade-off between robustness and computational cost.
The number of function evaluations required for computing the function and its derivative, given \(N\), is given by:
where \(D\) is the dimensionality of the problem. These function evaluations are performed in batches to enhance efficiency.
What Happens if the Function is Smooth? To analyze performance in a noise-free setting, we can compare results by setting the noise level to zero.
[4]:
# Counter for function evaluations
N = 0
# Noise ratio for function evaluations (set to zero for noiseless optimization)
noise_ratio = 0.0
# Dictionary to store the number of evaluations per algorithm
N_dict = {}
# Maximum number of function evaluations allowed per optimization run
Nmaxeval = 100000
# Dimensionality of the optimization problem
dimension = 10
# Number of times each function should be tested (repetitions)
NRuns = 1
# The CEC benchmark year to use for function selection
year = 2017
# Dictionary mapping CEC benchmark years to their respective function sets
func_numbers_dict = {
2022: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
2020: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
2019: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
2017: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
2014: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
}
# Retrieve the function numbers for the selected benchmark year
func_numbers = func_numbers_dict[year]
for j in func_numbers:
test_optimization_noise(j, year, (-100, 100), dimension, "func_"+str(j), Nmaxeval, None)
Function : func_1
L_BFGS_B N=1 : 100.02398256308942 N_evals : 1606
L_BFGS_B N=3 : 100.0000000000275 N_evals : 4599
L_BFGS_B N=5 : 100.00000896431219 N_evals : 7544
L_BFGS_B N=7 : 100.00000000000003 N_evals : 8662
Scipy L_BFGS_B : 100.00000378925397 N_evals : 341
Minuit Migrad : 100.00000013456999 N_evals : 807
Function : func_2
L_BFGS_B N=1 : 200.00004454712104 N_evals : 1892
L_BFGS_B N=3 : 200.00052006824274 N_evals : 4095
L_BFGS_B N=5 : 200.0001023329348 N_evals : 7175
L_BFGS_B N=7 : 200.00006574737205 N_evals : 13054
Scipy L_BFGS_B : 200.00001564096283 N_evals : 1485
Minuit Migrad : 200.0004606097552 N_evals : 10197
Function : func_3
L_BFGS_B N=1 : 300.0000000544533 N_evals : 825
L_BFGS_B N=3 : 300.00000000422597 N_evals : 1155
L_BFGS_B N=5 : 300.0000000023229 N_evals : 2337
L_BFGS_B N=7 : 300.0000000000431 N_evals : 3477
Scipy L_BFGS_B : 300.0000000071808 N_evals : 517
Minuit Migrad : 310.16142874421905 N_evals : 2199
Function : func_4
L_BFGS_B N=1 : 400.00000000131575 N_evals : 880
L_BFGS_B N=3 : 400.0000000004398 N_evals : 1701
L_BFGS_B N=5 : 400.0000000003594 N_evals : 3321
L_BFGS_B N=7 : 400.00000000010834 N_evals : 4941
Scipy L_BFGS_B : 400.00000012543035 N_evals : 836
Minuit Migrad : 400.00003433451946 N_evals : 1322
Function : func_5
L_BFGS_B N=1 : 632.3276598030855 N_evals : 187
L_BFGS_B N=3 : 632.327659803111 N_evals : 336
L_BFGS_B N=5 : 632.3276598030847 N_evals : 656
L_BFGS_B N=7 : 632.3276598030811 N_evals : 976
Scipy L_BFGS_B : 609.444039532847 N_evals : 264
Minuit Migrad : 625.3626773617897 N_evals : 368
Function : func_6
L_BFGS_B N=1 : 660.1105187404161 N_evals : 407
L_BFGS_B N=3 : 660.1105187371116 N_evals : 777
L_BFGS_B N=5 : 660.1105187379236 N_evals : 1517
L_BFGS_B N=7 : 660.1105187378288 N_evals : 2257
Scipy L_BFGS_B : 666.7173728232046 N_evals : 341
Minuit Migrad : 659.0966796744215 N_evals : 478
Function : func_7
L_BFGS_B N=1 : 811.2731446622591 N_evals : 143
L_BFGS_B N=3 : 811.2731446622566 N_evals : 273
L_BFGS_B N=5 : 811.273144662256 N_evals : 533
L_BFGS_B N=7 : 811.273144662256 N_evals : 793
Scipy L_BFGS_B : 757.7543541560663 N_evals : 198
Minuit Migrad : 805.9804012604918 N_evals : 498
Function : func_8
L_BFGS_B N=1 : 831.8386141688325 N_evals : 231
L_BFGS_B N=3 : 831.8386141688252 N_evals : 441
L_BFGS_B N=5 : 831.8386141688245 N_evals : 861
L_BFGS_B N=7 : 831.8386141688266 N_evals : 1281
Scipy L_BFGS_B : 834.8234863035244 N_evals : 143
Minuit Migrad : 831.8386159051811 N_evals : 473
Function : func_9
L_BFGS_B N=1 : 1783.2257711241898 N_evals : 451
L_BFGS_B N=3 : 1783.2257711183734 N_evals : 861
L_BFGS_B N=5 : 1783.2257711192046 N_evals : 1681
L_BFGS_B N=7 : 1783.2257711184927 N_evals : 2501
Scipy L_BFGS_B : 1783.2257742864276 N_evals : 506
Minuit Migrad : 1772.475952140478 N_evals : 452
Function : func_10
L_BFGS_B N=1 : 3138.500725531011 N_evals : 198
L_BFGS_B N=3 : 3138.5007255309515 N_evals : 378
L_BFGS_B N=5 : 3138.5007255309497 N_evals : 738
L_BFGS_B N=7 : 3138.500725530949 N_evals : 1098
Scipy L_BFGS_B : 3145.6278807220606 N_evals : 484
Minuit Migrad : 3534.6345007084915 N_evals : 397
Function : func_11
L_BFGS_B N=1 : 1129.8485131973841 N_evals : 880
L_BFGS_B N=3 : 1129.8485131821917 N_evals : 1701
L_BFGS_B N=5 : 1129.8485131828988 N_evals : 3280
L_BFGS_B N=7 : 1129.8485131834577 N_evals : 4636
Scipy L_BFGS_B : 1129.8485134911543 N_evals : 891
Minuit Migrad : 1179.3176601500613 N_evals : 1580
Function : func_12
L_BFGS_B N=1 : 1555.575622184255 N_evals : 3960
L_BFGS_B N=3 : 1752.7214942307796 N_evals : 16989
L_BFGS_B N=5 : 1752.717919819736 N_evals : 12054
L_BFGS_B N=7 : 1318.438335088684 N_evals : 18910
Scipy L_BFGS_B : 1318.4540719995828 N_evals : 7205
Minuit Migrad : 1569.1753787758512 N_evals : 3339
Function : func_13
L_BFGS_B N=1 : 1525.6038557005984 N_evals : 2068
L_BFGS_B N=3 : 1510.561554246196 N_evals : 10542
L_BFGS_B N=5 : 1502.5700103688055 N_evals : 20992
L_BFGS_B N=7 : 1509.4380126725514 N_evals : 24400
Scipy L_BFGS_B : 1528.2951368701665 N_evals : 4191
Minuit Migrad : 1770.2398304377577 N_evals : 9506
Function : func_14
L_BFGS_B N=1 : 1459.899456880726 N_evals : 1133
L_BFGS_B N=3 : 1468.0059064512106 N_evals : 2352
L_BFGS_B N=5 : 1441.187050068189 N_evals : 6560
L_BFGS_B N=7 : 1471.0054074808463 N_evals : 22387
Scipy L_BFGS_B : 1537.9896422217955 N_evals : 1903
Minuit Migrad : 1616.6134268154333 N_evals : 3029
Function : func_15
L_BFGS_B N=1 : 1527.7447452905878 N_evals : 2288
L_BFGS_B N=3 : 1527.4199197383186 N_evals : 5733
L_BFGS_B N=5 : 1527.2072088033906 N_evals : 14842
L_BFGS_B N=7 : 1527.5166939621952 N_evals : 25132
Scipy L_BFGS_B : 1527.6881011459805 N_evals : 847
Minuit Migrad : 1520.9454273281078 N_evals : 2179
Function : func_16
L_BFGS_B N=1 : 2520.90746918958 N_evals : 1331
L_BFGS_B N=3 : 2520.904402123248 N_evals : 3549
L_BFGS_B N=5 : 2520.904168423107 N_evals : 3444
L_BFGS_B N=7 : 2520.9040892580333 N_evals : 11224
Scipy L_BFGS_B : 2241.1241959806453 N_evals : 1925
Minuit Migrad : 2419.245751883865 N_evals : 1468
Function : func_17
L_BFGS_B N=1 : 1944.4497830552393 N_evals : 1045
L_BFGS_B N=3 : 1886.0749827217617 N_evals : 4893
L_BFGS_B N=5 : 1941.57267053207 N_evals : 8036
L_BFGS_B N=7 : 1792.5111895706798 N_evals : 20435
Scipy L_BFGS_B : 1933.6464559520484 N_evals : 429
Minuit Migrad : 1938.9798885053667 N_evals : 1216
Function : func_18
L_BFGS_B N=1 : 1922.623612283958 N_evals : 1969
L_BFGS_B N=3 : 1863.7656930752505 N_evals : 50967
L_BFGS_B N=5 : 1867.5161758867 N_evals : 71381
L_BFGS_B N=7 : 1865.2706079719128 N_evals : 22692
Scipy L_BFGS_B : 1924.0588526804445 N_evals : 594
Minuit Migrad : 1848.9224272158042 N_evals : 6582
Function : func_19
L_BFGS_B N=1 : 1928.4406183352535 N_evals : 1870
L_BFGS_B N=3 : 2244.2161667218384 N_evals : 10668
L_BFGS_B N=5 : 1916.441936949231 N_evals : 7708
L_BFGS_B N=7 : 1924.546301648259 N_evals : 12444
Scipy L_BFGS_B : 2252.827886630934 N_evals : 770
Minuit Migrad : 1906.068600300467 N_evals : 6300
Function : func_20
L_BFGS_B N=1 : 2542.963660592671 N_evals : 891
L_BFGS_B N=3 : 2477.4392634471305 N_evals : 1764
L_BFGS_B N=5 : 2530.1130139203287 N_evals : 2501
L_BFGS_B N=7 : 2444.6789563313364 N_evals : 5551
Scipy L_BFGS_B : 2468.9730445583996 N_evals : 1265
Minuit Migrad : 2313.558973894199 N_evals : 992
Function : func_21
L_BFGS_B N=1 : 2401.4007962969554 N_evals : 242
L_BFGS_B N=3 : 2401.400796296955 N_evals : 462
L_BFGS_B N=5 : 2401.4007962969536 N_evals : 902
L_BFGS_B N=7 : 2401.400796296953 N_evals : 1342
Scipy L_BFGS_B : 2473.3073720808443 N_evals : 374
Minuit Migrad : 2464.856659805319 N_evals : 457
Function : func_22
L_BFGS_B N=1 : 2303.091396163196 N_evals : 924
L_BFGS_B N=3 : 2330.499024684588 N_evals : 1764
L_BFGS_B N=5 : 2300.4025742343892 N_evals : 4223
L_BFGS_B N=7 : 2301.399572772743 N_evals : 5124
Scipy L_BFGS_B : 2303.1296740255807 N_evals : 594
Minuit Migrad : 2305.521415786339 N_evals : 1701
Function : func_23
L_BFGS_B N=1 : 3303.6106937923996 N_evals : 286
L_BFGS_B N=3 : 3303.610693792294 N_evals : 546
L_BFGS_B N=5 : 3303.6106937923105 N_evals : 1066
L_BFGS_B N=7 : 3303.6106937923396 N_evals : 1586
Scipy L_BFGS_B : 2750.840641393623 N_evals : 242
Minuit Migrad : 3303.610805814556 N_evals : 462
Function : func_24
L_BFGS_B N=1 : 2500.0000011397633 N_evals : 1089
L_BFGS_B N=3 : 2500.000000591825 N_evals : 2100
L_BFGS_B N=5 : 2500.000000411552 N_evals : 4100
L_BFGS_B N=7 : 2500.0000005299876 N_evals : 6100
Scipy L_BFGS_B : 2500.0000072289445 N_evals : 847
Minuit Migrad : 2500.0000007857134 N_evals : 2776
Function : func_25
L_BFGS_B N=1 : 2945.271339208847 N_evals : 572
L_BFGS_B N=3 : 2948.1795932334876 N_evals : 1176
L_BFGS_B N=5 : 2949.0499132755917 N_evals : 3198
L_BFGS_B N=7 : 2945.67871552043 N_evals : 3294
Scipy L_BFGS_B : 2948.935880615545 N_evals : 660
Minuit Migrad : 2951.002076470935 N_evals : 1320
Function : func_26
L_BFGS_B N=1 : 4988.0558324628 N_evals : 484
L_BFGS_B N=3 : 4988.055832462341 N_evals : 966
L_BFGS_B N=5 : 4988.055832462418 N_evals : 1886
L_BFGS_B N=7 : 4988.055832462322 N_evals : 2806
Scipy L_BFGS_B : 4562.724102838574 N_evals : 253
Minuit Migrad : 5078.129098441988 N_evals : 719
Function : func_27
L_BFGS_B N=1 : 3232.2396002264413 N_evals : 1144
L_BFGS_B N=3 : 3256.58810557674 N_evals : 2835
L_BFGS_B N=5 : 3256.754201891588 N_evals : 10865
L_BFGS_B N=7 : 3256.4686727176354 N_evals : 6832
Scipy L_BFGS_B : 3456.8140904109837 N_evals : 990
Minuit Migrad : 3353.1642408483526 N_evals : 705
Function : func_28
L_BFGS_B N=1 : 3383.7340416205266 N_evals : 396
L_BFGS_B N=3 : 3383.73404149784 N_evals : 756
L_BFGS_B N=5 : 3383.7340414981254 N_evals : 1476
L_BFGS_B N=7 : 3383.734041498007 N_evals : 2196
Scipy L_BFGS_B : 3383.73404149896 N_evals : 352
Minuit Migrad : 3383.7340421882604 N_evals : 1060
Function : func_29
L_BFGS_B N=1 : 3756.5489518876275 N_evals : 5357
L_BFGS_B N=3 : 3934.790666639695 N_evals : 1911
L_BFGS_B N=5 : 3655.04671666182 N_evals : 5617
L_BFGS_B N=7 : 3366.436030712041 N_evals : 13359
Scipy L_BFGS_B : 3534.929799633869 N_evals : 715
Minuit Migrad : 3364.2163951595076 N_evals : 5487
Function : func_30
L_BFGS_B N=1 : 4075.492082178477 N_evals : 2915
L_BFGS_B N=3 : 4405.035270004914 N_evals : 11109
L_BFGS_B N=5 : 3857.0582696208703 N_evals : 27183
L_BFGS_B N=7 : 3926.1055706308184 N_evals : 12566
Scipy L_BFGS_B : 6079.671641683394 N_evals : 704
Minuit Migrad : 3798.591501375632 N_evals : 16769
We can see that using higher \(N\) does not improves the performance. Therefore, for smooth function, \(N=1\) can be safely used.
Performance of Minion’s L-BFGS-B at Different Noise Levels
In this section, we compare the performance of various algorithms implemented in Minion against their counterparts in other libraries, such as SciPy and Minuit. The test function used is the CEC2017 benchmark function with a dimensionality of \(D = 10\).
Noise Level : 0.01
[5]:
# Counter for function evaluations
N = 0
# Noise ratio for function evaluations (set to zero for noiseless optimization)
noise_ratio = 0.01
# Dictionary to store the number of evaluations per algorithm
N_dict = {}
# Maximum number of function evaluations allowed per optimization run
Nmaxeval = 100000
# Dimensionality of the optimization problem
dimension = 10
# Number of times each function should be tested (repetitions)
NRuns = 1
# The CEC benchmark year to use for function selection
year = 2017
# Dictionary mapping CEC benchmark years to their respective function sets
func_numbers_dict = {
2022: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
2020: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
2019: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
2017: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
2014: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
}
# Retrieve the function numbers for the selected benchmark year
func_numbers = func_numbers_dict[year]
# Using a thread pool to execute optimization tasks in parallel
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
futures = [] # List to store future objects representing scheduled tasks
# Run optimization tests multiple times (for averaging results)
for k in range(NRuns):
for j in func_numbers:
# Submit the optimization test function to the thread pool
futures.append(executor.submit(run_test_optimization, j, dimension, year, k, Nmaxeval))
# Wait for all submitted tasks to complete
concurrent.futures.wait(futures)
# Retrieve and process results (ensure all threads completed successfully)
for f in futures:
f.result()
Function : func_1
ARRDE : 96.14500824080655 N_evals : 100001
NelderMead : 28781555966.10401 N_evals : 100004
L_BFGS_B : 28967438775.199284 N_evals : 840
DA : 5113975922.803988 N_evals : 692
L_BFGS : 28865169796.73007 N_evals : 2248
Scipy L_BFGS_B : 29810515848.013885 N_evals : 473
Scipy DA : 5320.809024888155 N_evals : 42496
Scipy NelderMead : 28759989544.4244 N_evals : 100000
Minuit Migrad : 29680648551.424717 N_evals : 1925
Function : func_2
ARRDE : 192.58329019913305 N_evals : 100001
NelderMead : 8.447333218842839e+17 N_evals : 100006
L_BFGS_B : 8.565955970799781e+17 N_evals : 420
DA : 42192.830378741295 N_evals : 3922
L_BFGS : 8.69791903763521e+17 N_evals : 1492
Scipy L_BFGS_B : 8.869895529204933e+17 N_evals : 572
Scipy DA : 233.8625794039842 N_evals : 47072
Scipy NelderMead : 8.477604248846289e+17 N_evals : 100000
Minuit Migrad : 8.798324478066792e+17 N_evals : 2024
Function : func_3
ARRDE : 287.4965399144453 N_evals : 100001
NelderMead : 18821.918746154282 N_evals : 100000
L_BFGS_B : 19726.129770703963 N_evals : 651
DA : 18995.00321869129 N_evals : 420
L_BFGS : 19654.414088322348 N_evals : 2500
Scipy L_BFGS_B : 1335916.010880301 N_evals : 187
Scipy DA : 1924.8100349993797 N_evals : 42353
Scipy NelderMead : 1278483.3816739887 N_evals : 100000
Minuit Migrad : 1335470.4368372173 N_evals : 2115
Function : func_4
ARRDE : 391.07606485496063 N_evals : 100001
NelderMead : 5652.575013229248 N_evals : 100002
L_BFGS_B : 5752.615266181691 N_evals : 315
DA : 560.9198812887292 N_evals : 2157
L_BFGS : 5692.775189842742 N_evals : 4579
Scipy L_BFGS_B : 5943.196230914059 N_evals : 231
Scipy DA : 455.5385536805661 N_evals : 30539
Scipy NelderMead : 5624.5501979498395 N_evals : 100000
Minuit Migrad : 5870.843558614708 N_evals : 1686
Function : func_5
ARRDE : 483.75302068485047 N_evals : 100001
NelderMead : 696.5219212979883 N_evals : 100001
L_BFGS_B : 695.9299195245201 N_evals : 336
DA : 516.9621907576694 N_evals : 895
L_BFGS : 698.6106819544395 N_evals : 3088
Scipy L_BFGS_B : 712.4361427953191 N_evals : 231
Scipy DA : 520.544686299642 N_evals : 24654
Scipy NelderMead : 693.9872347412413 N_evals : 100000
Minuit Migrad : 740.5971847096357 N_evals : 1829
Function : func_6
ARRDE : 579.6308730996701 N_evals : 100001
NelderMead : 705.5455509664185 N_evals : 100000
L_BFGS_B : 714.6522996024515 N_evals : 273
DA : 631.7040809432958 N_evals : 1151
L_BFGS : 710.31748475886 N_evals : 2290
Scipy L_BFGS_B : 733.9629313309979 N_evals : 308
Scipy DA : 592.618219858021 N_evals : 24302
Scipy NelderMead : 710.7503507335866 N_evals : 100000
Minuit Migrad : 737.0811540268232 N_evals : 1791
Function : func_7
ARRDE : 698.4699708745328 N_evals : 100001
NelderMead : 899.1208561959041 N_evals : 100010
L_BFGS_B : 911.8524053320186 N_evals : 273
DA : 793.4969247112754 N_evals : 1862
L_BFGS : 907.7076915244139 N_evals : 3067
Scipy L_BFGS_B : 943.0594016509012 N_evals : 363
Scipy DA : 716.3846827827256 N_evals : 26777
Scipy NelderMead : 901.4395912155758 N_evals : 100000
Minuit Migrad : 949.568290377941 N_evals : 2277
Function : func_8
ARRDE : 773.6353987127446 N_evals : 100001
NelderMead : 908.2336903968348 N_evals : 100000
L_BFGS_B : 908.3225821420784 N_evals : 357
DA : 844.1891585552704 N_evals : 729
L_BFGS : 913.1677208799299 N_evals : 2059
Scipy L_BFGS_B : 958.6618981773728 N_evals : 363
Scipy DA : 795.5743973944996 N_evals : 25996
Scipy NelderMead : 906.1708278220067 N_evals : 100000
Minuit Migrad : 945.2971044708131 N_evals : 1477
Function : func_9
ARRDE : 866.6130036821643 N_evals : 100001
NelderMead : 2767.144557627401 N_evals : 100003
L_BFGS_B : 4204.942511544154 N_evals : 252
DA : 2128.129412815492 N_evals : 293
L_BFGS : 3427.6445361801784 N_evals : 2038
Scipy L_BFGS_B : 4341.130965074682 N_evals : 308
Scipy DA : 894.6862518241155 N_evals : 29483
Scipy NelderMead : 4113.7204034309025 N_evals : 100000
Minuit Migrad : 4324.004865893925 N_evals : 2208
Function : func_10
ARRDE : 1087.0675411179802 N_evals : 100001
NelderMead : 5868.3675092089425 N_evals : 100011
L_BFGS_B : 5967.651462096054 N_evals : 609
DA : 3385.7940395718642 N_evals : 881
L_BFGS : 5180.087053786555 N_evals : 2500
Scipy L_BFGS_B : 6163.469336724759 N_evals : 308
Scipy DA : 1121.8391515082517 N_evals : 30209
Scipy NelderMead : 5865.626910524954 N_evals : 100000
Minuit Migrad : 6088.193404294518 N_evals : 2030
Function : func_11
ARRDE : 1064.7321934773895 N_evals : 100001
NelderMead : 61909058.11036966 N_evals : 100001
L_BFGS_B : 64175724.88485202 N_evals : 273
DA : 16136.594023001253 N_evals : 692
L_BFGS : 62463539.55323469 N_evals : 2584
Scipy L_BFGS_B : 65412133.96728243 N_evals : 308
Scipy DA : 1115.295079893644 N_evals : 26414
Scipy NelderMead : 62197640.30685213 N_evals : 100000
Minuit Migrad : 64395710.62577742 N_evals : 2300
Function : func_12
ARRDE : 1259.9849841536286 N_evals : 100001
NelderMead : 5474882447.733411 N_evals : 100004
L_BFGS_B : 5569954261.184121 N_evals : 252
DA : 1088944784.5250936 N_evals : 1301
L_BFGS : 5491794855.379209 N_evals : 5146
Scipy L_BFGS_B : 5791810169.207424 N_evals : 352
Scipy DA : 1156898.510071128 N_evals : 42199
Scipy NelderMead : 5438134950.588422 N_evals : 100000
Minuit Migrad : 5675018961.328545 N_evals : 1967
Function : func_13
ARRDE : 1267.5791956841892 N_evals : 100001
NelderMead : 2702447440.6011066 N_evals : 100004
L_BFGS_B : 2763741999.544866 N_evals : 231
DA : 3599.6050632160814 N_evals : 1949
L_BFGS : 2751496258.0592146 N_evals : 2269
Scipy L_BFGS_B : 2890761527.9478974 N_evals : 231
Scipy DA : 19427.97045434872 N_evals : 33421
Scipy NelderMead : 2715762636.978418 N_evals : 100000
Minuit Migrad : 2853128265.688296 N_evals : 2296
Function : func_14
ARRDE : 1380.9891612110468 N_evals : 100001
NelderMead : 2117716341.5269456 N_evals : 100008
L_BFGS_B : 2148739330.387049 N_evals : 252
DA : 2178.279972531049 N_evals : 922
L_BFGS : 2146137922.5806398 N_evals : 3130
Scipy L_BFGS_B : 2242140644.119217 N_evals : 352
Scipy DA : 2168.6652092686422 N_evals : 27756
Scipy NelderMead : 2113061793.0732186 N_evals : 100000
Minuit Migrad : 2180528138.072782 N_evals : 1869
Function : func_15
ARRDE : 1454.1346243706937 N_evals : 100001
NelderMead : 737914285.1579087 N_evals : 100000
L_BFGS_B : 751532551.7846527 N_evals : 210
DA : 6302.8192936027135 N_evals : 1529
L_BFGS : 743539159.3756969 N_evals : 5629
Scipy L_BFGS_B : 768034925.4049824 N_evals : 308
Scipy DA : 1932.7059046062716 N_evals : 28548
Scipy NelderMead : 739329318.2195171 N_evals : 100000
Minuit Migrad : 767821280.100491 N_evals : 2165
Function : func_16
ARRDE : 1547.790672175538 N_evals : 100001
NelderMead : 3299.6384748465694 N_evals : 100003
L_BFGS_B : 3304.422155093566 N_evals : 252
DA : 2305.336670781815 N_evals : 566
L_BFGS : 3335.746718360755 N_evals : 1807
Scipy L_BFGS_B : 3502.1020405912996 N_evals : 341
Scipy DA : 1696.9234167567517 N_evals : 29362
Scipy NelderMead : 3284.4385217890494 N_evals : 100000
Minuit Migrad : 3459.2065301316 N_evals : 1971
Function : func_17
ARRDE : 1669.1858385208734 N_evals : 100001
NelderMead : 3150.7791526591836 N_evals : 100008
L_BFGS_B : 2746.4049619646935 N_evals : 693
DA : 1881.8736307083773 N_evals : 2095
L_BFGS : 2634.974369171859 N_evals : 3361
Scipy L_BFGS_B : 3331.9028000540184 N_evals : 231
Scipy DA : 1725.2863252085579 N_evals : 27503
Scipy NelderMead : 3109.0230172921874 N_evals : 100000
Minuit Migrad : 3306.010140420297 N_evals : 2203
Function : func_18
ARRDE : 1761.973026068344 N_evals : 100001
NelderMead : 13857019683.88416 N_evals : 100002
L_BFGS_B : 13645639559.98466 N_evals : 588
DA : 1897.728021312651 N_evals : 1006
L_BFGS : 13996791197.33713 N_evals : 1366
Scipy L_BFGS_B : 14368245828.291199 N_evals : 231
Scipy DA : 28116.247703803645 N_evals : 34037
Scipy NelderMead : 13873557905.821062 N_evals : 100000
Minuit Migrad : 14336666727.456545 N_evals : 1850
Function : func_19
ARRDE : 1837.3104601311254 N_evals : 100001
NelderMead : 11776053810.051067 N_evals : 100011
L_BFGS_B : 11187425238.916925 N_evals : 336
DA : 7422.225078358791 N_evals : 1425
L_BFGS : 11911337294.911367 N_evals : 3109
Scipy L_BFGS_B : 12275008980.500183 N_evals : 341
Scipy DA : 1910.4201568917051 N_evals : 29615
Scipy NelderMead : 11737776360.577524 N_evals : 100000
Minuit Migrad : 12256931172.742105 N_evals : 2047
Function : func_20
ARRDE : 1945.3345561522842 N_evals : 100001
NelderMead : 3022.999679595879 N_evals : 100000
L_BFGS_B : 3056.1984831945615 N_evals : 252
DA : 2479.5024932469287 N_evals : 1087
L_BFGS : 3072.9005808822467 N_evals : 1807
Scipy L_BFGS_B : 3142.5863442942373 N_evals : 407
Scipy DA : 2046.2889627196816 N_evals : 26403
Scipy NelderMead : 3016.166117643164 N_evals : 100000
Minuit Migrad : 3111.3045923529876 N_evals : 1950
Function : func_21
ARRDE : 2124.851517587839 N_evals : 100001
NelderMead : 2696.6759692372193 N_evals : 100007
L_BFGS_B : 2762.786560614329 N_evals : 231
DA : 2313.3987032893683 N_evals : 1415
L_BFGS : 2722.3678862641254 N_evals : 2017
Scipy L_BFGS_B : 2876.589925726302 N_evals : 231
Scipy DA : 2282.644136813161 N_evals : 23301
Scipy NelderMead : 2699.09777240641 N_evals : 100000
Minuit Migrad : 2826.6328114516 N_evals : 1702
Function : func_22
ARRDE : 2224.970354964689 N_evals : 100001
NelderMead : 5057.5457442588 N_evals : 100001
L_BFGS_B : 5183.719834655984 N_evals : 441
DA : 2663.0540669368934 N_evals : 524
L_BFGS : 5004.227752177511 N_evals : 1513
Scipy L_BFGS_B : 5320.680674933006 N_evals : 231
Scipy DA : 2173.602001373622 N_evals : 30011
Scipy NelderMead : 5067.831033895511 N_evals : 100000
Minuit Migrad : 5407.314668805562 N_evals : 1893
Function : func_23
ARRDE : 2563.9890460289516 N_evals : 100001
NelderMead : 4151.105685319582 N_evals : 100009
L_BFGS_B : 4259.9110055356705 N_evals : 294
DA : 2702.993621842106 N_evals : 1802
L_BFGS : 3902.0277956655805 N_evals : 5335
Scipy L_BFGS_B : 4300.752622713925 N_evals : 308
Scipy DA : 2579.9121741824147 N_evals : 24775
Scipy NelderMead : 4141.219886663614 N_evals : 100000
Minuit Migrad : 4313.454690358024 N_evals : 1866
Function : func_24
ARRDE : 2653.729865872492 N_evals : 100001
NelderMead : 3253.9045574077168 N_evals : 100000
L_BFGS_B : 3305.6937039075515 N_evals : 210
DA : 2833.3574246078897 N_evals : 775
L_BFGS : 3272.572098334315 N_evals : 1660
Scipy L_BFGS_B : 3389.660250658994 N_evals : 341
Scipy DA : 2691.196153365553 N_evals : 27624
Scipy NelderMead : 3248.889125468214 N_evals : 100000
Minuit Migrad : 3371.367553918787 N_evals : 1993
Function : func_25
ARRDE : 2798.0286922642044 N_evals : 100001
NelderMead : 4613.034027383975 N_evals : 100006
L_BFGS_B : 4696.782277868795 N_evals : 273
DA : 3701.4727186211876 N_evals : 818
L_BFGS : 4640.089929195702 N_evals : 2542
Scipy L_BFGS_B : 4791.988860622819 N_evals : 253
Scipy DA : 2910.559094136426 N_evals : 24643
Scipy NelderMead : 4608.642421193324 N_evals : 100000
Minuit Migrad : 4785.307617953976 N_evals : 1892
Function : func_26
ARRDE : 2793.7404559345846 N_evals : 100001
NelderMead : 5494.5697684543475 N_evals : 100009
L_BFGS_B : 5564.6024815244045 N_evals : 252
DA : 3921.020001666365 N_evals : 1258
L_BFGS : 5532.779334836229 N_evals : 2185
Scipy L_BFGS_B : 5804.050130513668 N_evals : 231
Scipy DA : 2965.9775548966936 N_evals : 29769
Scipy NelderMead : 5477.879805138335 N_evals : 100000
Minuit Migrad : 5753.802795682974 N_evals : 1959
Function : func_27
ARRDE : 2983.0851057002487 N_evals : 100001
NelderMead : 4830.379947576686 N_evals : 100001
L_BFGS_B : 4902.965666670947 N_evals : 252
DA : 3163.058330776724 N_evals : 1741
L_BFGS : 4844.572637778677 N_evals : 1555
Scipy L_BFGS_B : 5084.407918244782 N_evals : 231
Scipy DA : 3057.4946115233465 N_evals : 24313
Scipy NelderMead : 4855.298042539701 N_evals : 100000
Minuit Migrad : 5055.903105957959 N_evals : 2360
Function : func_28
ARRDE : 3261.327997627691 N_evals : 100001
NelderMead : 4311.2932970163365 N_evals : 100007
L_BFGS_B : 4414.506027519723 N_evals : 231
DA : 3827.305445595818 N_evals : 733
L_BFGS : 3225.203083887092 N_evals : 1345
Scipy L_BFGS_B : 4544.575656603258 N_evals : 363
Scipy DA : 3160.773084782499 N_evals : 25985
Scipy NelderMead : 4317.634129256602 N_evals : 100000
Minuit Migrad : 4467.842747366673 N_evals : 1926
Function : func_29
ARRDE : 3051.5313834856497 N_evals : 100001
NelderMead : 46768.93870454843 N_evals : 100010
L_BFGS_B : 47587.29297401729 N_evals : 252
DA : 3384.639653804074 N_evals : 1256
L_BFGS : 42242.93137836483 N_evals : 3823
Scipy L_BFGS_B : 49592.75606932816 N_evals : 352
Scipy DA : 3221.0350195716433 N_evals : 23202
Scipy NelderMead : 46924.90989955847 N_evals : 100000
Minuit Migrad : 48941.838771386334 N_evals : 2025
Function : func_30
ARRDE : 3311.4403163794614 N_evals : 100001
NelderMead : 484404880.54370075 N_evals : 100011
L_BFGS_B : 492586138.81384337 N_evals : 252
DA : 17489265.61321617 N_evals : 2223
L_BFGS : 481131763.8977043 N_evals : 2248
Scipy L_BFGS_B : 504626216.49871963 N_evals : 297
Scipy DA : 1168538.4207416116 N_evals : 37106
Scipy NelderMead : 484099814.7741773 N_evals : 100000
Minuit Migrad : 505280332.85369766 N_evals : 2251
Noise Level: 0.0001
[6]:
# Noise ratio for function evaluations (set to zero for noiseless optimization)
noise_ratio = 1e-4
# Using a thread pool to execute optimization tasks in parallel
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
futures = [] # List to store future objects representing scheduled tasks
# Run optimization tests multiple times (for averaging results)
for k in range(NRuns):
for j in func_numbers:
# Submit the optimization test function to the thread pool
futures.append(executor.submit(run_test_optimization, j, dimension, year, k, Nmaxeval))
# Wait for all submitted tasks to complete
concurrent.futures.wait(futures)
# Retrieve and process results (ensure all threads completed successfully)
for f in futures:
f.result()
Function : func_1
ARRDE : 99.95899815053443 N_evals : 100001
NelderMead : 2407.7525846009025 N_evals : 100001
L_BFGS_B : 600.3019071324612 N_evals : 567
DA : 2677066.818947051 N_evals : 441
L_BFGS : 1169.7275416547363 N_evals : 2710
Scipy L_BFGS_B : 29974660155.091305 N_evals : 385
Scipy DA : 4691.9889455203065 N_evals : 47182
Scipy NelderMead : 29960364925.435005 N_evals : 100000
Minuit Migrad : 29967592215.33604 N_evals : 2567
Function : func_2
ARRDE : 199.92178939827895 N_evals : 100001
NelderMead : 214.4889254015269 N_evals : 100009
L_BFGS_B : 200.04925476669797 N_evals : 2793
DA : 199.97762269241196 N_evals : 3860
L_BFGS : 7.569347374571962e+17 N_evals : 1366
Scipy L_BFGS_B : 8.870091554697796e+17 N_evals : 352
Scipy DA : 199.9512605994332 N_evals : 58864
Scipy NelderMead : 8.865748986110458e+17 N_evals : 100000
Minuit Migrad : 2.181153758966794e+17 N_evals : 2997
Function : func_3
ARRDE : 299.8958279604248 N_evals : 100001
NelderMead : 299.8899981480736 N_evals : 100002
L_BFGS_B : 300.14615804537294 N_evals : 1995
DA : 300.1343445724379 N_evals : 3150
L_BFGS : 442.94307620433534 N_evals : 3844
Scipy L_BFGS_B : 1343158.5624858413 N_evals : 264
Scipy DA : 583.036997428009 N_evals : 100000
Scipy NelderMead : 1340250.9303625152 N_evals : 100000
Minuit Migrad : 980906.5040135984 N_evals : 2696
Function : func_4
ARRDE : 399.8613127300937 N_evals : 100001
NelderMead : 473.1536660863839 N_evals : 100008
L_BFGS_B : 461.8745330949163 N_evals : 714
DA : 406.08095631115395 N_evals : 3405
L_BFGS : 407.5773724475362 N_evals : 3886
Scipy L_BFGS_B : 5903.188947874172 N_evals : 231
Scipy DA : 406.862483149068 N_evals : 37326
Scipy NelderMead : 5899.1213368352755 N_evals : 100000
Minuit Migrad : 5901.71964100489 N_evals : 2734
Function : func_5
ARRDE : 501.82937540552444 N_evals : 100001
NelderMead : 633.444712080834 N_evals : 100003
L_BFGS_B : 651.6063871479922 N_evals : 2142
DA : 516.9829609684837 N_evals : 1107
L_BFGS : 649.5174790448466 N_evals : 2101
Scipy L_BFGS_B : 726.6615536791008 N_evals : 308
Scipy DA : 514.8306138128169 N_evals : 37524
Scipy NelderMead : 726.4138160075651 N_evals : 100000
Minuit Migrad : 565.3338919317415 N_evals : 3255
Function : func_6
ARRDE : 599.8057507910409 N_evals : 100001
NelderMead : 661.6272914190051 N_evals : 100010
L_BFGS_B : 682.5644581852085 N_evals : 399
DA : 612.6807316972969 N_evals : 3850
L_BFGS : 676.9730248348293 N_evals : 4768
Scipy L_BFGS_B : 741.8747696465413 N_evals : 319
Scipy DA : 600.0797222385648 N_evals : 46742
Scipy NelderMead : 741.4192539739555 N_evals : 100000
Minuit Migrad : 650.5257602454149 N_evals : 3042
Function : func_7
ARRDE : 711.3790719333858 N_evals : 100001
NelderMead : 811.0212970233881 N_evals : 100008
L_BFGS_B : 811.6113907512325 N_evals : 987
DA : 831.7438002189331 N_evals : 730
L_BFGS : 797.7147230927651 N_evals : 3088
Scipy L_BFGS_B : 939.7213247932823 N_evals : 374
Scipy DA : 719.2361894426933 N_evals : 34785
Scipy NelderMead : 939.3217602861848 N_evals : 100000
Minuit Migrad : 939.8784433980345 N_evals : 2858
Function : func_8
ARRDE : 801.7030253753164 N_evals : 100001
NelderMead : 834.8131714525725 N_evals : 100011
L_BFGS_B : 872.4404409128356 N_evals : 1029
DA : 809.0307288807455 N_evals : 2489
L_BFGS : 825.6964030288323 N_evals : 4726
Scipy L_BFGS_B : 946.696472207817 N_evals : 231
Scipy DA : 817.8490364177735 N_evals : 34873
Scipy NelderMead : 946.1009339457577 N_evals : 100000
Minuit Migrad : 946.6547189041688 N_evals : 2754
Function : func_9
ARRDE : 899.6999471355191 N_evals : 100001
NelderMead : 1783.2135930280474 N_evals : 100000
L_BFGS_B : 1783.6875469984966 N_evals : 1239
DA : 1681.8278519319983 N_evals : 713
L_BFGS : 1831.9823157152264 N_evals : 2248
Scipy L_BFGS_B : 4306.872052207069 N_evals : 231
Scipy DA : 907.2746548238719 N_evals : 34279
Scipy NelderMead : 4303.771372983138 N_evals : 100000
Minuit Migrad : 4305.53425283089 N_evals : 2785
Function : func_10
ARRDE : 1009.8650542902807 N_evals : 100001
NelderMead : 3159.150716963664 N_evals : 100000
L_BFGS_B : 3061.4378350050642 N_evals : 903
DA : 2754.8847965969417 N_evals : 963
L_BFGS : 3360.252171036165 N_evals : 2920
Scipy L_BFGS_B : 6139.069724734058 N_evals : 231
Scipy DA : 1466.6820332733453 N_evals : 38206
Scipy NelderMead : 6135.691154488223 N_evals : 100000
Minuit Migrad : 6137.267985319764 N_evals : 2664
Function : func_11
ARRDE : 1099.767380630948 N_evals : 100001
NelderMead : 1136.2580194112743 N_evals : 100011
L_BFGS_B : 1154.7520295533122 N_evals : 1113
DA : 1120.0151630561875 N_evals : 3262
L_BFGS : 1131.1966472118484 N_evals : 3214
Scipy L_BFGS_B : 65021268.69077844 N_evals : 275
Scipy DA : 1103.304271343442 N_evals : 43013
Scipy NelderMead : 65000482.2930928 N_evals : 100000
Minuit Migrad : 2464.042585210315 N_evals : 3156
Function : func_12
ARRDE : 1199.6572074860114 N_evals : 100001
NelderMead : 19293.335667336618 N_evals : 100000
L_BFGS_B : 4893.144603357259 N_evals : 609
DA : 8544.292481418343 N_evals : 2385
L_BFGS : 10494.560622960898 N_evals : 1828
Scipy L_BFGS_B : 5720932101.179209 N_evals : 231
Scipy DA : 1504449.8415956723 N_evals : 100000
Scipy NelderMead : 5718627967.3668585 N_evals : 100000
Minuit Migrad : 5720528750.631125 N_evals : 3091
Function : func_13
ARRDE : 1299.897575577077 N_evals : 100001
NelderMead : 14002.396518280202 N_evals : 100001
L_BFGS_B : 14821.370867834636 N_evals : 399
DA : 4418.823141153136 N_evals : 3244
L_BFGS : 14675.71320412019 N_evals : 2500
Scipy L_BFGS_B : 2841310159.6170692 N_evals : 297
Scipy DA : 1326.1386203785758 N_evals : 42672
Scipy NelderMead : 2840375271.5309415 N_evals : 100000
Minuit Migrad : 2840427155.6437044 N_evals : 2680
Function : func_14
ARRDE : 1400.5140836798942 N_evals : 100001
NelderMead : 7839.094292880486 N_evals : 100010
L_BFGS_B : 6517.953911757977 N_evals : 294
DA : 1484.7336254930235 N_evals : 3027
L_BFGS : 7423.840634006795 N_evals : 3466
Scipy L_BFGS_B : 2215729363.6590214 N_evals : 231
Scipy DA : 2228.546881743041 N_evals : 52726
Scipy NelderMead : 2214378359.472759 N_evals : 100000
Minuit Migrad : 2215509660.6270657 N_evals : 3107
Function : func_15
ARRDE : 1499.8892600698484 N_evals : 100001
NelderMead : 23826.752591350218 N_evals : 100000
L_BFGS_B : 15805.352726357169 N_evals : 609
DA : 5712.716652289194 N_evals : 1882
L_BFGS : 23501.59521033052 N_evals : 2437
Scipy L_BFGS_B : 769611066.0262285 N_evals : 231
Scipy DA : 3466.8512716282967 N_evals : 46654
Scipy NelderMead : 769216957.6502163 N_evals : 100000
Minuit Migrad : 769531514.9369435 N_evals : 2685
Function : func_16
ARRDE : 1600.534708405976 N_evals : 100001
NelderMead : 2350.4018334576153 N_evals : 100000
L_BFGS_B : 2468.5294559383856 N_evals : 1176
DA : 2200.135243873384 N_evals : 2990
L_BFGS : 2558.5970623457774 N_evals : 2668
Scipy L_BFGS_B : 3438.171069053829 N_evals : 330
Scipy DA : 1746.3472594017885 N_evals : 40186
Scipy NelderMead : 3436.1979510789483 N_evals : 100000
Minuit Migrad : 3437.7989958662056 N_evals : 2508
Function : func_17
ARRDE : 1699.761400033756 N_evals : 100001
NelderMead : 2653.129531972965 N_evals : 100000
L_BFGS_B : 1822.1096936062293 N_evals : 966
DA : 1949.2612616543067 N_evals : 5295
L_BFGS : 2059.6635824326636 N_evals : 2374
Scipy L_BFGS_B : 3282.6895834541638 N_evals : 429
Scipy DA : 1721.579814709872 N_evals : 41891
Scipy NelderMead : 3281.6197164510845 N_evals : 100000
Minuit Migrad : 3283.1120727878006 N_evals : 2687
Function : func_18
ARRDE : 1799.908898807996 N_evals : 100001
NelderMead : 9825.135559644668 N_evals : 100001
L_BFGS_B : 3380.786294003689 N_evals : 504
DA : 1892.7291355909451 N_evals : 3067
L_BFGS : 6653.457329483051 N_evals : 3319
Scipy L_BFGS_B : 14468258075.365196 N_evals : 297
Scipy DA : 5672.70683289569 N_evals : 42683
Scipy NelderMead : 14462646057.573866 N_evals : 100000
Minuit Migrad : 14466474053.582438 N_evals : 2958
Function : func_19
ARRDE : 1900.378461440789 N_evals : 100001
NelderMead : 455987.68776403274 N_evals : 100009
L_BFGS_B : 4373.830054500769 N_evals : 1092
DA : 2594.249387706259 N_evals : 3731
L_BFGS : 2298.966362893599 N_evals : 4768
Scipy L_BFGS_B : 12289766008.231869 N_evals : 231
Scipy DA : 2285.4363842378284 N_evals : 38745
Scipy NelderMead : 12283580867.149551 N_evals : 100000
Minuit Migrad : 12288998702.227829 N_evals : 2980
Function : func_20
ARRDE : 1999.3692856420053 N_evals : 100001
NelderMead : 3134.9452288595703 N_evals : 100010
L_BFGS_B : 2528.6927162786583 N_evals : 1008
DA : 2393.813792790176 N_evals : 1717
L_BFGS : 2447.4244333383344 N_evals : 2164
Scipy L_BFGS_B : 3152.4094380762813 N_evals : 308
Scipy DA : 2008.3517411058465 N_evals : 45895
Scipy NelderMead : 3151.0386465799897 N_evals : 100000
Minuit Migrad : 3152.5022878373024 N_evals : 2879
Function : func_21
ARRDE : 2199.285224400409 N_evals : 100001
NelderMead : 2826.371768785894 N_evals : 100009
L_BFGS_B : 2825.185727027845 N_evals : 378
DA : 2229.5040099897546 N_evals : 3372
L_BFGS : 2514.875995974547 N_evals : 2479
Scipy L_BFGS_B : 2828.8473362483587 N_evals : 231
Scipy DA : 2311.658574290599 N_evals : 32992
Scipy NelderMead : 2827.26982193359 N_evals : 100000
Minuit Migrad : 2828.8395142515005 N_evals : 2820
Function : func_22
ARRDE : 2299.1533257550795 N_evals : 100001
NelderMead : 2313.7886528139625 N_evals : 100010
L_BFGS_B : 2338.5804957965697 N_evals : 1932
DA : 2311.272390892906 N_evals : 3325
L_BFGS : 2408.807721293508 N_evals : 3676
Scipy L_BFGS_B : 5301.849388804095 N_evals : 231
Scipy DA : 2303.4156398067926 N_evals : 36545
Scipy NelderMead : 5300.280959829859 N_evals : 100000
Minuit Migrad : 5302.270731486517 N_evals : 3013
Function : func_23
ARRDE : 2602.040361269296 N_evals : 100001
NelderMead : 3305.897185420754 N_evals : 100000
L_BFGS_B : 3425.4536232910127 N_evals : 1491
DA : 2638.854304727065 N_evals : 3347
L_BFGS : 3320.2144479302433 N_evals : 2353
Scipy L_BFGS_B : 4335.967673736256 N_evals : 363
Scipy DA : 2621.0505786791196 N_evals : 35984
Scipy NelderMead : 4333.556985466172 N_evals : 100000
Minuit Migrad : 4335.841060536398 N_evals : 3030
Function : func_24
ARRDE : 2729.2926370115165 N_evals : 100001
NelderMead : 3390.8923854485997 N_evals : 100001
L_BFGS_B : 2981.1555020917745 N_evals : 1239
DA : 2759.703266415113 N_evals : 2665
L_BFGS : 3390.034354635313 N_evals : 3928
Scipy L_BFGS_B : 3392.903526168992 N_evals : 231
Scipy DA : 2764.7317993016604 N_evals : 26117
Scipy NelderMead : 3390.8002131089747 N_evals : 100000
Minuit Migrad : 3392.125735140426 N_evals : 2792
Function : func_25
ARRDE : 2896.7736267400724 N_evals : 100001
NelderMead : 3036.8267229406533 N_evals : 100000
L_BFGS_B : 3287.948451549422 N_evals : 1554
DA : 2901.065257470666 N_evals : 2719
L_BFGS : 4766.565496519477 N_evals : 2227
Scipy L_BFGS_B : 4821.325672270607 N_evals : 352
Scipy DA : 2948.525181866107 N_evals : 34796
Scipy NelderMead : 4818.7827986772645 N_evals : 100000
Minuit Migrad : 4820.833580154476 N_evals : 2877
Function : func_26
ARRDE : 2898.9533604342446 N_evals : 100001
NelderMead : 5731.409176488082 N_evals : 100011
L_BFGS_B : 5345.449223636441 N_evals : 546
DA : 2800.6216444852525 N_evals : 3414
L_BFGS : 4452.311069121525 N_evals : 5125
Scipy L_BFGS_B : 5733.462241486771 N_evals : 374
Scipy DA : 2899.4751646238255 N_evals : 44179
Scipy NelderMead : 5731.528943452338 N_evals : 100000
Minuit Migrad : 5733.652402846106 N_evals : 3322
Function : func_27
ARRDE : 3088.3777330322487 N_evals : 100001
NelderMead : 3255.8832596029843 N_evals : 100010
L_BFGS_B : 3403.9652921513807 N_evals : 1176
DA : 3196.8284198973406 N_evals : 1653
L_BFGS : 3848.709589331605 N_evals : 2983
Scipy L_BFGS_B : 5056.154749790296 N_evals : 231
Scipy DA : 3101.6283860193284 N_evals : 31991
Scipy NelderMead : 5053.7538943281115 N_evals : 100000
Minuit Migrad : 5056.079714716714 N_evals : 3182
Function : func_28
ARRDE : 3382.4055563090387 N_evals : 100001
NelderMead : 4514.91962547393 N_evals : 100000
L_BFGS_B : 4514.818898239526 N_evals : 231
DA : 3560.6003608918736 N_evals : 3138
L_BFGS : 3960.440587444343 N_evals : 3382
Scipy L_BFGS_B : 4517.367004373319 N_evals : 429
Scipy DA : 3173.301142659824 N_evals : 46060
Scipy NelderMead : 4515.519638779169 N_evals : 100000
Minuit Migrad : 4517.197055524815 N_evals : 3305
Function : func_29
ARRDE : 3129.7527040887267 N_evals : 100001
NelderMead : 3829.74057704837 N_evals : 100008
L_BFGS_B : 3507.501614171285 N_evals : 1113
DA : 3265.2581326981986 N_evals : 3298
L_BFGS : 3561.316262791867 N_evals : 3571
Scipy L_BFGS_B : 48961.61804533419 N_evals : 286
Scipy DA : 3201.0984900655317 N_evals : 30803
Scipy NelderMead : 48932.34687138425 N_evals : 100000
Minuit Migrad : 48967.810763578425 N_evals : 2845
Function : func_30
ARRDE : 3393.7789873940956 N_evals : 100001
NelderMead : 5011.126621994868 N_evals : 100000
L_BFGS_B : 2202712.7522595283 N_evals : 987
DA : 3944038.881750477 N_evals : 2768
L_BFGS : 5142.341517485651 N_evals : 3088
Scipy L_BFGS_B : 506059928.43953204 N_evals : 231
Scipy DA : 120794.80476790163 N_evals : 100064
Scipy NelderMead : 505845281.7083486 N_evals : 100000
Minuit Migrad : 4383.308457037874 N_evals : 3677
Noise Level : 1e-6
[7]:
# Noise ratio for function evaluations (set to zero for noiseless optimization)
noise_ratio = 1e-6
# Using a thread pool to execute optimization tasks in parallel
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
futures = [] # List to store future objects representing scheduled tasks
# Run optimization tests multiple times (for averaging results)
for k in range(1):
for j in func_numbers:
# Submit the optimization test function to the thread pool
futures.append(executor.submit(run_test_optimization, j, dimension, year, k, Nmaxeval))
# Wait for all submitted tasks to complete
concurrent.futures.wait(futures)
# Retrieve and process results (ensure all threads completed successfully)
for f in futures:
f.result()
Function : func_1
ARRDE : 99.99964781893205 N_evals : 100001
NelderMead : 356.40512258000297 N_evals : 100008
L_BFGS_B : 268.5114363233441 N_evals : 483
DA : 5472.691112890415 N_evals : 525
L_BFGS : 99.9998626868106 N_evals : 2542
Scipy L_BFGS_B : 29975437044.324764 N_evals : 231
Scipy DA : 3151.4395850707765 N_evals : 55135
Scipy NelderMead : 254.4793333422192 N_evals : 100000
Minuit Migrad : 8974.435604902517 N_evals : 6576
Function : func_2
ARRDE : 199.99921921045606 N_evals : 100001
NelderMead : 200.0362083492918 N_evals : 100006
L_BFGS_B : 200.0031561068971 N_evals : 2919
DA : 200.0033127460315 N_evals : 4086
L_BFGS : 7.556704866617134e+17 N_evals : 1366
Scipy L_BFGS_B : 8.869650711116507e+17 N_evals : 286
Scipy DA : 200.00217912521143 N_evals : 87409
Scipy NelderMead : 19548635274.225998 N_evals : 100000
Minuit Migrad : 203.50825753676895 N_evals : 9026
Function : func_3
ARRDE : 299.9988554447606 N_evals : 100001
NelderMead : 299.99936378962366 N_evals : 100003
L_BFGS_B : 300.00051243016924 N_evals : 1659
DA : 300.00148801452224 N_evals : 1680
L_BFGS : 299.99963142569936 N_evals : 3634
Scipy L_BFGS_B : 1343217.4554920231 N_evals : 231
Scipy DA : 564.9219517582387 N_evals : 100133
Scipy NelderMead : 300.0932694218435 N_evals : 100000
Minuit Migrad : 300.080827889641 N_evals : 6811
Function : func_4
ARRDE : 399.9986239773887 N_evals : 100001
NelderMead : 468.8152922580431 N_evals : 100010
L_BFGS_B : 400.04666456442897 N_evals : 2100
DA : 400.0158883575902 N_evals : 3247
L_BFGS : 400.35348107489705 N_evals : 8590
Scipy L_BFGS_B : 5901.66141986406 N_evals : 231
Scipy DA : 401.52684500358055 N_evals : 86881
Scipy NelderMead : 408.3019139254731 N_evals : 100000
Minuit Migrad : 405.72053213086764 N_evals : 6200
Function : func_5
ARRDE : 501.98835382130875 N_evals : 100001
NelderMead : 621.3810335333288 N_evals : 100004
L_BFGS_B : 632.3265947707985 N_evals : 483
DA : 526.8629704677304 N_evals : 2418
L_BFGS : 621.381336547885 N_evals : 2290
Scipy L_BFGS_B : 726.7157251742613 N_evals : 341
Scipy DA : 508.9539404174796 N_evals : 42540
Scipy NelderMead : 632.9204768154283 N_evals : 100000
Minuit Migrad : 521.9164363543148 N_evals : 3489
Function : func_6
ARRDE : 599.9981585389522 N_evals : 100001
NelderMead : 660.1090769765912 N_evals : 100007
L_BFGS_B : 660.1094761355782 N_evals : 1239
DA : 617.891973563524 N_evals : 4560
L_BFGS : 660.1110109101181 N_evals : 2332
Scipy L_BFGS_B : 741.7758230737436 N_evals : 231
Scipy DA : 600.0012410725171 N_evals : 51065
Scipy NelderMead : 660.2298041610485 N_evals : 100000
Minuit Migrad : 620.1909999512667 N_evals : 4437
Function : func_7
ARRDE : 712.3592350593311 N_evals : 100001
NelderMead : 811.2712198668149 N_evals : 100011
L_BFGS_B : 811.2717986452728 N_evals : 420
DA : 831.7824207983163 N_evals : 583
L_BFGS : 811.2713307010445 N_evals : 3424
Scipy L_BFGS_B : 939.7171074438265 N_evals : 374
Scipy DA : 739.8875580991679 N_evals : 40428
Scipy NelderMead : 811.9138894437075 N_evals : 100000
Minuit Migrad : 769.6746272551546 N_evals : 4342
Function : func_8
ARRDE : 800.9921465807445 N_evals : 100001
NelderMead : 834.8207447222945 N_evals : 100000
L_BFGS_B : 828.8520156919776 N_evals : 588
DA : 808.9525207817801 N_evals : 2405
L_BFGS : 828.8516389067983 N_evals : 2563
Scipy L_BFGS_B : 946.6451016099851 N_evals : 319
Scipy DA : 821.8880244137362 N_evals : 36567
Scipy NelderMead : 946.6295325095214 N_evals : 100000
Minuit Migrad : 842.9933385801976 N_evals : 4027
Function : func_9
ARRDE : 899.9962206821946 N_evals : 100001
NelderMead : 1783.2200669084518 N_evals : 100000
L_BFGS_B : 1783.2517240756724 N_evals : 861
DA : 1681.728789299111 N_evals : 944
L_BFGS : 1783.221487674487 N_evals : 2710
Scipy L_BFGS_B : 4306.132759887263 N_evals : 352
Scipy DA : 941.4597539288375 N_evals : 92799
Scipy NelderMead : 1784.3114460218326 N_evals : 100000
Minuit Migrad : 1379.1576925870568 N_evals : 4083
Function : func_10
ARRDE : 1217.322206758701 N_evals : 100001
NelderMead : 3138.4899594185895 N_evals : 100001
L_BFGS_B : 3138.4967969260165 N_evals : 378
DA : 2755.320845842938 N_evals : 900
L_BFGS : 3138.4940663534953 N_evals : 1702
Scipy L_BFGS_B : 6138.31189446685 N_evals : 374
Scipy DA : 1460.601259870372 N_evals : 41044
Scipy NelderMead : 3361.073617719973 N_evals : 100000
Minuit Migrad : 2678.3940928019315 N_evals : 4747
Function : func_11
ARRDE : 1099.9959752000555 N_evals : 100001
NelderMead : 1115.5989470769807 N_evals : 100000
L_BFGS_B : 1120.4562414288932 N_evals : 1533
DA : 1104.7052168747261 N_evals : 5836
L_BFGS : 1131.6366243743014 N_evals : 5335
Scipy L_BFGS_B : 65027038.32013684 N_evals : 275
Scipy DA : 1107.0905790711165 N_evals : 92953
Scipy NelderMead : 2977.7584504690462 N_evals : 100000
Minuit Migrad : 1177.957695176597 N_evals : 4961
Function : func_12
ARRDE : 1199.9961585202961 N_evals : 100001
NelderMead : 2527.0966843376323 N_evals : 100007
L_BFGS_B : 1618.669335207003 N_evals : 5943
DA : 1863.1611221931175 N_evals : 3548
L_BFGS : 2128.0539807497858 N_evals : 5062
Scipy L_BFGS_B : 5721209775.931329 N_evals : 231
Scipy DA : 4129613.8591811727 N_evals : 100261
Scipy NelderMead : 528456.9873203 N_evals : 100000
Minuit Migrad : 3409.3908350176303 N_evals : 5112
Function : func_13
ARRDE : 1304.8335311370824 N_evals : 100001
NelderMead : 13298.841842021546 N_evals : 100009
L_BFGS_B : 2058.5476522151635 N_evals : 4137
DA : 1343.2405599800948 N_evals : 5013
L_BFGS : 1536.1759984039925 N_evals : 6700
Scipy L_BFGS_B : 2841535268.481386 N_evals : 231
Scipy DA : 7889.567563246274 N_evals : 54981
Scipy NelderMead : 10984.090296794753 N_evals : 100000
Minuit Migrad : 29429.01793560422 N_evals : 5501
Function : func_14
ARRDE : 1399.9958484329757 N_evals : 100001
NelderMead : 1496.6557335868727 N_evals : 100000
L_BFGS_B : 1538.5719107399675 N_evals : 1155
DA : 1438.9987828996884 N_evals : 5649
L_BFGS : 1489.7804735990062 N_evals : 3214
Scipy L_BFGS_B : 2215432960.485004 N_evals : 297
Scipy DA : 1441.0676217235773 N_evals : 52627
Scipy NelderMead : 8658.249617458845 N_evals : 100000
Minuit Migrad : 1690.0424195596693 N_evals : 4967
Function : func_15
ARRDE : 1500.076957580831 N_evals : 100001
NelderMead : 1732.516395127339 N_evals : 100008
L_BFGS_B : 2647.254277835282 N_evals : 1764
DA : 1573.4780161985539 N_evals : 5389
L_BFGS : 1628.3948911112475 N_evals : 5692
Scipy L_BFGS_B : 769547699.2502354 N_evals : 451
Scipy DA : 4044.4853088246923 N_evals : 71558
Scipy NelderMead : 23473.656795457955 N_evals : 100000
Minuit Migrad : 1715.570750144928 N_evals : 5225
Function : func_16
ARRDE : 1600.8768347783468 N_evals : 100001
NelderMead : 2421.2342180164273 N_evals : 100003
L_BFGS_B : 2483.7959524323087 N_evals : 1869
DA : 2273.6546220528803 N_evals : 3228
L_BFGS : 2294.890750605824 N_evals : 5167
Scipy L_BFGS_B : 3437.7603308533935 N_evals : 352
Scipy DA : 1855.4467018956123 N_evals : 45257
Scipy NelderMead : 2373.014307251852 N_evals : 100000
Minuit Migrad : 1942.4149070946773 N_evals : 5056
Function : func_17
ARRDE : 1701.425659504799 N_evals : 100001
NelderMead : 1953.0745364438342 N_evals : 100000
L_BFGS_B : 1802.1877777299076 N_evals : 2352
DA : 2002.8017179051371 N_evals : 4654
L_BFGS : 1872.8784165584 N_evals : 2185
Scipy L_BFGS_B : 3283.0074825670654 N_evals : 286
Scipy DA : 1704.3358102703255 N_evals : 65959
Scipy NelderMead : 1953.320173178456 N_evals : 100000
Minuit Migrad : 2005.4573572659792 N_evals : 4375
Function : func_18
ARRDE : 1800.0055646994047 N_evals : 100001
NelderMead : 19115.088788846548 N_evals : 100001
L_BFGS_B : 2149.459590037178 N_evals : 3066
DA : 1882.516992787019 N_evals : 3277
L_BFGS : 1926.2798348082267 N_evals : 3529
Scipy L_BFGS_B : 14468748298.756933 N_evals : 341
Scipy DA : 2345.667092997541 N_evals : 42551
Scipy NelderMead : 7617.494887251992 N_evals : 100000
Minuit Migrad : 6005.154903704323 N_evals : 6073
Function : func_19
ARRDE : 1900.0123570129115 N_evals : 100001
NelderMead : 2255.698683592621 N_evals : 100000
L_BFGS_B : 3352.676059756652 N_evals : 777
DA : 1944.1934742335357 N_evals : 3163
L_BFGS : 1912.483936662627 N_evals : 3718
Scipy L_BFGS_B : 12289126787.151608 N_evals : 231
Scipy DA : 11416.364597550299 N_evals : 67521
Scipy NelderMead : 462713.9150205552 N_evals : 100000
Minuit Migrad : 2041.605675737363 N_evals : 5247
Function : func_20
ARRDE : 2019.9928125368608 N_evals : 100001
NelderMead : 2584.4789599023 N_evals : 100007
L_BFGS_B : 2529.9227256585114 N_evals : 1092
DA : 2196.215351197279 N_evals : 10946
L_BFGS : 2526.302021293383 N_evals : 2122
Scipy L_BFGS_B : 3152.3467686951662 N_evals : 429
Scipy DA : 2016.1601775950624 N_evals : 68082
Scipy NelderMead : 3152.0690163216736 N_evals : 100000
Minuit Migrad : 2165.1323913063825 N_evals : 4339
Function : func_21
ARRDE : 2199.9904219933287 N_evals : 100001
NelderMead : 2384.6393060930814 N_evals : 100008
L_BFGS_B : 2458.304916749243 N_evals : 987
DA : 2366.686111431992 N_evals : 2340
L_BFGS : 2375.6732885609886 N_evals : 2479
Scipy L_BFGS_B : 2828.6126272848187 N_evals : 319
Scipy DA : 2208.750058282703 N_evals : 100272
Scipy NelderMead : 2828.5986525771564 N_evals : 100000
Minuit Migrad : 2359.2297411563604 N_evals : 4359
Function : func_22
ARRDE : 2299.9914252694584 N_evals : 100001
NelderMead : 2304.761146826583 N_evals : 100000
L_BFGS_B : 2303.480909896234 N_evals : 1953
DA : 2300.005007401488 N_evals : 2426
L_BFGS : 2300.8379241427087 N_evals : 4642
Scipy L_BFGS_B : 5302.500871483709 N_evals : 352
Scipy DA : 2301.1220047062307 N_evals : 58754
Scipy NelderMead : 4510.989198427269 N_evals : 100000
Minuit Migrad : 4205.064027787371 N_evals : 4895
Function : func_23
ARRDE : 2602.9982527482034 N_evals : 100001
NelderMead : 3303.59868678365 N_evals : 100009
L_BFGS_B : 3303.6076554185697 N_evals : 567
DA : 2617.036471864092 N_evals : 3336
L_BFGS : 3303.60269903206 N_evals : 4159
Scipy L_BFGS_B : 4335.929685261072 N_evals : 297
Scipy DA : 2615.949687891049 N_evals : 43992
Scipy NelderMead : 3317.8597853152846 N_evals : 100000
Minuit Migrad : 2771.36446420679 N_evals : 6256
Function : func_24
ARRDE : 2732.851345928635 N_evals : 100001
NelderMead : 2500.0083951996826 N_evals : 100000
L_BFGS_B : 2499.99902736411 N_evals : 1218
DA : 2770.246104820901 N_evals : 4205
L_BFGS : 2500.004335587265 N_evals : 4222
Scipy L_BFGS_B : 3392.2075640027415 N_evals : 451
Scipy DA : 2759.1615255953852 N_evals : 40318
Scipy NelderMead : 3392.1923121135032 N_evals : 100000
Minuit Migrad : 2816.5389525661103 N_evals : 4502
Function : func_25
ARRDE : 2897.7314471151903 N_evals : 100001
NelderMead : 2966.7655106166612 N_evals : 100000
L_BFGS_B : 2946.9278065232575 N_evals : 1155
DA : 2898.526075347443 N_evals : 2426
L_BFGS : 2946.6733795096497 N_evals : 4012
Scipy L_BFGS_B : 4820.812739924424 N_evals : 308
Scipy DA : 2944.6011297818072 N_evals : 52110
Scipy NelderMead : 4820.77303846736 N_evals : 100000
Minuit Migrad : 2951.5983324853664 N_evals : 4630
Function : func_26
ARRDE : 2899.9905128671785 N_evals : 100001
NelderMead : 4827.301186956572 N_evals : 100000
L_BFGS_B : 4988.041881573006 N_evals : 1344
DA : 2815.6621018529636 N_evals : 3705
L_BFGS : 4621.134887611896 N_evals : 4327
Scipy L_BFGS_B : 5733.921706959507 N_evals : 627
Scipy DA : 2900.0009744011804 N_evals : 49558
Scipy NelderMead : 5733.882212220061 N_evals : 100000
Minuit Migrad : 3951.1841416214024 N_evals : 5939
Function : func_27
ARRDE : 3088.994288430638 N_evals : 100001
NelderMead : 3414.318915321662 N_evals : 100008
L_BFGS_B : 3267.1365798713605 N_evals : 1092
DA : 3118.134113218537 N_evals : 6283
L_BFGS : 3199.99446674037 N_evals : 3424
Scipy L_BFGS_B : 5055.889160876941 N_evals : 231
Scipy DA : 3096.5708272906427 N_evals : 63528
Scipy NelderMead : 4106.450262737651 N_evals : 100000
Minuit Migrad : 3139.2677931942244 N_evals : 6530
Function : func_28
ARRDE : 3383.720870155003 N_evals : 100001
NelderMead : 3384.7652383268814 N_evals : 100000
L_BFGS_B : 3452.4841193287007 N_evals : 1386
DA : 3217.106705587505 N_evals : 4400
L_BFGS : 3290.9111925794828 N_evals : 4390
Scipy L_BFGS_B : 4517.3300205873675 N_evals : 231
Scipy DA : 3446.506747377298 N_evals : 55047
Scipy NelderMead : 4517.310115712177 N_evals : 100000
Minuit Migrad : 3445.0637221653924 N_evals : 4077
Function : func_29
ARRDE : 3131.963831753864 N_evals : 100001
NelderMead : 4268.120265900967 N_evals : 100001
L_BFGS_B : 3567.9345436828403 N_evals : 1701
DA : 3342.6656152659157 N_evals : 6674
L_BFGS : 3662.8706733208787 N_evals : 2752
Scipy L_BFGS_B : 48958.59053526347 N_evals : 231
Scipy DA : 3198.2062213878376 N_evals : 73945
Scipy NelderMead : 4180.7402939081085 N_evals : 100000
Minuit Migrad : 3469.918683346524 N_evals : 4364
Function : func_30
ARRDE : 3394.490706814552 N_evals : 100001
NelderMead : 6081.944472666086 N_evals : 100009
L_BFGS_B : 5346.753605629595 N_evals : 1260
DA : 8120592.912686143 N_evals : 4093
L_BFGS : 4066.079833635529 N_evals : 5608
Scipy L_BFGS_B : 506077482.66638035 N_evals : 231
Scipy DA : 418386.40197579376 N_evals : 100079
Scipy NelderMead : 4022.95330042262 N_evals : 100000
Minuit Migrad : 15131.011619027304 N_evals : 7985
Noise Level : 1e-8
[8]:
# Noise ratio for function evaluations (set to zero for noiseless optimization)
noise_ratio = 1e-8
# Using a thread pool to execute optimization tasks in parallel
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
futures = [] # List to store future objects representing scheduled tasks
# Run optimization tests multiple times (for averaging results)
for k in range(NRuns):
for j in func_numbers:
# Submit the optimization test function to the thread pool
futures.append(executor.submit(run_test_optimization, j, dimension, year, k, Nmaxeval))
# Wait for all submitted tasks to complete
concurrent.futures.wait(futures)
# Retrieve and process results (ensure all threads completed successfully)
for f in futures:
f.result()
Function : func_1
ARRDE : 99.99999682051816 N_evals : 100001
NelderMead : 99.99999843754777 N_evals : 4065
L_BFGS_B : 100.00041815995345 N_evals : 1302
DA : 100.00008630870653 N_evals : 1428
L_BFGS : 99.99999715095689 N_evals : 3466
Scipy L_BFGS_B : 22735236337.625095 N_evals : 506
Scipy DA : 4371.573100637038 N_evals : 38800
Scipy NelderMead : 11473.22829210595 N_evals : 100000
Minuit Migrad : 100.0000736095161 N_evals : 917
Function : func_2
ARRDE : 199.99999347087595 N_evals : 100001
NelderMead : 200.00253626080647 N_evals : 5038
L_BFGS_B : 200.0007083288631 N_evals : 3087
DA : 200.00169006701 N_evals : 4401
L_BFGS : 7.556705274954113e+17 N_evals : 1366
Scipy L_BFGS_B : 7.674004249061842e+17 N_evals : 858
Scipy DA : 200.00482406397177 N_evals : 69050
Scipy NelderMead : 277.7479377295691 N_evals : 10292
Minuit Migrad : 200.00084934701437 N_evals : 7552
Function : func_3
ARRDE : 299.999990336583 N_evals : 100001
NelderMead : 299.9999967788666 N_evals : 2764
L_BFGS_B : 300.0000117302614 N_evals : 1890
DA : 300.00004555611525 N_evals : 1281
L_BFGS : 299.9999935562243 N_evals : 3340
Scipy L_BFGS_B : 65761.83868410284 N_evals : 330
Scipy DA : 1517.4963544938214 N_evals : 100247
Scipy NelderMead : 299.999993006982 N_evals : 7820
Minuit Migrad : 309.19615500589197 N_evals : 2039
Function : func_4
ARRDE : 399.99998657618414 N_evals : 100001
NelderMead : 399.9999962769946 N_evals : 3604
L_BFGS_B : 400.00034722916735 N_evals : 1974
DA : 400.00001719566535 N_evals : 4022
L_BFGS : 400.0034548989989 N_evals : 7351
Scipy L_BFGS_B : 5901.6565338904575 N_evals : 231
Scipy DA : 407.4490612369386 N_evals : 100045
Scipy NelderMead : 408.31489709161514 N_evals : 6270
Minuit Migrad : 400.00019191963116 N_evals : 1861
Function : func_5
ARRDE : 502.98486207539275 N_evals : 100001
NelderMead : 621.3833770585469 N_evals : 1555
L_BFGS_B : 632.3276468797418 N_evals : 441
DA : 516.9142567551402 N_evals : 1359
L_BFGS : 621.3833692310262 N_evals : 2752
Scipy L_BFGS_B : 726.7145659542147 N_evals : 231
Scipy DA : 515.91937096149 N_evals : 61064
Scipy NelderMead : 624.3681229268359 N_evals : 5110
Minuit Migrad : 617.4030816575312 N_evals : 515
Function : func_6
ARRDE : 599.9999931352145 N_evals : 100001
NelderMead : 660.1105048701849 N_evals : 1354
L_BFGS_B : 660.1105086484275 N_evals : 987
DA : 614.6532481716322 N_evals : 8995
L_BFGS : 660.1105076834289 N_evals : 2353
Scipy L_BFGS_B : 724.9616095528714 N_evals : 275
Scipy DA : 600.0003094673912 N_evals : 63979
Scipy NelderMead : 659.180062972738 N_evals : 3716
Minuit Migrad : 659.0966350907182 N_evals : 686
Function : func_7
ARRDE : 712.967509094043 N_evals : 100001
NelderMead : 811.2731373151506 N_evals : 1132
L_BFGS_B : 811.273126176719 N_evals : 1092
DA : 831.7839474115077 N_evals : 583
L_BFGS : 778.2114931297331 N_evals : 2836
Scipy L_BFGS_B : 939.7163269289897 N_evals : 308
Scipy DA : 725.5282776840512 N_evals : 40538
Scipy NelderMead : 811.2731298289698 N_evals : 3344
Minuit Migrad : 792.9573149744955 N_evals : 540
Function : func_8
ARRDE : 802.9848524138264 N_evals : 100001
NelderMead : 831.8385992936483 N_evals : 1263
L_BFGS_B : 831.8385930232314 N_evals : 756
DA : 808.9546106612185 N_evals : 2048
L_BFGS : 828.8537187201179 N_evals : 2395
Scipy L_BFGS_B : 946.6454894692499 N_evals : 418
Scipy DA : 814.9243849641477 N_evals : 43145
Scipy NelderMead : 834.823470296836 N_evals : 4798
Minuit Migrad : 831.8386571551998 N_evals : 631
Function : func_9
ARRDE : 899.999962461678 N_evals : 100001
NelderMead : 1783.2260980188414 N_evals : 1128
L_BFGS_B : 1783.2257384607 N_evals : 987
DA : 1681.7311070753085 N_evals : 776
L_BFGS : 1783.2257338946386 N_evals : 2290
Scipy L_BFGS_B : 4306.1325150049215 N_evals : 231
Scipy DA : 908.9710009460931 N_evals : 74902
Scipy NelderMead : 1778.8623262459912 N_evals : 4430
Minuit Migrad : 1772.4757658836538 N_evals : 683
Function : func_10
ARRDE : 1118.875480592281 N_evals : 100001
NelderMead : 3138.5006338599173 N_evals : 1550
L_BFGS_B : 3138.5006584640328 N_evals : 609
DA : 2755.326876469328 N_evals : 1467
L_BFGS : 3500.980929044613 N_evals : 6280
Scipy L_BFGS_B : 3574.749732862765 N_evals : 1210
Scipy DA : 1694.4430504303991 N_evals : 70447
Scipy NelderMead : 3138.949123683695 N_evals : 5345
Minuit Migrad : 3534.6344577973473 N_evals : 743
Function : func_11
ARRDE : 1099.99995440957 N_evals : 100001
NelderMead : 1114.9243362621094 N_evals : 4489
L_BFGS_B : 1156.712197093623 N_evals : 2646
DA : 1110.9445813453215 N_evals : 3037
L_BFGS : 1140.7971752346727 N_evals : 9157
Scipy L_BFGS_B : 8603.964913940532 N_evals : 1034
Scipy DA : 1117.9340811729865 N_evals : 100027
Scipy NelderMead : 1127.275334107032 N_evals : 5894
Minuit Migrad : 1123.878907063663 N_evals : 1888
Function : func_12
ARRDE : 1200.6243917456065 N_evals : 100001
NelderMead : 5356.697168718574 N_evals : 100004
L_BFGS_B : 2154.077076835465 N_evals : 2394
DA : 2103.242637907266 N_evals : 3968
L_BFGS : 1936.2389711030673 N_evals : 9955
Scipy L_BFGS_B : 5721203574.495394 N_evals : 275
Scipy DA : 18642.868712121544 N_evals : 100319
Scipy NelderMead : 4462.9680900972535 N_evals : 4522
Minuit Migrad : 1318.6474107879565 N_evals : 7408
Function : func_13
ARRDE : 1304.8370995054856 N_evals : 100001
NelderMead : 2141.5616768535133 N_evals : 4742
L_BFGS_B : 1710.653074939431 N_evals : 3591
DA : 1334.0928888649662 N_evals : 15641
L_BFGS : 1509.1155716018427 N_evals : 10900
Scipy L_BFGS_B : 2507251905.9169044 N_evals : 264
Scipy DA : 1967.9033181821537 N_evals : 89081
Scipy NelderMead : 12159.73000220966 N_evals : 100000
Minuit Migrad : 1309.94959841737 N_evals : 7926
Function : func_14
ARRDE : 1400.8004287093902 N_evals : 100001
NelderMead : 1500.6149249503358 N_evals : 2215
L_BFGS_B : 1862.8875609104932 N_evals : 5061
DA : 1462.5453932416897 N_evals : 12831
L_BFGS : 1505.320708991013 N_evals : 4978
Scipy L_BFGS_B : 2215435608.1341186 N_evals : 231
Scipy DA : 1454.6182089558624 N_evals : 100029
Scipy NelderMead : 8412.568765511876 N_evals : 1557
Minuit Migrad : 2041.0260640806912 N_evals : 6215
Function : func_15
ARRDE : 1500.1191570979738 N_evals : 100001
NelderMead : 2199.9881025245763 N_evals : 4032
L_BFGS_B : 1601.3519476309625 N_evals : 1806
DA : 1526.7571444795428 N_evals : 8938
L_BFGS : 1528.1147155198782 N_evals : 7225
Scipy L_BFGS_B : 769548257.2016616 N_evals : 231
Scipy DA : 1868.7376476977329 N_evals : 81403
Scipy NelderMead : 16928.622813066097 N_evals : 100000
Minuit Migrad : 1560.8944616385745 N_evals : 6090
Function : func_16
ARRDE : 1600.3859027750213 N_evals : 100001
NelderMead : 2422.427125772132 N_evals : 2114
L_BFGS_B : 2522.9166465365183 N_evals : 1176
DA : 2238.6700976287384 N_evals : 4718
L_BFGS : 2310.144619835 N_evals : 5167
Scipy L_BFGS_B : 3125.815167114313 N_evals : 407
Scipy DA : 1851.1923994477756 N_evals : 100201
Scipy NelderMead : 2298.9916414434506 N_evals : 5169
Minuit Migrad : 1975.6040483990896 N_evals : 5178
Function : func_17
ARRDE : 1701.014646952241 N_evals : 100001
NelderMead : 2179.29877832251 N_evals : 2262
L_BFGS_B : 2095.3373823592665 N_evals : 1323
DA : 1762.5919029112026 N_evals : 12606
L_BFGS : 2208.883989810845 N_evals : 2815
Scipy L_BFGS_B : 3119.078644000056 N_evals : 1221
Scipy DA : 1717.9305753457681 N_evals : 70876
Scipy NelderMead : 1875.6701911886357 N_evals : 4559
Minuit Migrad : 1945.33618138074 N_evals : 570
Function : func_18
ARRDE : 1800.0029822197948 N_evals : 100001
NelderMead : 1855.4478304994834 N_evals : 4949
L_BFGS_B : 1991.7285311630023 N_evals : 2646
DA : 1822.275306519144 N_evals : 13125
L_BFGS : 1864.2817295341197 N_evals : 13840
Scipy L_BFGS_B : 14468752843.85394 N_evals : 231
Scipy DA : 3280.325247781108 N_evals : 46060
Scipy NelderMead : 2004.8459754908129 N_evals : 4642
Minuit Migrad : 1840.7459722822266 N_evals : 6563
Function : func_19
ARRDE : 1900.0193657965597 N_evals : 100001
NelderMead : 2082.1939395514937 N_evals : 1741
L_BFGS_B : 1959.8556438985702 N_evals : 924
DA : 2111.3176412022854 N_evals : 8191
L_BFGS : 1907.0711448667262 N_evals : 3655
Scipy L_BFGS_B : 12289136052.26989 N_evals : 231
Scipy DA : 5360.426363797366 N_evals : 67477
Scipy NelderMead : 3752.5912371503873 N_evals : 2573
Minuit Migrad : 1965.0336554452656 N_evals : 8696
Function : func_20
ARRDE : 2001.3070796525 N_evals : 100001
NelderMead : 2584.4749175644724 N_evals : 1667
L_BFGS_B : 2443.006042618962 N_evals : 1176
DA : 2070.3400439805896 N_evals : 9542
L_BFGS : 2537.879140599287 N_evals : 4369
Scipy L_BFGS_B : 3146.398592222173 N_evals : 341
Scipy DA : 2017.1488164175817 N_evals : 68610
Scipy NelderMead : 2885.343329439346 N_evals : 1171
Minuit Migrad : 2197.3180992894427 N_evals : 3034
Function : func_21
ARRDE : 2199.999966179773 N_evals : 100001
NelderMead : 2384.620490044661 N_evals : 1943
L_BFGS_B : 2383.2531437439056 N_evals : 630
DA : 2366.6919186499135 N_evals : 30578
L_BFGS : 2413.816683195073 N_evals : 1765
Scipy L_BFGS_B : 2505.0129212435045 N_evals : 583
Scipy DA : 2203.8717999433143 N_evals : 100053
Scipy NelderMead : 2382.301031539968 N_evals : 5537
Minuit Migrad : 2451.828633032667 N_evals : 905
Function : func_22
ARRDE : 2247.4162412734927 N_evals : 100001
NelderMead : 2304.936428886406 N_evals : 2506
L_BFGS_B : 2309.7861513507205 N_evals : 1995
DA : 2300.289013674184 N_evals : 3035
L_BFGS : 4707.251056387532 N_evals : 1408
Scipy L_BFGS_B : 4736.978713344289 N_evals : 495
Scipy DA : 2301.3632386960803 N_evals : 60822
Scipy NelderMead : 4506.392753755374 N_evals : 100000
Minuit Migrad : 2316.6450367227067 N_evals : 958
Function : func_23
ARRDE : 2599.999946514945 N_evals : 100001
NelderMead : 3303.6106681072783 N_evals : 1507
L_BFGS_B : 3303.6106460043393 N_evals : 693
DA : 2666.130833617436 N_evals : 2886
L_BFGS : 3303.610685612177 N_evals : 1807
Scipy L_BFGS_B : 4183.822552009192 N_evals : 1023
Scipy DA : 2638.946832327551 N_evals : 87167
Scipy NelderMead : 3303.6106296000826 N_evals : 4976
Minuit Migrad : 3303.6107192116856 N_evals : 538
Function : func_24
ARRDE : 2499.999955327834 N_evals : 100001
NelderMead : 2500.00009313355 N_evals : 2458
L_BFGS_B : 2500.0000017328143 N_evals : 1785
DA : 2756.1131391353056 N_evals : 3642
L_BFGS : 2500.0001396769726 N_evals : 4327
Scipy L_BFGS_B : 3392.208852856576 N_evals : 396
Scipy DA : 2776.9730559732366 N_evals : 45169
Scipy NelderMead : 2521.682486581316 N_evals : 6164
Minuit Migrad : 2500.000089135175 N_evals : 4435
Function : func_25
ARRDE : 2600.032085317161 N_evals : 100001
NelderMead : 2949.983843641506 N_evals : 2008
L_BFGS_B : 2945.4430696864188 N_evals : 1197
DA : 2898.7192650006145 N_evals : 2552
L_BFGS : 2945.7300559608702 N_evals : 4138
Scipy L_BFGS_B : 4820.812380336347 N_evals : 231
Scipy DA : 2947.9244401161136 N_evals : 49459
Scipy NelderMead : 3015.5804756696602 N_evals : 7478
Minuit Migrad : 2943.7876919898467 N_evals : 5458
Function : func_26
ARRDE : 2799.999962065995 N_evals : 100001
NelderMead : 4780.43252942409 N_evals : 100003
L_BFGS_B : 4988.055740755852 N_evals : 1218
DA : 2799.9999318406963 N_evals : 4396
L_BFGS : 4616.506058486465 N_evals : 2962
Scipy L_BFGS_B : 5733.919010074896 N_evals : 275
Scipy DA : 2800.004093735158 N_evals : 57566
Scipy NelderMead : 4670.400062773969 N_evals : 6160
Minuit Migrad : 5076.407988964832 N_evals : 3473
Function : func_27
ARRDE : 3089.308016581297 N_evals : 100001
NelderMead : 3382.3552136286185 N_evals : 2012
L_BFGS_B : 3237.274772929166 N_evals : 1176
DA : 3151.604094093155 N_evals : 3429
L_BFGS : 3370.1603964345977 N_evals : 3088
Scipy L_BFGS_B : 5055.892653576363 N_evals : 231
Scipy DA : 3101.0601371144485 N_evals : 100116
Scipy NelderMead : 3551.285536801299 N_evals : 5447
Minuit Migrad : 3181.9186640567855 N_evals : 5765
Function : func_28
ARRDE : 3099.999915092622 N_evals : 100001
NelderMead : 3383.74773291804 N_evals : 3653
L_BFGS_B : 3400.599944221076 N_evals : 714
DA : 3437.9452062531645 N_evals : 3644
L_BFGS : 3287.767824016206 N_evals : 3277
Scipy L_BFGS_B : 4517.33532528125 N_evals : 231
Scipy DA : 3163.350679873215 N_evals : 100059
Scipy NelderMead : 3383.769068829367 N_evals : 6726
Minuit Migrad : 3444.1318199957545 N_evals : 1095
Function : func_29
ARRDE : 3128.873147791686 N_evals : 100001
NelderMead : 4276.510291063197 N_evals : 3017
L_BFGS_B : 3533.792418176438 N_evals : 2814
DA : 3758.4560145355645 N_evals : 1970
L_BFGS : 3576.8222993823815 N_evals : 3928
Scipy L_BFGS_B : 37657.24322680237 N_evals : 220
Scipy DA : 3224.3060051820066 N_evals : 80171
Scipy NelderMead : 5125.96083372461 N_evals : 2946
Minuit Migrad : 3686.8222483165855 N_evals : 6519
Function : func_30
ARRDE : 3394.500690106512 N_evals : 100001
NelderMead : 3983.191850185892 N_evals : 6657
L_BFGS_B : 3650.935650113564 N_evals : 12600
DA : 3735.2921743199036 N_evals : 3989
L_BFGS : 4115.507939629825 N_evals : 4306
Scipy L_BFGS_B : 506077321.4562519 N_evals : 242
Scipy DA : 57615.90965218861 N_evals : 100019
Scipy NelderMead : 3897.2602978961886 N_evals : 13799
Minuit Migrad : 3894.9828008310737 N_evals : 19707
Noise Level : 1e-10
[9]:
# Noise ratio for function evaluations (set to zero for noiseless optimization)
noise_ratio = 1e-10
# Using a thread pool to execute optimization tasks in parallel
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
futures = [] # List to store future objects representing scheduled tasks
# Run optimization tests multiple times (for averaging results)
for k in range(NRuns):
for j in func_numbers:
# Submit the optimization test function to the thread pool
futures.append(executor.submit(run_test_optimization, j, dimension, year, k, Nmaxeval))
# Wait for all submitted tasks to complete
concurrent.futures.wait(futures)
# Retrieve and process results (ensure all threads completed successfully)
for f in futures:
f.result()
Function : func_1
ARRDE : 99.99999997905743 N_evals : 100001
NelderMead : 100.00000003400216 N_evals : 4045
L_BFGS_B : 100.0009624483876 N_evals : 1050
DA : 100.00001379336425 N_evals : 1281
L_BFGS : 99.99999999272549 N_evals : 778
Scipy L_BFGS_B : 29897968248.72122 N_evals : 275
Scipy DA : 100.13537775392062 N_evals : 21233
Scipy NelderMead : 2712.375402366421 N_evals : 6914
Minuit Migrad : 100.00000417019726 N_evals : 814
Function : func_2
ARRDE : 199.99999993565933 N_evals : 100001
NelderMead : 200.0000010326318 N_evals : 6034
L_BFGS_B : 200.00363128383273 N_evals : 3129
DA : 200.00011677720008 N_evals : 5304
L_BFGS : 7.556706384292428e+17 N_evals : 1366
Scipy L_BFGS_B : 280.9979295515162 N_evals : 1188
Scipy DA : 200.00019632056274 N_evals : 41055
Scipy NelderMead : 199.99999999072733 N_evals : 21375
Minuit Migrad : 200.00089811538908 N_evals : 6630
Function : func_3
ARRDE : 299.9999999213533 N_evals : 100001
NelderMead : 299.99999996584063 N_evals : 2896
L_BFGS_B : 300.00000001076796 N_evals : 1239
DA : 300.00000051117325 N_evals : 1239
L_BFGS : 299.99999998086923 N_evals : 1429
Scipy L_BFGS_B : 19858.03799099809 N_evals : 440
Scipy DA : 300.0001108522928 N_evals : 50889
Scipy NelderMead : 299.99999994684214 N_evals : 7118
Minuit Migrad : 310.1777139138017 N_evals : 2067
Function : func_4
ARRDE : 399.9999998658786 N_evals : 100001
NelderMead : 399.99999999279345 N_evals : 3815
L_BFGS_B : 399.9999999433373 N_evals : 1932
DA : 400.0000006620398 N_evals : 3120
L_BFGS : 400.00009030576746 N_evals : 3865
Scipy L_BFGS_B : 668.0884246137065 N_evals : 308
Scipy DA : 403.7859473281134 N_evals : 100015
Scipy NelderMead : 399.99999994842284 N_evals : 8608
Minuit Migrad : 400.00005720577417 N_evals : 1252
Function : func_5
ARRDE : 503.9798360871961 N_evals : 100001
NelderMead : 621.3833907395931 N_evals : 1651
L_BFGS_B : 632.3276596207262 N_evals : 525
DA : 516.914268548041 N_evals : 1023
L_BFGS : 621.383390724091 N_evals : 505
Scipy L_BFGS_B : 709.1164235457267 N_evals : 352
Scipy DA : 511.9395263940738 N_evals : 37436
Scipy NelderMead : 624.3681396072418 N_evals : 5039
Minuit Migrad : 625.3626769470601 N_evals : 372
Function : func_6
ARRDE : 600.000000371674 N_evals : 100001
NelderMead : 660.1105186740317 N_evals : 1454
L_BFGS_B : 660.1105188231505 N_evals : 1008
DA : 616.9817475587724 N_evals : 5826
L_BFGS : 660.1105188980666 N_evals : 1177
Scipy L_BFGS_B : 698.0341262119649 N_evals : 649
Scipy DA : 600.0000997158321 N_evals : 45741
Scipy NelderMead : 660.1105185503545 N_evals : 4797
Minuit Migrad : 659.0966218201778 N_evals : 504
Function : func_7
ARRDE : 712.042563268756 N_evals : 100001
NelderMead : 811.2731446455233 N_evals : 1254
L_BFGS_B : 811.2731445679221 N_evals : 399
DA : 831.7839559817265 N_evals : 583
L_BFGS : 778.2115142737575 N_evals : 442
Scipy L_BFGS_B : 878.0067172260142 N_evals : 231
Scipy DA : 734.1892278889011 N_evals : 33212
Scipy NelderMead : 811.2731446930785 N_evals : 3185
Minuit Migrad : 805.9804038908035 N_evals : 498
Function : func_8
ARRDE : 801.9899178905 N_evals : 100001
NelderMead : 831.8386141313889 N_evals : 1363
L_BFGS_B : 831.8386140076935 N_evals : 546
DA : 808.9546263998956 N_evals : 1586
L_BFGS : 828.8537419710136 N_evals : 484
Scipy L_BFGS_B : 920.006513574195 N_evals : 286
Scipy DA : 811.9395320053095 N_evals : 36688
Scipy NelderMead : 831.8386140305837 N_evals : 5122
Minuit Migrad : 831.8386159661018 N_evals : 483
Function : func_9
ARRDE : 899.9999997729188 N_evals : 100001
NelderMead : 1783.2257716256397 N_evals : 1394
L_BFGS_B : 1783.225770873628 N_evals : 1050
DA : 1681.731076062514 N_evals : 923
L_BFGS : 1783.2257708608636 N_evals : 1219
Scipy L_BFGS_B : 1785.2615421331277 N_evals : 781
Scipy DA : 900.1053556380818 N_evals : 74209
Scipy NelderMead : 1778.8623675719282 N_evals : 4335
Minuit Migrad : 1772.4759529571918 N_evals : 454
Function : func_10
ARRDE : 1125.2682557088067 N_evals : 100001
NelderMead : 3138.500725681896 N_evals : 1510
L_BFGS_B : 3138.5007250833514 N_evals : 399
DA : 2755.3269198472794 N_evals : 921
L_BFGS : 3501.7289056007967 N_evals : 1765
Scipy L_BFGS_B : 2787.910188243063 N_evals : 715
Scipy DA : 1913.8577215425562 N_evals : 56411
Scipy NelderMead : 3039.7075119200554 N_evals : 5117
Minuit Migrad : 3534.634500875155 N_evals : 399
Function : func_11
ARRDE : 1099.9999996138115 N_evals : 100001
NelderMead : 1129.8486351117183 N_evals : 3736
L_BFGS_B : 1169.6460270577722 N_evals : 2310
DA : 1110.9445313442993 N_evals : 2911
L_BFGS : 1129.8485160696594 N_evals : 2332
Scipy L_BFGS_B : 1336.7837634569573 N_evals : 880
Scipy DA : 1109.6920077788989 N_evals : 100072
Scipy NelderMead : 1136.186382591362 N_evals : 6943
Minuit Migrad : 1153.4488903991087 N_evals : 1684
Function : func_12
ARRDE : 1199.9999998878038 N_evals : 100001
NelderMead : 2611.111505508244 N_evals : 5057
L_BFGS_B : 1812.3544600884197 N_evals : 5985
DA : 1726.3730028082505 N_evals : 2436
L_BFGS : 1758.5646513088457 N_evals : 8968
Scipy L_BFGS_B : 4268.951717305508 N_evals : 1793
Scipy DA : 1555.7568854716865 N_evals : 51934
Scipy NelderMead : 11728.878104631654 N_evals : 4357
Minuit Migrad : 2218.736513928364 N_evals : 3365
Function : func_13
ARRDE : 1304.8371366199813 N_evals : 100001
NelderMead : 2236.4844073598533 N_evals : 8689
L_BFGS_B : 1516.8693637459319 N_evals : 9996
DA : 1360.3290515936237 N_evals : 14569
L_BFGS : 1500.669599170696 N_evals : 9010
Scipy L_BFGS_B : 8189.850416016392 N_evals : 572
Scipy DA : 1323.189619795982 N_evals : 57027
Scipy NelderMead : 15206.401402697875 N_evals : 1741
Minuit Migrad : 1328.8537551610175 N_evals : 4644
Function : func_14
ARRDE : 1399.9999996428405 N_evals : 100001
NelderMead : 1494.9115040380088 N_evals : 4289
L_BFGS_B : 1458.814582584569 N_evals : 5544
DA : 1450.7101281497141 N_evals : 8347
L_BFGS : 1443.1137155238323 N_evals : 2542
Scipy L_BFGS_B : 2995.1614663307387 N_evals : 407
Scipy DA : 1412.2583940490247 N_evals : 53067
Scipy NelderMead : 1479.0048923378247 N_evals : 3122
Minuit Migrad : 1651.7001840062628 N_evals : 4961
Function : func_15
ARRDE : 1500.474815633998 N_evals : 100001
NelderMead : 15039.717150466147 N_evals : 2235
L_BFGS_B : 1658.1350880919306 N_evals : 10962
DA : 1528.019246092234 N_evals : 4237
L_BFGS : 1527.9315364946397 N_evals : 3487
Scipy L_BFGS_B : 1737.4709397042761 N_evals : 528
Scipy DA : 1503.354060867711 N_evals : 85924
Scipy NelderMead : 1587.8476295273717 N_evals : 6856
Minuit Migrad : 1516.9178324900286 N_evals : 3068
Function : func_16
ARRDE : 1600.7303222740682 N_evals : 100001
NelderMead : 2420.872197391894 N_evals : 2365
L_BFGS_B : 2476.273766522429 N_evals : 1428
DA : 1832.1180870874366 N_evals : 5251
L_BFGS : 2319.7516977458868 N_evals : 6133
Scipy L_BFGS_B : 2220.0061537793313 N_evals : 517
Scipy DA : 1600.9225566803525 N_evals : 100092
Scipy NelderMead : 2300.902044948217 N_evals : 4976
Minuit Migrad : 1960.1841942586007 N_evals : 3288
Function : func_17
ARRDE : 1701.1193332298621 N_evals : 100001
NelderMead : 2168.7071205390903 N_evals : 4060
L_BFGS_B : 2387.5014494943503 N_evals : 1659
DA : 1747.3483639370036 N_evals : 13360
L_BFGS : 1861.2399143739788 N_evals : 4558
Scipy L_BFGS_B : 2103.0299408802402 N_evals : 330
Scipy DA : 1826.768029395898 N_evals : 60327
Scipy NelderMead : 1956.769892577782 N_evals : 3807
Minuit Migrad : 1942.8894143160214 N_evals : 1228
Function : func_18
ARRDE : 1800.004292679971 N_evals : 100001
NelderMead : 1847.8736300306157 N_evals : 4236
L_BFGS_B : 2113.9872607464945 N_evals : 8673
DA : 1837.8341687039156 N_evals : 7267
L_BFGS : 1858.7760593478386 N_evals : 17515
Scipy L_BFGS_B : 2243.3871825625165 N_evals : 836
Scipy DA : 1856.8560459134587 N_evals : 39845
Scipy NelderMead : 1901.8038351232253 N_evals : 6264
Minuit Migrad : 1822.0122759029994 N_evals : 6961
Function : func_19
ARRDE : 1900.0194312610824 N_evals : 100001
NelderMead : 2053.821007369393 N_evals : 1724
L_BFGS_B : 2417.42187004048 N_evals : 2058
DA : 1907.9144925205946 N_evals : 16829
L_BFGS : 1908.7549517365435 N_evals : 4852
Scipy L_BFGS_B : 1935.7137518049362 N_evals : 1023
Scipy DA : 1902.0328663331313 N_evals : 43970
Scipy NelderMead : 1938.6994692947494 N_evals : 2753
Minuit Migrad : 2168.899940798828 N_evals : 3241
Function : func_20
ARRDE : 1999.9999996007014 N_evals : 100001
NelderMead : 2584.474943854936 N_evals : 1904
L_BFGS_B : 2564.7882148408285 N_evals : 1596
DA : 2070.6119267139443 N_evals : 18401
L_BFGS : 2441.6914534373072 N_evals : 3298
Scipy L_BFGS_B : 2545.95490676824 N_evals : 407
Scipy DA : 2017.7178543130467 N_evals : 69501
Scipy NelderMead : 2885.343594599009 N_evals : 1145
Minuit Migrad : 2590.591206600132 N_evals : 446
Function : func_21
ARRDE : 2199.999999830778 N_evals : 100001
NelderMead : 2384.6205292361633 N_evals : 2456
L_BFGS_B : 2401.4007962149367 N_evals : 651
DA : 2366.6920061999313 N_evals : 2884
L_BFGS : 2413.816735052941 N_evals : 589
Scipy L_BFGS_B : 2417.537422208354 N_evals : 759
Scipy DA : 2316.07573885705 N_evals : 38580
Scipy NelderMead : 2399.218873215332 N_evals : 5725
Minuit Migrad : 2464.8566597013073 N_evals : 461
Function : func_22
ARRDE : 2217.5208412282195 N_evals : 100001
NelderMead : 2304.9364330297344 N_evals : 2621
L_BFGS_B : 2300.400568883661 N_evals : 1764
DA : 2304.9486487804684 N_evals : 3286
L_BFGS : 2307.293065323737 N_evals : 2227
Scipy L_BFGS_B : 4376.629758768608 N_evals : 418
Scipy DA : 2305.0608614898865 N_evals : 56323
Scipy NelderMead : 2315.857957683809 N_evals : 6896
Minuit Migrad : 2325.4777008112023 N_evals : 853
Function : func_23
ARRDE : 2602.5757456994925 N_evals : 100001
NelderMead : 3303.6106937474556 N_evals : 1635
L_BFGS_B : 3303.610693721895 N_evals : 546
DA : 2638.252522043448 N_evals : 4238
L_BFGS : 3303.6106925487284 N_evals : 1366
Scipy L_BFGS_B : 2865.2700449728895 N_evals : 484
Scipy DA : 2622.832788576034 N_evals : 66663
Scipy NelderMead : 3303.6106933004244 N_evals : 5081
Minuit Migrad : 3303.610803724456 N_evals : 466
Function : func_24
ARRDE : 2500.000000206955 N_evals : 100001
NelderMead : 2500.000173755127 N_evals : 2434
L_BFGS_B : 2500.000000864877 N_evals : 2058
DA : 2756.1132142325937 N_evals : 3369
L_BFGS : 2500.000005795864 N_evals : 1723
Scipy L_BFGS_B : 3392.208830848436 N_evals : 220
Scipy DA : 2762.981079583888 N_evals : 39163
Scipy NelderMead : 2594.1917468915917 N_evals : 6981
Minuit Migrad : 2500.0000005720176 N_evals : 2367
Function : func_25
ARRDE : 2897.742868567268 N_evals : 100001
NelderMead : 2949.983784956831 N_evals : 2529
L_BFGS_B : 2946.8612958642902 N_evals : 1113
DA : 2898.567081478314 N_evals : 2865
L_BFGS : 2946.5116704355014 N_evals : 1618
Scipy L_BFGS_B : 4820.812335079147 N_evals : 231
Scipy DA : 2600.7485541715273 N_evals : 35038
Scipy NelderMead : 2983.6997824071595 N_evals : 8194
Minuit Migrad : 2946.2282070121646 N_evals : 1601
Function : func_26
ARRDE : 2599.999999779497 N_evals : 100001
NelderMead : 4780.43259028747 N_evals : 2349
L_BFGS_B : 4988.055831546297 N_evals : 1071
DA : 2815.66789291437 N_evals : 2154
L_BFGS : 4620.754650409745 N_evals : 1744
Scipy L_BFGS_B : 4989.487145247573 N_evals : 649
Scipy DA : 2900.0002887112537 N_evals : 48700
Scipy NelderMead : 4449.721572281183 N_evals : 7262
Minuit Migrad : 5076.137411142922 N_evals : 675
Function : func_27
ARRDE : 3089.5179894387848 N_evals : 100001
NelderMead : 3382.3552311541403 N_evals : 2163
L_BFGS_B : 3275.6071288783937 N_evals : 3024
DA : 3176.9004482832374 N_evals : 8706
L_BFGS : 3343.567146222038 N_evals : 1051
Scipy L_BFGS_B : 4959.259195371837 N_evals : 275
Scipy DA : 3098.5623709934653 N_evals : 49503
Scipy NelderMead : 3507.6979463969624 N_evals : 6676
Minuit Migrad : 3353.1642679992924 N_evals : 732
Function : func_28
ARRDE : 3100.0000002580587 N_evals : 100001
NelderMead : 3383.782873309628 N_evals : 3340
L_BFGS_B : 3383.829791107919 N_evals : 3276
DA : 3421.8816720786735 N_evals : 4737
L_BFGS : 3287.354574569687 N_evals : 2500
Scipy L_BFGS_B : 4517.335286381725 N_evals : 231
Scipy DA : 3383.7459141658 N_evals : 68621
Scipy NelderMead : 3383.754830147831 N_evals : 7191
Minuit Migrad : 3383.7340587644594 N_evals : 1000
Function : func_29
ARRDE : 3130.150841267856 N_evals : 100001
NelderMead : 4066.4735956667337 N_evals : 5805
L_BFGS_B : 4103.663885765831 N_evals : 3024
DA : 3305.8124133470437 N_evals : 4426
L_BFGS : 3434.9355013386185 N_evals : 5965
Scipy L_BFGS_B : 4079.624646001649 N_evals : 671
Scipy DA : 3146.206617853803 N_evals : 49019
Scipy NelderMead : 5146.984082985418 N_evals : 2899
Minuit Migrad : 3362.8606432993515 N_evals : 7535
Function : func_30
ARRDE : 3394.5007722243595 N_evals : 100001
NelderMead : 4016.888676868196 N_evals : 4224
L_BFGS_B : 3950.683095937818 N_evals : 6363
DA : 3494.5833886014075 N_evals : 3171
L_BFGS : 4182.527872702481 N_evals : 4978
Scipy L_BFGS_B : 8812.622123372295 N_evals : 1276
Scipy DA : 6127.556623818476 N_evals : 66003
Scipy NelderMead : 4331.26199848144 N_evals : 8992
Minuit Migrad : 3561.6881749758477 N_evals : 11885
We can that L-BFGS-B are generally more robust than similar algorithms implemented by Scipy and Minuit library.