{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import time\n", "from scipy.optimize import differential_evolution, minimize, dual_annealing\n", "import matplotlib.pyplot as plt\n", "import concurrent.futures\n", "import threading, multiprocessing\n", "\n", "import sys \n", "sys.path.append(\"../\") \n", "import minionpy as mpy\n", "import minionpy.test_functions as mpytest\n", "import time\n", "import iminuit" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Minimizing CEC benchmark problems with noise\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Global variables\n", "N = 0 # Global counter for function evaluations\n", "noise_ratio = 1e-4 # Noise level for the objective function\n", "N_dict = {} # Stores the number of function evaluations per algorithm\n", "algos = [\"ARRDE\", \"NelderMead\", \"L_BFGS_B\", \"DA\"] #here, DA is dual annealing, ABC=artificial bee colony\n", "\n", "def test_optimization_noise(func_number, year, bounds, dimension, func_name, Nmaxeval, seed):\n", " \"\"\"\n", " Runs multiple optimization algorithms on the given function and stores results.\n", " \n", " Parameters:\n", " - func: Objective function to be minimized\n", " - bounds: Tuple representing the search space bounds\n", " - dimension: Number of dimensions for the problem\n", " - func_name: Name of the function (used for logging results)\n", " - Nmaxeval: Maximum number of function evaluations\n", " - seed: Random seed for reproducibility\n", " \"\"\"\n", " global results, N, N_dict, noise_ratio, results_lock, algos\n", "\n", " if year == 2014:\n", " cec_func = mpy.CEC2014Functions(function_number=func_number, dimension=dimension)\n", " elif year == 2017:\n", " cec_func = mpy.CEC2017Functions(function_number=func_number, dimension=dimension)\n", " elif year == 2019:\n", " cec_func = mpy.CEC2019Functions(function_number=func_number)\n", " elif year == 2020:\n", " cec_func = mpy.CEC2020Functions(function_number=func_number, dimension=dimension)\n", " elif year == 2022:\n", " cec_func = mpy.CEC2022Functions(function_number=func_number, dimension=dimension)\n", " else:\n", " raise Exception(\"Unknown CEC year.\")\n", " \n", " func = cec_func\n", " result = {}\n", " result['Dimensions'] = dimension\n", " result['Function'] = func_name\n", " bounds_list = [bounds] * dimension # Extend bounds to all dimensions\n", " x0 = [[0.0 for _ in range(dimension)]] # Initial starting point\n", "\n", " def func_wrapper(X):\n", " \"\"\"Wraps the function to add evaluation tracking and noise.\"\"\"\n", " global N\n", " ret = np.array(func(X)) # Compute function value\n", " N += len(X) # Track the number of function evaluations\n", " return ret + noise_ratio * np.random.normal(size=len(X)) * np.abs(ret) # Add noise\n", " \n", " def func_scipy(par):\n", " \"\"\"Wrapper for compatibility with SciPy optimization methods.\"\"\"\n", " return func_wrapper([par])[0]\n", "\n", " N = 0 # Reset evaluation counter\n", " res = mpy.Minimizer(\n", " func_wrapper, bounds_list, x0=x0, relTol=0.0, algo=\"L_BFGS_B\", maxevals=Nmaxeval, \n", " callback=None, seed=seed, options={\n", " \"population_size\": 0, \n", " \"N_points_derivative\": 1,\n", " \"use_local_search\": True,\n", " \"func_noise_ratio\": noise_ratio\n", " }\n", " ).optimize()\n", " result[\"L_BFGS_B N=1\"] = res.fun\n", " N_dict[\"L_BFGS_B N=1\"] = N\n", "\n", " N = 0 # Reset evaluation counter\n", " res = mpy.Minimizer(\n", " func_wrapper, bounds_list, x0=x0, relTol=0.0, algo=\"L_BFGS_B\", maxevals=Nmaxeval, \n", " callback=None, seed=seed, options={\n", " \"population_size\": 0, \n", " \"N_points_derivative\": 3,\n", " \"use_local_search\": True,\n", " \"func_noise_ratio\": noise_ratio\n", " }\n", " ).optimize()\n", " result[\"L_BFGS_B N=3\"] = res.fun\n", " N_dict[\"L_BFGS_B N=3\"] = N\n", "\n", "\n", " N = 0 # Reset evaluation counter\n", " res = mpy.Minimizer(\n", " func_wrapper, bounds_list, x0=x0, relTol=0.0, algo=\"L_BFGS_B\", maxevals=Nmaxeval, \n", " callback=None, seed=seed, options={\n", " \"population_size\": 0, \n", " \"N_points_derivative\": 5,\n", " \"use_local_search\": True,\n", " \"func_noise_ratio\": noise_ratio\n", " }\n", " ).optimize()\n", " result[\"L_BFGS_B N=5\"] = res.fun\n", " N_dict[\"L_BFGS_B N=5\"] = N\n", "\n", "\n", " N = 0 # Reset evaluation counter\n", " res = mpy.Minimizer(\n", " func_wrapper, bounds_list, x0=x0, relTol=0.0, algo=\"L_BFGS_B\", maxevals=Nmaxeval, \n", " callback=None, seed=seed, options={\n", " \"population_size\": 0, \n", " \"N_points_derivative\": 7,\n", " \"use_local_search\": True,\n", " \"func_noise_ratio\": noise_ratio\n", " }\n", " ).optimize()\n", " result[\"L_BFGS_B N=7\"] = res.fun\n", " N_dict[\"L_BFGS_B N=7\"] = N\n", "\n", " \n", " # Run L-BFGS-B from SciPy\n", " N = 0\n", " res_minimize = minimize(func_scipy, x0=x0[0], method=\"L-BFGS-B\", options={\"maxfun\": Nmaxeval}, bounds=bounds_list)\n", " result[\"Scipy L_BFGS_B\"] = res_minimize.fun\n", " N_dict[\"Scipy L_BFGS_B\"] = N\n", "\n", " # Run Minuit Migrad from iminuit\n", " N = 0\n", " res_minimize = iminuit.minimize(func_scipy, x0=x0[0], method=\"migrad\", options={\"maxfun\": Nmaxeval}, bounds=bounds_list)\n", " result[\"Minuit Migrad\"] = res_minimize.fun\n", " N_dict[\"Minuit Migrad\"] = N\n", " \n", " # Print results\n", " for res in result:\n", " if res == \"Function\" : \n", " print(\"Function : \", result[res])\n", " if res not in ['Dimensions', 'Function']:\n", " print(f\"\\t{res:<20} : {result[res]:<10} \\t N_evals : {N_dict[res]:<10}\")\n", " print(\"\")\n", "\n", "def test_optimization(func, bounds, dimension, func_name, Nmaxeval, seed):\n", " \"\"\"\n", " Runs multiple optimization algorithms on the given function and stores results.\n", " \n", " Parameters:\n", " - func: Objective function to be minimized\n", " - bounds: Tuple representing the search space bounds\n", " - dimension: Number of dimensions for the problem\n", " - func_name: Name of the function (used for logging results)\n", " - Nmaxeval: Maximum number of function evaluations\n", " - seed: Random seed for reproducibility\n", " \"\"\"\n", " global results, N, N_dict, noise_ratio, results_lock, algos\n", " \n", " result = {}\n", " result['Dimensions'] = dimension\n", " result['Function'] = func_name\n", " bounds_list = [bounds] * dimension # Extend bounds to all dimensions\n", " x0 = [[0.0 for _ in range(dimension)] ]# Initial starting point\n", "\n", " def func_wrapper(X):\n", " \"\"\"Wraps the function to add evaluation tracking and noise.\"\"\"\n", " global N\n", " ret = np.array(func(X)) # Compute function value\n", " N += len(X) # Track the number of function evaluations\n", " return ret + noise_ratio * np.random.normal(size=len(X)) * np.abs(ret) # Add noise\n", " \n", " def func_scipy(par):\n", " \"\"\"Wrapper for compatibility with SciPy optimization methods.\"\"\"\n", " return func_wrapper([par])[0]\n", " \n", " # Run various optimization algorithms\n", " for algo in algos:\n", " N = 0 # Reset evaluation counter\n", " res = mpy.Minimizer(\n", " func_wrapper, bounds_list, x0=x0, relTol=0.0, algo=algo, maxevals=Nmaxeval, \n", " callback=None, seed=seed, options={\n", " \"population_size\": 0, \n", " \"N_points_derivative\": 3,\n", " \"use_local_search\": True,\n", " \"func_noise_ratio\": noise_ratio\n", " }\n", " ).optimize()\n", " result[algo] = res.fun\n", " N_dict[algo] = N\n", "\n", " # Run L-BFGS method from minionpy\n", " N = 0\n", " res = mpy.L_BFGS(\n", " func_wrapper, x0=x0, relTol=0.0, maxevals=Nmaxeval, \n", " callback=None, seed=seed, options={\n", " \"population_size\": 0, \n", " \"N_points_derivative\": 3,\n", " \"use_local_search\": True,\n", " \"func_noise_ratio\": noise_ratio\n", " }\n", " ).optimize()\n", " result[\"L_BFGS\"] = res.fun\n", " N_dict[\"L_BFGS\"] = N\n", " \n", " # Run L-BFGS-B from SciPy\n", " N = 0\n", " res_minimize = minimize(func_scipy, x0=x0[0], method=\"L-BFGS-B\", options={\"maxfun\": Nmaxeval}, bounds=bounds_list)\n", " result[\"Scipy L_BFGS_B\"] = res_minimize.fun\n", " N_dict[\"Scipy L_BFGS_B\"] = N\n", "\n", " # Run Dual Annealing from SciPy\n", " N = 0\n", " dual_ann = dual_annealing(func_scipy, bounds_list, x0=x0[0],maxfun=Nmaxeval, no_local_search=False)\n", " result[\"Scipy DA\"] = dual_ann.fun\n", " N_dict[\"Scipy DA\"] = N\n", "\n", "\n", " # Run Nelder-Mead from SciPy\n", " N = 0\n", " res_minimize = minimize(func_scipy, x0=x0[0], method=\"Nelder-Mead\", options={\"maxfev\": Nmaxeval, \"adaptive\": True}, bounds=bounds_list)\n", " result[\"Scipy NelderMead\"] = res_minimize.fun\n", " N_dict[\"Scipy NelderMead\"] = N\n", " \n", " # Run Minuit Migrad from iminuit\n", " N = 0\n", " res_minimize = iminuit.minimize(func_scipy, x0=x0[0], method=\"migrad\", options={\"maxfun\": Nmaxeval}, bounds=bounds_list)\n", " result[\"Minuit Migrad\"] = res_minimize.fun\n", " N_dict[\"Minuit Migrad\"] = N\n", "\n", " # Print results\n", " for res in result:\n", " if res == \"Function\" : \n", " print(\"Function : \", result[res])\n", " if res not in ['Dimensions', 'Function']:\n", " print(f\"\\t{res:<20} : {result[res]:<10} \\t N_evals : {N_dict[res]:<10}\")\n", " print(\"\")\n", "\n", "def run_test_optimization(j, dim, year=2017, seed=None, Nmaxeval=10000):\n", " \"\"\"\n", " Runs optimization tests for a specified CEC benchmark function.\n", " \n", " Parameters:\n", " - j: Function index in the CEC benchmark set\n", " - dim: Dimensionality of the function\n", " - year: Year of the CEC benchmark suite (default: 2017)\n", " - seed: Random seed for reproducibility\n", " - Nmaxeval: Maximum number of function evaluations\n", " \"\"\"\n", " if year == 2014:\n", " cec_func = mpy.CEC2014Functions(function_number=j, dimension=dim)\n", " elif year == 2017:\n", " cec_func = mpy.CEC2017Functions(function_number=j, dimension=dim)\n", " elif year == 2019:\n", " cec_func = mpy.CEC2019Functions(function_number=j)\n", " elif year == 2020:\n", " cec_func = mpy.CEC2020Functions(function_number=j, dimension=dim)\n", " elif year == 2022:\n", " cec_func = mpy.CEC2022Functions(function_number=j, dimension=dim)\n", " else:\n", " raise Exception(\"Unknown CEC year.\")\n", " \n", " test_optimization(cec_func, (-100, 100), dim, \"func_\" + str(j), Nmaxeval, seed)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Performance of Minion's L-BFGS-B with Different $N$ Derivative Points\n", "\n", "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.\n", "\n", "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.\n", "\n", "- When $N = 1$, the numerical derivative reduces to the standard forward difference method.\n", "- For $N \\geq 2$, the Lanczos derivative formula is used.\n", "- Specifically, $N = 3$ corresponds to the central difference method.\n", "\n", "The following sections analyze how different values of `'N_points_derivative'` impact optimization performance." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Function : func_1\n", "\tL_BFGS_B N=1 : 155440809.72642672 \t N_evals : 2519 \n", "\tL_BFGS_B N=3 : 7795.616161828173 \t N_evals : 3234 \n", "\tL_BFGS_B N=5 : 4202.942475048814 \t N_evals : 3485 \n", "\tL_BFGS_B N=7 : 3646.845485023124 \t N_evals : 8235 \n", "\tScipy L_BFGS_B : 29974922011.342438 \t N_evals : 231 \n", "\tMinuit Migrad : 29971490671.017815 \t N_evals : 3031 \n", "\n", "Function : func_2\n", "\tL_BFGS_B N=1 : 23408.84444166098 \t N_evals : 2618 \n", "\tL_BFGS_B N=3 : 1697216202721.2932 \t N_evals : 2877 \n", "\tL_BFGS_B N=5 : 1428.0826101061891 \t N_evals : 10086 \n", "\tL_BFGS_B N=7 : 1546.2404073861996 \t N_evals : 14335 \n", "\tScipy L_BFGS_B : 8.870509186758547e+17 \t N_evals : 231 \n", "\tMinuit Migrad : 2.2047323275094912e+17 \t N_evals : 3203 \n", "\n", "Function : func_3\n", "\tL_BFGS_B N=1 : 4597.56779217251 \t N_evals : 4521 \n", "\tL_BFGS_B N=3 : 621.7111063178112 \t N_evals : 4410 \n", "\tL_BFGS_B N=5 : 433.47696673857763 \t N_evals : 7175 \n", "\tL_BFGS_B N=7 : 888.8083046306449 \t N_evals : 16836 \n", "\tScipy L_BFGS_B : 1343417.8747845036 \t N_evals : 495 \n", "\tMinuit Migrad : 21134.768415007187 \t N_evals : 2941 \n", "\n", "Function : func_4\n", "\tL_BFGS_B N=1 : 443.4522406303349 \t N_evals : 3531 \n", "\tL_BFGS_B N=3 : 418.341182038582 \t N_evals : 4179 \n", "\tL_BFGS_B N=5 : 643.8708223602927 \t N_evals : 3772 \n", "\tL_BFGS_B N=7 : 415.6436200050286 \t N_evals : 10553 \n", "\tScipy L_BFGS_B : 5901.457891573997 \t N_evals : 308 \n", "\tMinuit Migrad : 5901.210405002834 \t N_evals : 2743 \n", "\n", "Function : func_5\n", "\tL_BFGS_B N=1 : 700.6807343216228 \t N_evals : 3113 \n", "\tL_BFGS_B N=3 : 647.1940015139536 \t N_evals : 5040 \n", "\tL_BFGS_B N=5 : 621.8665559985304 \t N_evals : 4674 \n", "\tL_BFGS_B N=7 : 632.3909943698453 \t N_evals : 5612 \n", "\tScipy L_BFGS_B : 726.6561934832323 \t N_evals : 297 \n", "\tMinuit Migrad : 726.5685275284108 \t N_evals : 2634 \n", "\n", "Function : func_6\n", "\tL_BFGS_B N=1 : 671.1270881342274 \t N_evals : 2739 \n", "\tL_BFGS_B N=3 : 686.2400699392347 \t N_evals : 3612 \n", "\tL_BFGS_B N=5 : 662.2177896889857 \t N_evals : 3813 \n", "\tL_BFGS_B N=7 : 660.5973252367953 \t N_evals : 7686 \n", "\tScipy L_BFGS_B : 741.761456934054 \t N_evals : 231 \n", "\tMinuit Migrad : 741.6739995100946 \t N_evals : 2852 \n", "\n", "Function : func_7\n", "\tL_BFGS_B N=1 : 818.195037670342 \t N_evals : 2013 \n", "\tL_BFGS_B N=3 : 813.6717212776309 \t N_evals : 5439 \n", "\tL_BFGS_B N=5 : 758.3449125999913 \t N_evals : 4838 \n", "\tL_BFGS_B N=7 : 811.0404491034517 \t N_evals : 6222 \n", "\tScipy L_BFGS_B : 939.6710379885674 \t N_evals : 462 \n", "\tMinuit Migrad : 939.4582456360488 \t N_evals : 2758 \n", "\n", "Function : func_8\n", "\tL_BFGS_B N=1 : 843.0413967044738 \t N_evals : 1265 \n", "\tL_BFGS_B N=3 : 855.5138378984695 \t N_evals : 5985 \n", "\tL_BFGS_B N=5 : 838.2106871761632 \t N_evals : 4059 \n", "\tL_BFGS_B N=7 : 836.7115256490926 \t N_evals : 13664 \n", "\tScipy L_BFGS_B : 946.7609121787876 \t N_evals : 506 \n", "\tMinuit Migrad : 946.5829104796138 \t N_evals : 3092 \n", "\n", "Function : func_9\n", "\tL_BFGS_B N=1 : 1784.2784449928758 \t N_evals : 2662 \n", "\tL_BFGS_B N=3 : 1772.0248328461803 \t N_evals : 4746 \n", "\tL_BFGS_B N=5 : 1782.817457216045 \t N_evals : 6601 \n", "\tL_BFGS_B N=7 : 1783.0274542278253 \t N_evals : 5063 \n", "\tScipy L_BFGS_B : 4306.037275856034 \t N_evals : 231 \n", "\tMinuit Migrad : 4305.293812540061 \t N_evals : 2757 \n", "\n", "Function : func_10\n", "\tL_BFGS_B N=1 : 3405.8742271717174 \t N_evals : 2387 \n", "\tL_BFGS_B N=3 : 3000.1936307853557 \t N_evals : 2919 \n", "\tL_BFGS_B N=5 : 3217.031561367762 \t N_evals : 5699 \n", "\tL_BFGS_B N=7 : 3402.716662194973 \t N_evals : 14030 \n", "\tScipy L_BFGS_B : 6138.46610562601 \t N_evals : 352 \n", "\tMinuit Migrad : 6137.082686554565 \t N_evals : 2904 \n", "\n", "Function : func_11\n", "\tL_BFGS_B N=1 : 1151.0572534289265 \t N_evals : 2508 \n", "\tL_BFGS_B N=3 : 1125.8621046435683 \t N_evals : 3486 \n", "\tL_BFGS_B N=5 : 1149.2244538016819 \t N_evals : 5125 \n", "\tL_BFGS_B N=7 : 1133.5994255649591 \t N_evals : 20740 \n", "\tScipy L_BFGS_B : 65026990.500262365 \t N_evals : 231 \n", "\tMinuit Migrad : 9346.87016121856 \t N_evals : 2746 \n", "\n", "Function : func_12\n", "\tL_BFGS_B N=1 : 372553.0221083625 \t N_evals : 2376 \n", "\tL_BFGS_B N=3 : 5153.04328169742 \t N_evals : 3024 \n", "\tL_BFGS_B N=5 : 12265.128147984524 \t N_evals : 6437 \n", "\tL_BFGS_B N=7 : 4455.74461133355 \t N_evals : 13847 \n", "\tScipy L_BFGS_B : 5721593315.830217 \t N_evals : 308 \n", "\tMinuit Migrad : 5720759886.064651 \t N_evals : 3012 \n", "\n", "Function : func_13\n", "\tL_BFGS_B N=1 : 31913.468438756976 \t N_evals : 1529 \n", "\tL_BFGS_B N=3 : 11204.354955715491 \t N_evals : 3864 \n", "\tL_BFGS_B N=5 : 12368.85814230509 \t N_evals : 5576 \n", "\tL_BFGS_B N=7 : 15263.413855378709 \t N_evals : 8113 \n", "\tScipy L_BFGS_B : 2841944917.3087363 \t N_evals : 429 \n", "\tMinuit Migrad : 2841158927.2814994 \t N_evals : 3241 \n", "\n", "Function : func_14\n", "\tL_BFGS_B N=1 : 33544.99633496924 \t N_evals : 1925 \n", "\tL_BFGS_B N=3 : 10209.189644942318 \t N_evals : 1932 \n", "\tL_BFGS_B N=5 : 9196.806884613237 \t N_evals : 3772 \n", "\tL_BFGS_B N=7 : 1481.8419406175674 \t N_evals : 12383 \n", "\tScipy L_BFGS_B : 2215163175.6679897 \t N_evals : 231 \n", "\tMinuit Migrad : 2214965903.1708007 \t N_evals : 2797 \n", "\n", "Function : func_15\n", "\tL_BFGS_B N=1 : 21656.60610119508 \t N_evals : 1232 \n", "\tL_BFGS_B N=3 : 25177.876084290885 \t N_evals : 2331 \n", "\tL_BFGS_B N=5 : 2067.268278183376 \t N_evals : 4428 \n", "\tL_BFGS_B N=7 : 22084.141893839624 \t N_evals : 10553 \n", "\tScipy L_BFGS_B : 769591680.847867 \t N_evals : 231 \n", "\tMinuit Migrad : 769389673.723791 \t N_evals : 2767 \n", "\n", "Function : func_16\n", "\tL_BFGS_B N=1 : 2484.0807895695625 \t N_evals : 2024 \n", "\tL_BFGS_B N=3 : 2746.7981107500564 \t N_evals : 3780 \n", "\tL_BFGS_B N=5 : 2448.0951824339263 \t N_evals : 6888 \n", "\tL_BFGS_B N=7 : 2960.2414496123743 \t N_evals : 7869 \n", "\tScipy L_BFGS_B : 3437.8138117955878 \t N_evals : 231 \n", "\tMinuit Migrad : 3437.189462018849 \t N_evals : 2835 \n", "\n", "Function : func_17\n", "\tL_BFGS_B N=1 : 2134.361186648782 \t N_evals : 1463 \n", "\tL_BFGS_B N=3 : 1892.1422555911688 \t N_evals : 5334 \n", "\tL_BFGS_B N=5 : 1813.8794782735883 \t N_evals : 4879 \n", "\tL_BFGS_B N=7 : 1769.330262905609 \t N_evals : 9211 \n", "\tScipy L_BFGS_B : 3283.6485517994247 \t N_evals : 374 \n", "\tMinuit Migrad : 3282.8696739596567 \t N_evals : 2592 \n", "\n", "Function : func_18\n", "\tL_BFGS_B N=1 : 37606.13637977068 \t N_evals : 1287 \n", "\tL_BFGS_B N=3 : 24286.044256773377 \t N_evals : 4704 \n", "\tL_BFGS_B N=5 : 3122.179545617672 \t N_evals : 8118 \n", "\tL_BFGS_B N=7 : 4351.299816515797 \t N_evals : 9028 \n", "\tScipy L_BFGS_B : 14470384256.633804 \t N_evals : 231 \n", "\tMinuit Migrad : 14467316149.540823 \t N_evals : 2732 \n", "\n", "Function : func_19\n", "\tL_BFGS_B N=1 : 16052.470323644358 \t N_evals : 1540 \n", "\tL_BFGS_B N=3 : 3650.901075234203 \t N_evals : 2583 \n", "\tL_BFGS_B N=5 : 4188.2613703731195 \t N_evals : 4469 \n", "\tL_BFGS_B N=7 : 3679.0767133103363 \t N_evals : 11895 \n", "\tScipy L_BFGS_B : 12287890055.088867 \t N_evals : 319 \n", "\tMinuit Migrad : 12269880580.153625 \t N_evals : 2988 \n", "\n", "Function : func_20\n", "\tL_BFGS_B N=1 : 2451.4932153107166 \t N_evals : 1155 \n", "\tL_BFGS_B N=3 : 2530.608467258198 \t N_evals : 3843 \n", "\tL_BFGS_B N=5 : 2527.1378216541234 \t N_evals : 6929 \n", "\tL_BFGS_B N=7 : 2530.0445864216317 \t N_evals : 5185 \n", "\tScipy L_BFGS_B : 3152.718601840979 \t N_evals : 308 \n", "\tMinuit Migrad : 3151.9590707996176 \t N_evals : 2843 \n", "\n", "Function : func_21\n", "\tL_BFGS_B N=1 : 2430.079071641513 \t N_evals : 1771 \n", "\tL_BFGS_B N=3 : 2341.7262145129694 \t N_evals : 4095 \n", "\tL_BFGS_B N=5 : 2451.807337889535 \t N_evals : 10373 \n", "\tL_BFGS_B N=7 : 2445.2111837642715 \t N_evals : 15494 \n", "\tScipy L_BFGS_B : 2828.5357166026292 \t N_evals : 319 \n", "\tMinuit Migrad : 2828.237264586217 \t N_evals : 2736 \n", "\n", "Function : func_22\n", "\tL_BFGS_B N=1 : 2913.8893338331104 \t N_evals : 2321 \n", "\tL_BFGS_B N=3 : 4559.031548124035 \t N_evals : 5985 \n", "\tL_BFGS_B N=5 : 4365.309083676264 \t N_evals : 6027 \n", "\tL_BFGS_B N=7 : 4205.599338797904 \t N_evals : 7991 \n", "\tScipy L_BFGS_B : 5301.946474244454 \t N_evals : 506 \n", "\tMinuit Migrad : 5301.341336607905 \t N_evals : 2983 \n", "\n", "Function : func_23\n", "\tL_BFGS_B N=1 : 3318.324002606267 \t N_evals : 1914 \n", "\tL_BFGS_B N=3 : 2929.4954175515186 \t N_evals : 3507 \n", "\tL_BFGS_B N=5 : 3306.5016534320066 \t N_evals : 4264 \n", "\tL_BFGS_B N=7 : 3303.349284063384 \t N_evals : 11773 \n", "\tScipy L_BFGS_B : 4335.773839407028 \t N_evals : 341 \n", "\tMinuit Migrad : 4335.505035312942 \t N_evals : 2958 \n", "\n", "Function : func_24\n", "\tL_BFGS_B N=1 : 3385.8938603112774 \t N_evals : 2057 \n", "\tL_BFGS_B N=3 : 3391.195443812986 \t N_evals : 1575 \n", "\tL_BFGS_B N=5 : 3386.837237876338 \t N_evals : 2747 \n", "\tL_BFGS_B N=7 : 2513.3979716183644 \t N_evals : 9028 \n", "\tScipy L_BFGS_B : 3392.4983401907657 \t N_evals : 231 \n", "\tMinuit Migrad : 3059.31260792418 \t N_evals : 3124 \n", "\n", "Function : func_25\n", "\tL_BFGS_B N=1 : 3488.1655569615805 \t N_evals : 1298 \n", "\tL_BFGS_B N=3 : 3402.4692121229386 \t N_evals : 1890 \n", "\tL_BFGS_B N=5 : 2953.309753934707 \t N_evals : 11644 \n", "\tL_BFGS_B N=7 : 2941.1859877639463 \t N_evals : 6832 \n", "\tScipy L_BFGS_B : 4821.704556470619 \t N_evals : 231 \n", "\tMinuit Migrad : 4819.326039378562 \t N_evals : 2802 \n", "\n", "Function : func_26\n", "\tL_BFGS_B N=1 : 4850.133453901348 \t N_evals : 1683 \n", "\tL_BFGS_B N=3 : 4911.194395353413 \t N_evals : 2814 \n", "\tL_BFGS_B N=5 : 4991.3483732223 \t N_evals : 4305 \n", "\tL_BFGS_B N=7 : 5111.340156940121 \t N_evals : 8906 \n", "\tScipy L_BFGS_B : 5733.595210109736 \t N_evals : 231 \n", "\tMinuit Migrad : 5732.87407545577 \t N_evals : 2817 \n", "\n", "Function : func_27\n", "\tL_BFGS_B N=1 : 3296.98321909499 \t N_evals : 1628 \n", "\tL_BFGS_B N=3 : 3384.1161256760647 \t N_evals : 8883 \n", "\tL_BFGS_B N=5 : 3565.413366701667 \t N_evals : 7503 \n", "\tL_BFGS_B N=7 : 3227.1772657243055 \t N_evals : 8723 \n", "\tScipy L_BFGS_B : 5056.758818927193 \t N_evals : 418 \n", "\tMinuit Migrad : 3130.748304843105 \t N_evals : 2983 \n", "\n", "Function : func_28\n", "\tL_BFGS_B N=1 : 4512.301431340783 \t N_evals : 1177 \n", "\tL_BFGS_B N=3 : 3875.637613160838 \t N_evals : 6090 \n", "\tL_BFGS_B N=5 : 3710.5245150100495 \t N_evals : 9061 \n", "\tL_BFGS_B N=7 : 3617.9277402263597 \t N_evals : 7503 \n", "\tScipy L_BFGS_B : 4517.9151119053 \t N_evals : 616 \n", "\tMinuit Migrad : 4516.557146279219 \t N_evals : 2686 \n", "\n", "Function : func_29\n", "\tL_BFGS_B N=1 : 3693.5465125843516 \t N_evals : 1485 \n", "\tL_BFGS_B N=3 : 3560.666078239055 \t N_evals : 8274 \n", "\tL_BFGS_B N=5 : 3364.7043812574675 \t N_evals : 5371 \n", "\tL_BFGS_B N=7 : 3571.2845480196056 \t N_evals : 8174 \n", "\tScipy L_BFGS_B : 48957.11825190846 \t N_evals : 330 \n", "\tMinuit Migrad : 48949.368333533246 \t N_evals : 2691 \n", "\n", "Function : func_30\n", "\tL_BFGS_B N=1 : 78917.47112663732 \t N_evals : 1199 \n", "\tL_BFGS_B N=3 : 31711.41063765028 \t N_evals : 3276 \n", "\tL_BFGS_B N=5 : 8456.956628860362 \t N_evals : 4592 \n", "\tL_BFGS_B N=7 : 5584.994614573756 \t N_evals : 10492 \n", "\tScipy L_BFGS_B : 506164235.8925811 \t N_evals : 231 \n", "\tMinuit Migrad : 505964581.308316 \t N_evals : 2871 \n", "\n" ] } ], "source": [ "# Counter for function evaluations\n", "N = 0\n", "\n", "# Noise ratio for function evaluations (set to zero for noiseless optimization)\n", "noise_ratio = 1e-4\n", "\n", "# Dictionary to store the number of evaluations per algorithm\n", "N_dict = {}\n", "\n", "# Maximum number of function evaluations allowed per optimization run\n", "Nmaxeval = 100000 \n", "\n", "# Dimensionality of the optimization problem\n", "dimension = 10 \n", "\n", "# Number of times each function should be tested (repetitions)\n", "NRuns = 1 \n", "\n", "# The CEC benchmark year to use for function selection\n", "\n", "year = 2017 \n", "\n", "# Dictionary mapping CEC benchmark years to their respective function sets\n", "func_numbers_dict = {\n", " 2022: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], \n", " 2020: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], \n", " 2019: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], \n", " 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], \n", " 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],\n", "}\n", "\n", "# Retrieve the function numbers for the selected benchmark year\n", "func_numbers = func_numbers_dict[year]\n", "\n", "for j in func_numbers:\n", " test_optimization_noise(j, year, (-100, 100), dimension, \"func_\"+str(j), Nmaxeval, None)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "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.\n", "\n", "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.\n", "\n", "The number of function evaluations required for computing the function and its derivative, given $N$, is given by:\n", "\n", "$$\n", "\\text{Function Calls} = 1 + D \\cdot (N - 1)\n", "$$\n", "\n", "where $D$ is the dimensionality of the problem. These function evaluations are performed in batches to enhance efficiency.\n", "\n", "What Happens if the Function is Smooth?\n", "To analyze performance in a noise-free setting, we can compare results by setting the noise level to zero." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Function : func_1\n", "\tL_BFGS_B N=1 : 100.02404359824438 \t N_evals : 1144 \n", "\tL_BFGS_B N=3 : 100.0 \t N_evals : 924 \n", "\tL_BFGS_B N=5 : 100.0 \t N_evals : 1763 \n", "\tL_BFGS_B N=7 : 100.0 \t N_evals : 2623 \n", "\tScipy L_BFGS_B : 100.00000379608935 \t N_evals : 341 \n", "\tMinuit Migrad : 100.00000007939512 \t N_evals : 805 \n", "\n", "Function : func_2\n", "\tL_BFGS_B N=1 : 200.09360056634537 \t N_evals : 1958 \n", "\tL_BFGS_B N=3 : 200.00000912847912 \t N_evals : 3633 \n", "\tL_BFGS_B N=5 : 200.00334332154017 \t N_evals : 7093 \n", "\tL_BFGS_B N=7 : 200.000242639945 \t N_evals : 13786 \n", "\tScipy L_BFGS_B : 200.00004652119523 \t N_evals : 1485 \n", "\tMinuit Migrad : 200.00024257079139 \t N_evals : 9267 \n", "\n", "Function : func_3\n", "\tL_BFGS_B N=1 : 300.0000000000427 \t N_evals : 627 \n", "\tL_BFGS_B N=3 : 300.00000000000296 \t N_evals : 1197 \n", "\tL_BFGS_B N=5 : 300.0000000000003 \t N_evals : 2337 \n", "\tL_BFGS_B N=7 : 300.00000000000006 \t N_evals : 3477 \n", "\tScipy L_BFGS_B : 300.0000000005501 \t N_evals : 550 \n", "\tMinuit Migrad : 301.5204252616123 \t N_evals : 2390 \n", "\n", "Function : func_4\n", "\tL_BFGS_B N=1 : 400.00000000126374 \t N_evals : 858 \n", "\tL_BFGS_B N=3 : 400.0000000019323 \t N_evals : 1659 \n", "\tL_BFGS_B N=5 : 400.00000001535653 \t N_evals : 3075 \n", "\tL_BFGS_B N=7 : 400.0000000001161 \t N_evals : 4636 \n", "\tScipy L_BFGS_B : 400.00000013205766 \t N_evals : 858 \n", "\tMinuit Migrad : 400.00003301481394 \t N_evals : 1322 \n", "\n", "Function : func_5\n", "\tL_BFGS_B N=1 : 621.3833908048283 \t N_evals : 231 \n", "\tL_BFGS_B N=3 : 621.383390804823 \t N_evals : 441 \n", "\tL_BFGS_B N=5 : 621.3833908048204 \t N_evals : 861 \n", "\tL_BFGS_B N=7 : 621.38339080482 \t N_evals : 1281 \n", "\tScipy L_BFGS_B : 609.4440395324008 \t N_evals : 264 \n", "\tMinuit Migrad : 612.4282904177915 \t N_evals : 424 \n", "\n", "Function : func_6\n", "\tL_BFGS_B N=1 : 660.1105187317696 \t N_evals : 363 \n", "\tL_BFGS_B N=3 : 660.1105187313311 \t N_evals : 693 \n", "\tL_BFGS_B N=5 : 660.1105187313864 \t N_evals : 1353 \n", "\tL_BFGS_B N=7 : 660.1105187314524 \t N_evals : 2013 \n", "\tScipy L_BFGS_B : 666.717372819352 \t N_evals : 341 \n", "\tMinuit Migrad : 659.0966069652629 \t N_evals : 501 \n", "\n", "Function : func_7\n", "\tL_BFGS_B N=1 : 778.2115143005784 \t N_evals : 176 \n", "\tL_BFGS_B N=3 : 778.2115143005782 \t N_evals : 336 \n", "\tL_BFGS_B N=5 : 778.2115143005778 \t N_evals : 656 \n", "\tL_BFGS_B N=7 : 778.2115143005776 \t N_evals : 976 \n", "\tScipy L_BFGS_B : 757.7543541552618 \t N_evals : 198 \n", "\tMinuit Migrad : 794.8575844767726 \t N_evals : 496 \n", "\n", "Function : func_8\n", "\tL_BFGS_B N=1 : 831.8386141688312 \t N_evals : 242 \n", "\tL_BFGS_B N=3 : 831.8386141688279 \t N_evals : 462 \n", "\tL_BFGS_B N=5 : 831.8386141688278 \t N_evals : 902 \n", "\tL_BFGS_B N=7 : 831.8386141688281 \t N_evals : 1342 \n", "\tScipy L_BFGS_B : 834.8234863035414 \t N_evals : 143 \n", "\tMinuit Migrad : 831.8386162060639 \t N_evals : 471 \n", "\n", "Function : func_9\n", "\tL_BFGS_B N=1 : 1783.2257711126772 \t N_evals : 374 \n", "\tL_BFGS_B N=3 : 1783.22577111268 \t N_evals : 714 \n", "\tL_BFGS_B N=5 : 1783.2257711126763 \t N_evals : 1394 \n", "\tL_BFGS_B N=7 : 1783.2257711126767 \t N_evals : 2074 \n", "\tScipy L_BFGS_B : 1783.225774239457 \t N_evals : 506 \n", "\tMinuit Migrad : 1772.47578747336 \t N_evals : 473 \n", "\n", "Function : func_10\n", "\tL_BFGS_B N=1 : 3138.500725530957 \t N_evals : 242 \n", "\tL_BFGS_B N=3 : 3138.500725530961 \t N_evals : 462 \n", "\tL_BFGS_B N=5 : 3138.5007255309542 \t N_evals : 902 \n", "\tL_BFGS_B N=7 : 3138.5007255309506 \t N_evals : 1342 \n", "\tScipy L_BFGS_B : 3145.626912686981 \t N_evals : 583 \n", "\tMinuit Migrad : 3534.6345007057125 \t N_evals : 394 \n", "\n", "Function : func_11\n", "\tL_BFGS_B N=1 : 1129.848513216169 \t N_evals : 891 \n", "\tL_BFGS_B N=3 : 1129.848513183287 \t N_evals : 1617 \n", "\tL_BFGS_B N=5 : 1129.8485131828318 \t N_evals : 3116 \n", "\tL_BFGS_B N=7 : 1129.8485131867667 \t N_evals : 4697 \n", "\tScipy L_BFGS_B : 1129.8485134486527 \t N_evals : 858 \n", "\tMinuit Migrad : 1255.2086982593696 \t N_evals : 2288 \n", "\n", "Function : func_12\n", "\tL_BFGS_B N=1 : 1323.660931879245 \t N_evals : 1903 \n", "\tL_BFGS_B N=3 : 1752.7181713259856 \t N_evals : 5355 \n", "\tL_BFGS_B N=5 : 1752.9224909175168 \t N_evals : 5658 \n", "\tL_BFGS_B N=7 : 1930.386070566106 \t N_evals : 14213 \n", "\tScipy L_BFGS_B : 1752.9778786965803 \t N_evals : 5148 \n", "\tMinuit Migrad : 1569.1753651738106 \t N_evals : 3376 \n", "\n", "Function : func_13\n", "\tL_BFGS_B N=1 : 1566.901445302515 \t N_evals : 1485 \n", "\tL_BFGS_B N=3 : 1534.8107110058247 \t N_evals : 3717 \n", "\tL_BFGS_B N=5 : 1500.0867512340901 \t N_evals : 7872 \n", "\tL_BFGS_B N=7 : 1453.0395695451102 \t N_evals : 11773 \n", "\tScipy L_BFGS_B : 1528.3440682538076 \t N_evals : 5577 \n", "\tMinuit Migrad : 1307.458129681006 \t N_evals : 7110 \n", "\n", "Function : func_14\n", "\tL_BFGS_B N=1 : 1450.7037870160248 \t N_evals : 1485 \n", "\tL_BFGS_B N=3 : 1438.0384296120644 \t N_evals : 3066 \n", "\tL_BFGS_B N=5 : 1441.1952435357825 \t N_evals : 4715 \n", "\tL_BFGS_B N=7 : 2009.1550821656542 \t N_evals : 6466 \n", "\tScipy L_BFGS_B : 1438.8977193948288 \t N_evals : 2563 \n", "\tMinuit Migrad : 1649.405249936061 \t N_evals : 3778 \n", "\n", "Function : func_15\n", "\tL_BFGS_B N=1 : 1527.9343202872521 \t N_evals : 1551 \n", "\tL_BFGS_B N=3 : 1594.2385085785927 \t N_evals : 2415 \n", "\tL_BFGS_B N=5 : 1527.9412063923282 \t N_evals : 5904 \n", "\tL_BFGS_B N=7 : 1561.8642070644444 \t N_evals : 11895 \n", "\tScipy L_BFGS_B : 1566.9333151713322 \t N_evals : 1925 \n", "\tMinuit Migrad : 1521.3884508553413 \t N_evals : 3077 \n", "\n", "Function : func_16\n", "\tL_BFGS_B N=1 : 2319.657910115671 \t N_evals : 3806 \n", "\tL_BFGS_B N=3 : 2322.1713538379663 \t N_evals : 4893 \n", "\tL_BFGS_B N=5 : 2473.435095059006 \t N_evals : 13243 \n", "\tL_BFGS_B N=7 : 2473.4384974845625 \t N_evals : 32513 \n", "\tScipy L_BFGS_B : 2241.1013647143145 \t N_evals : 1573 \n", "\tMinuit Migrad : 2419.3176592013588 \t N_evals : 2349 \n", "\n", "Function : func_17\n", "\tL_BFGS_B N=1 : 1859.4461246377919 \t N_evals : 1914 \n", "\tL_BFGS_B N=3 : 1821.7485049648965 \t N_evals : 3423 \n", "\tL_BFGS_B N=5 : 1823.2456729780552 \t N_evals : 11644 \n", "\tL_BFGS_B N=7 : 1770.1382478477715 \t N_evals : 13725 \n", "\tScipy L_BFGS_B : 1933.6464563499044 \t N_evals : 517 \n", "\tMinuit Migrad : 1767.5177644174664 \t N_evals : 1296 \n", "\n", "Function : func_18\n", "\tL_BFGS_B N=1 : 1925.95719594953 \t N_evals : 1221 \n", "\tL_BFGS_B N=3 : 1857.1160945069876 \t N_evals : 7434 \n", "\tL_BFGS_B N=5 : 1859.26845723625 \t N_evals : 13489 \n", "\tL_BFGS_B N=7 : 1860.0591511084888 \t N_evals : 20679 \n", "\tScipy L_BFGS_B : 1913.2023730232422 \t N_evals : 2365 \n", "\tMinuit Migrad : 1822.3105988070927 \t N_evals : 4993 \n", "\n", "Function : func_19\n", "\tL_BFGS_B N=1 : 1907.3087638205411 \t N_evals : 2123 \n", "\tL_BFGS_B N=3 : 1906.8170643917647 \t N_evals : 4830 \n", "\tL_BFGS_B N=5 : 1907.2818851556954 \t N_evals : 9922 \n", "\tL_BFGS_B N=7 : 1916.1116292576653 \t N_evals : 7381 \n", "\tScipy L_BFGS_B : 3151.089954015937 \t N_evals : 1155 \n", "\tMinuit Migrad : 1905.696993266833 \t N_evals : 3402 \n", "\n", "Function : func_20\n", "\tL_BFGS_B N=1 : 2596.9998879927416 \t N_evals : 1650 \n", "\tL_BFGS_B N=3 : 2525.636151989915 \t N_evals : 2184 \n", "\tL_BFGS_B N=5 : 2584.390861986193 \t N_evals : 5166 \n", "\tL_BFGS_B N=7 : 2577.065310387093 \t N_evals : 4697 \n", "\tScipy L_BFGS_B : 2453.4971938947438 \t N_evals : 1672 \n", "\tMinuit Migrad : 2467.0430337766966 \t N_evals : 1063 \n", "\n", "Function : func_21\n", "\tL_BFGS_B N=1 : 2413.8167353914746 \t N_evals : 253 \n", "\tL_BFGS_B N=3 : 2413.816735391473 \t N_evals : 483 \n", "\tL_BFGS_B N=5 : 2413.816735391474 \t N_evals : 943 \n", "\tL_BFGS_B N=7 : 2413.816735391473 \t N_evals : 1403 \n", "\tScipy L_BFGS_B : 2473.30737207598 \t N_evals : 374 \n", "\tMinuit Migrad : 2488.969509451181 \t N_evals : 478 \n", "\n", "Function : func_22\n", "\tL_BFGS_B N=1 : 2319.4873871757736 \t N_evals : 847 \n", "\tL_BFGS_B N=3 : 2301.2724157804664 \t N_evals : 1722 \n", "\tL_BFGS_B N=5 : 2302.112096175503 \t N_evals : 3321 \n", "\tL_BFGS_B N=7 : 2302.5985149383 \t N_evals : 5246 \n", "\tScipy L_BFGS_B : 2303.5741928508846 \t N_evals : 726 \n", "\tMinuit Migrad : 4418.942850060065 \t N_evals : 585 \n", "\n", "Function : func_23\n", "\tL_BFGS_B N=1 : 3246.5299036854244 \t N_evals : 319 \n", "\tL_BFGS_B N=3 : 3246.529903704273 \t N_evals : 609 \n", "\tL_BFGS_B N=5 : 3246.5299036961783 \t N_evals : 1189 \n", "\tL_BFGS_B N=7 : 3246.529903689443 \t N_evals : 1769 \n", "\tScipy L_BFGS_B : 2750.84064139051 \t N_evals : 242 \n", "\tMinuit Migrad : 3303.6107331735884 \t N_evals : 539 \n", "\n", "Function : func_24\n", "\tL_BFGS_B N=1 : 2500.00001099148 \t N_evals : 1111 \n", "\tL_BFGS_B N=3 : 2500.000011635133 \t N_evals : 2142 \n", "\tL_BFGS_B N=5 : 2500.0000093103 \t N_evals : 4223 \n", "\tL_BFGS_B N=7 : 2500.0000089521627 \t N_evals : 6405 \n", "\tScipy L_BFGS_B : 2500.000004375227 \t N_evals : 880 \n", "\tMinuit Migrad : 2500.0000002352485 \t N_evals : 3139 \n", "\n", "Function : func_25\n", "\tL_BFGS_B N=1 : 2944.637212627589 \t N_evals : 693 \n", "\tL_BFGS_B N=3 : 2948.0617386468903 \t N_evals : 1491 \n", "\tL_BFGS_B N=5 : 2950.348631527948 \t N_evals : 2296 \n", "\tL_BFGS_B N=7 : 2950.2783694119985 \t N_evals : 3660 \n", "\tScipy L_BFGS_B : 2944.235214039048 \t N_evals : 627 \n", "\tMinuit Migrad : 2897.7572322735177 \t N_evals : 2789 \n", "\n", "Function : func_26\n", "\tL_BFGS_B N=1 : 4564.393574740458 \t N_evals : 440 \n", "\tL_BFGS_B N=3 : 4564.393574739803 \t N_evals : 840 \n", "\tL_BFGS_B N=5 : 4564.3935747483265 \t N_evals : 1599 \n", "\tL_BFGS_B N=7 : 4564.393574739817 \t N_evals : 2440 \n", "\tScipy L_BFGS_B : 4562.724102756209 \t N_evals : 253 \n", "\tMinuit Migrad : 4987.958213640113 \t N_evals : 864 \n", "\n", "Function : func_27\n", "\tL_BFGS_B N=1 : 3109.129738918923 \t N_evals : 2090 \n", "\tL_BFGS_B N=3 : 3097.9035459101988 \t N_evals : 1722 \n", "\tL_BFGS_B N=5 : 3108.0806799785346 \t N_evals : 3198 \n", "\tL_BFGS_B N=7 : 3109.658564489433 \t N_evals : 6588 \n", "\tScipy L_BFGS_B : 3456.809577847508 \t N_evals : 913 \n", "\tMinuit Migrad : 3353.1641236492887 \t N_evals : 748 \n", "\n", "Function : func_28\n", "\tL_BFGS_B N=1 : 3383.734041612164 \t N_evals : 396 \n", "\tL_BFGS_B N=3 : 3383.734041488487 \t N_evals : 756 \n", "\tL_BFGS_B N=5 : 3383.7340414884766 \t N_evals : 1476 \n", "\tL_BFGS_B N=7 : 3383.734041488476 \t N_evals : 2196 \n", "\tScipy L_BFGS_B : 3383.734041551642 \t N_evals : 352 \n", "\tMinuit Migrad : 3383.734043464136 \t N_evals : 1282 \n", "\n", "Function : func_29\n", "\tL_BFGS_B N=1 : 4002.5214380769944 \t N_evals : 2013 \n", "\tL_BFGS_B N=3 : 3954.506356161578 \t N_evals : 5082 \n", "\tL_BFGS_B N=5 : 3701.294953530076 \t N_evals : 9348 \n", "\tL_BFGS_B N=7 : 3372.7400472558274 \t N_evals : 16104 \n", "\tScipy L_BFGS_B : 3748.3174566518373 \t N_evals : 1144 \n", "\tMinuit Migrad : 3436.59285091239 \t N_evals : 4780 \n", "\n", "Function : func_30\n", "\tL_BFGS_B N=1 : 4463.3894536118105 \t N_evals : 2629 \n", "\tL_BFGS_B N=3 : 3815.1584198996907 \t N_evals : 10206 \n", "\tL_BFGS_B N=5 : 3882.371958617324 \t N_evals : 11685 \n", "\tL_BFGS_B N=7 : 3941.84777267862 \t N_evals : 18056 \n", "\tScipy L_BFGS_B : 4477.290404916146 \t N_evals : 1298 \n", "\tMinuit Migrad : 3619.424442500836 \t N_evals : 13810 \n", "\n" ] } ], "source": [ "# Counter for function evaluations\n", "N = 0\n", "\n", "# Noise ratio for function evaluations (set to zero for noiseless optimization)\n", "noise_ratio = 0.0\n", "\n", "# Dictionary to store the number of evaluations per algorithm\n", "N_dict = {}\n", "\n", "# Maximum number of function evaluations allowed per optimization run\n", "Nmaxeval = 100000 \n", "\n", "# Dimensionality of the optimization problem\n", "dimension = 10 \n", "\n", "# Number of times each function should be tested (repetitions)\n", "NRuns = 1 \n", "\n", "# The CEC benchmark year to use for function selection\n", "\n", "year = 2017 \n", "\n", "# Dictionary mapping CEC benchmark years to their respective function sets\n", "func_numbers_dict = {\n", " 2022: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], \n", " 2020: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], \n", " 2019: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], \n", " 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], \n", " 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],\n", "}\n", "\n", "# Retrieve the function numbers for the selected benchmark year\n", "func_numbers = func_numbers_dict[year]\n", "\n", "for j in func_numbers:\n", " test_optimization_noise(j, year, (-100, 100), dimension, \"func_\"+str(j), Nmaxeval, None)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that using higher $N$ does not improves the performance. Therefore, for smooth function, $N=1$ can be safely used. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Performance of Minion's L-BFGS-B at Different Noise Levels\n", "\n", "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$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Noise Level : 0.01" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Function : func_1\n", "\tARRDE : 96.83056355792034 \t N_evals : 100045 \n", "\tNelderMead : 9817.135238543873 \t N_evals : 100002 \n", "\tL_BFGS_B : 28731749346.948776 \t N_evals : 1827 \n", "\tDA : 7897.666034163657 \t N_evals : 100016 \n", "\tL_BFGS : 28960575391.590675 \t N_evals : 3004 \n", "\tScipy L_BFGS_B : 29753789678.50404 \t N_evals : 330 \n", "\tScipy DA : 3831.710700738001 \t N_evals : 46643 \n", "\tScipy NelderMead : 28602754549.99285 \t N_evals : 100000 \n", "\tMinuit Migrad : 29449489984.593414 \t N_evals : 1773 \n", "\n", "Function : func_2\n", "\tARRDE : 190.81799856352387 \t N_evals : 100045 \n", "\tNelderMead : 1854199.683945974 \t N_evals : 100009 \n", "\tL_BFGS_B : 1603191813016.7212 \t N_evals : 2583 \n", "\tDA : 227.3965489355769 \t N_evals : 100019 \n", "\tL_BFGS : 8.557274387291581e+17 \t N_evals : 1366 \n", "\tScipy L_BFGS_B : 8.787431660279418e+17 \t N_evals : 286 \n", "\tScipy DA : 346.82787769901154 \t N_evals : 48557 \n", "\tScipy NelderMead : 8.446879183409578e+17 \t N_evals : 100000 \n", "\tMinuit Migrad : 8.718807359108983e+17 \t N_evals : 1879 \n", "\n", "Function : func_3\n", "\tARRDE : 289.74478749131197 \t N_evals : 100045 \n", "\tNelderMead : 3310.400663445662 \t N_evals : 100007 \n", "\tL_BFGS_B : 18885.870763878527 \t N_evals : 2541 \n", "\tDA : 2621.050671689936 \t N_evals : 100007 \n", "\tL_BFGS : 18899.825614527406 \t N_evals : 1996 \n", "\tScipy L_BFGS_B : 1344022.1603730582 \t N_evals : 231 \n", "\tScipy DA : 1150.5078169139533 \t N_evals : 40978 \n", "\tScipy NelderMead : 1285496.3133188202 \t N_evals : 100000 \n", "\tMinuit Migrad : 1310937.769615607 \t N_evals : 2272 \n", "\n", "Function : func_4\n", "\tARRDE : 390.92624196320827 \t N_evals : 100045 \n", "\tNelderMead : 446.11001804426957 \t N_evals : 100004 \n", "\tL_BFGS_B : 5677.529444589855 \t N_evals : 2835 \n", "\tDA : 466.4269100745968 \t N_evals : 100007 \n", "\tL_BFGS : 5671.254691636418 \t N_evals : 4285 \n", "\tScipy L_BFGS_B : 5994.843024844297 \t N_evals : 231 \n", "\tScipy DA : 401.0061813702541 \t N_evals : 34180 \n", "\tScipy NelderMead : 5654.506626005817 \t N_evals : 100000 \n", "\tMinuit Migrad : 5741.84236422582 \t N_evals : 1905 \n", "\n", "Function : func_5\n", "\tARRDE : 490.9864869167989 \t N_evals : 100045 \n", "\tNelderMead : 528.0543001444947 \t N_evals : 100005 \n", "\tL_BFGS_B : 703.2789782526261 \t N_evals : 2625 \n", "\tDA : 504.7393338331721 \t N_evals : 100015 \n", "\tL_BFGS : 680.016041616948 \t N_evals : 2752 \n", "\tScipy L_BFGS_B : 734.3231692445454 \t N_evals : 231 \n", "\tScipy DA : 498.81169122212657 \t N_evals : 27976 \n", "\tScipy NelderMead : 694.5132926394868 \t N_evals : 100000 \n", "\tMinuit Migrad : 708.856895578421 \t N_evals : 2058 \n", "\n", "Function : func_6\n", "\tARRDE : 581.8905922969144 \t N_evals : 100045 \n", "\tNelderMead : 608.4447915907498 \t N_evals : 100010 \n", "\tL_BFGS_B : 721.2015503245066 \t N_evals : 1386 \n", "\tDA : 602.9642966824363 \t N_evals : 100020 \n", "\tL_BFGS : 714.9478579801329 \t N_evals : 1576 \n", "\tScipy L_BFGS_B : 739.2790662497016 \t N_evals : 231 \n", "\tScipy DA : 583.3255602274826 \t N_evals : 29912 \n", "\tScipy NelderMead : 707.7101765921658 \t N_evals : 100000 \n", "\tMinuit Migrad : 729.3492081143532 \t N_evals : 1644 \n", "\n", "Function : func_7\n", "\tARRDE : 692.340096509118 \t N_evals : 100045 \n", "\tNelderMead : 748.3061843240997 \t N_evals : 100011 \n", "\tL_BFGS_B : 883.6642792753314 \t N_evals : 2814 \n", "\tDA : 728.0326224714562 \t N_evals : 100022 \n", "\tL_BFGS : 884.5373069079724 \t N_evals : 5314 \n", "\tScipy L_BFGS_B : 958.6630628247756 \t N_evals : 330 \n", "\tScipy DA : 727.9939490065384 \t N_evals : 25281 \n", "\tScipy NelderMead : 895.9702732836614 \t N_evals : 100000 \n", "\tMinuit Migrad : 928.9892006470031 \t N_evals : 2160 \n", "\n", "Function : func_8\n", "\tARRDE : 784.8033708833176 \t N_evals : 100044 \n", "\tNelderMead : 823.9742135032108 \t N_evals : 100013 \n", "\tL_BFGS_B : 914.1475842840929 \t N_evals : 1701 \n", "\tDA : 825.7014548883765 \t N_evals : 100013 \n", "\tL_BFGS : 910.1843829812358 \t N_evals : 2521 \n", "\tScipy L_BFGS_B : 948.2088246300609 \t N_evals : 231 \n", "\tScipy DA : 815.560073127057 \t N_evals : 26964 \n", "\tScipy NelderMead : 906.3930849583663 \t N_evals : 100000 \n", "\tMinuit Migrad : 928.0306783950988 \t N_evals : 2015 \n", "\n", "Function : func_9\n", "\tARRDE : 861.5489585606445 \t N_evals : 100045 \n", "\tNelderMead : 941.1055341575693 \t N_evals : 100007 \n", "\tL_BFGS_B : 4070.905942714036 \t N_evals : 2100 \n", "\tDA : 1085.6995244083146 \t N_evals : 100019 \n", "\tL_BFGS : 3573.6646502394838 \t N_evals : 1681 \n", "\tScipy L_BFGS_B : 4298.614403571974 \t N_evals : 231 \n", "\tScipy DA : 904.6866906592247 \t N_evals : 27140 \n", "\tScipy NelderMead : 4121.933140539198 \t N_evals : 100000 \n", "\tMinuit Migrad : 4263.742343556215 \t N_evals : 1926 \n", "\n", "Function : func_10\n", "\tARRDE : 1291.5101019454646 \t N_evals : 100044 \n", "\tNelderMead : 1926.23798029281 \t N_evals : 100006 \n", "\tL_BFGS_B : 5817.954904305635 \t N_evals : 2184 \n", "\tDA : 2404.7894750325695 \t N_evals : 100003 \n", "\tL_BFGS : 4913.967036996218 \t N_evals : 4369 \n", "\tScipy L_BFGS_B : 6186.684522269911 \t N_evals : 572 \n", "\tScipy DA : 1742.5053069838914 \t N_evals : 27712 \n", "\tScipy NelderMead : 5870.978383346848 \t N_evals : 100000 \n", "\tMinuit Migrad : 6003.047903549202 \t N_evals : 2017 \n", "\n", "Function : func_11\n", "\tARRDE : 1069.2463178286446 \t N_evals : 100045 \n", "\tNelderMead : 1252.9494819552644 \t N_evals : 100009 \n", "\tL_BFGS_B : 63278370.57813622 \t N_evals : 2814 \n", "\tDA : 1110.5808431563298 \t N_evals : 100009 \n", "\tL_BFGS : 61902669.44180777 \t N_evals : 1954 \n", "\tScipy L_BFGS_B : 64656575.36827779 \t N_evals : 429 \n", "\tScipy DA : 1316.648756376054 \t N_evals : 28185 \n", "\tScipy NelderMead : 62021202.7254734 \t N_evals : 100000 \n", "\tMinuit Migrad : 63814535.807802685 \t N_evals : 1897 \n", "\n", "Function : func_12\n", "\tARRDE : 1277.037074442322 \t N_evals : 100045 \n", "\tNelderMead : 5958079.961154514 \t N_evals : 100008 \n", "\tL_BFGS_B : 5541602147.9776535 \t N_evals : 1617 \n", "\tDA : 4822056.101345285 \t N_evals : 100017 \n", "\tL_BFGS : 5544631263.221177 \t N_evals : 1555 \n", "\tScipy L_BFGS_B : 5783104835.920871 \t N_evals : 374 \n", "\tScipy DA : 3030091.4039554475 \t N_evals : 45026 \n", "\tScipy NelderMead : 5475372445.0849 \t N_evals : 100000 \n", "\tMinuit Migrad : 5631090187.513581 \t N_evals : 1798 \n", "\n", "Function : func_13\n", "\tARRDE : 1258.1110919955279 \t N_evals : 100045 \n", "\tNelderMead : 6537.012869793612 \t N_evals : 100010 \n", "\tL_BFGS_B : 2719519157.5831523 \t N_evals : 2058 \n", "\tDA : 2690.437172179469 \t N_evals : 100010 \n", "\tL_BFGS : 2751929242.580764 \t N_evals : 2857 \n", "\tScipy L_BFGS_B : 2862158514.131736 \t N_evals : 330 \n", "\tScipy DA : 3142.274139039956 \t N_evals : 35566 \n", "\tScipy NelderMead : 2718609833.8804708 \t N_evals : 100000 \n", "\tMinuit Migrad : 2818775081.1161194 \t N_evals : 2493 \n", "\n", "Function : func_14\n", "\tARRDE : 1385.8112701635682 \t N_evals : 100045 \n", "\tNelderMead : 1454.0210325603662 \t N_evals : 100004 \n", "\tL_BFGS_B : 2162545887.258267 \t N_evals : 2961 \n", "\tDA : 1629.0740812954368 \t N_evals : 100014 \n", "\tL_BFGS : 2120004034.6722066 \t N_evals : 1849 \n", "\tScipy L_BFGS_B : 2221549920.3859515 \t N_evals : 231 \n", "\tScipy DA : 5641.015967579858 \t N_evals : 26117 \n", "\tScipy NelderMead : 2119925976.3707871 \t N_evals : 100000 \n", "\tMinuit Migrad : 2176739777.888132 \t N_evals : 2109 \n", "\n", "Function : func_15\n", "\tARRDE : 1446.2174557915957 \t N_evals : 100045 \n", "\tNelderMead : 1881.8111880542826 \t N_evals : 100003 \n", "\tL_BFGS_B : 738874798.0053478 \t N_evals : 5859 \n", "\tDA : 5950.077257699132 \t N_evals : 100006 \n", "\tL_BFGS : 737914653.7655107 \t N_evals : 3907 \n", "\tScipy L_BFGS_B : 772590521.3713137 \t N_evals : 231 \n", "\tScipy DA : 28305.190381640183 \t N_evals : 29065 \n", "\tScipy NelderMead : 735845228.317282 \t N_evals : 100000 \n", "\tMinuit Migrad : 756097154.9217217 \t N_evals : 1684 \n", "\n", "Function : func_16\n", "\tARRDE : 1562.080730015805 \t N_evals : 100045 \n", "\tNelderMead : 1985.397714498681 \t N_evals : 100003 \n", "\tL_BFGS_B : 3307.9830646982 \t N_evals : 1995 \n", "\tDA : 1679.6080779416188 \t N_evals : 100006 \n", "\tL_BFGS : 3313.371895353559 \t N_evals : 2332 \n", "\tScipy L_BFGS_B : 3481.9366073390347 \t N_evals : 231 \n", "\tScipy DA : 1717.5695698241586 \t N_evals : 27393 \n", "\tScipy NelderMead : 3296.050924438243 \t N_evals : 100000 \n", "\tMinuit Migrad : 3400.3190000219884 \t N_evals : 2207 \n", "\n", "Function : func_17\n", "\tARRDE : 1701.9478538799324 \t N_evals : 100044 \n", "\tNelderMead : 1770.4900997295026 \t N_evals : 100011 \n", "\tL_BFGS_B : 3143.0910865814794 \t N_evals : 2373 \n", "\tDA : 1801.0656640107009 \t N_evals : 100012 \n", "\tL_BFGS : 3171.6571060808046 \t N_evals : 2122 \n", "\tScipy L_BFGS_B : 3229.228726113192 \t N_evals : 264 \n", "\tScipy DA : 1698.8477433587266 \t N_evals : 26139 \n", "\tScipy NelderMead : 3149.978082679083 \t N_evals : 100000 \n", "\tMinuit Migrad : 3238.1661274753487 \t N_evals : 1865 \n", "\n", "Function : func_18\n", "\tARRDE : 1758.10111370455 \t N_evals : 100045 \n", "\tNelderMead : 4309.680691305517 \t N_evals : 100012 \n", "\tL_BFGS_B : 13918193280.505915 \t N_evals : 2226 \n", "\tDA : 1870.6388550331528 \t N_evals : 100017 \n", "\tL_BFGS : 14133169170.50625 \t N_evals : 1366 \n", "\tScipy L_BFGS_B : 14664714758.518076 \t N_evals : 352 \n", "\tScipy DA : 3182.9506520592604 \t N_evals : 28328 \n", "\tScipy NelderMead : 13917262744.372921 \t N_evals : 100000 \n", "\tMinuit Migrad : 14134444950.779884 \t N_evals : 2035 \n", "\n", "Function : func_19\n", "\tARRDE : 1844.308565916834 \t N_evals : 100045 \n", "\tNelderMead : 6512.045172077545 \t N_evals : 100012 \n", "\tL_BFGS_B : 11877139607.511427 \t N_evals : 4074 \n", "\tDA : 2670.000623265564 \t N_evals : 100013 \n", "\tL_BFGS : 11796436336.716541 \t N_evals : 5629 \n", "\tScipy L_BFGS_B : 12294166863.646753 \t N_evals : 374 \n", "\tScipy DA : 1904.090232568472 \t N_evals : 27041 \n", "\tScipy NelderMead : 11738533771.206179 \t N_evals : 100000 \n", "\tMinuit Migrad : 12068134904.045794 \t N_evals : 2168 \n", "\n", "Function : func_20\n", "\tARRDE : 1967.5624369670609 \t N_evals : 100045 \n", "\tNelderMead : 2109.1630161029234 \t N_evals : 100011 \n", "\tL_BFGS_B : 3039.7925105061354 \t N_evals : 5607 \n", "\tDA : 2010.754687902372 \t N_evals : 100018 \n", "\tL_BFGS : 3053.9915973064653 \t N_evals : 2395 \n", "\tScipy L_BFGS_B : 3155.69367995363 \t N_evals : 297 \n", "\tScipy DA : 1993.9921773404292 \t N_evals : 25853 \n", "\tScipy NelderMead : 3022.7770263125717 \t N_evals : 100000 \n", "\tMinuit Migrad : 3097.243482684427 \t N_evals : 1893 \n", "\n", "Function : func_21\n", "\tARRDE : 2267.772664840567 \t N_evals : 100045 \n", "\tNelderMead : 2158.048922552143 \t N_evals : 100005 \n", "\tL_BFGS_B : 2710.0711774818797 \t N_evals : 2646 \n", "\tDA : 2286.571393750535 \t N_evals : 100016 \n", "\tL_BFGS : 2730.589384670544 \t N_evals : 4411 \n", "\tScipy L_BFGS_B : 2812.879762552969 \t N_evals : 462 \n", "\tScipy DA : 2265.424834398556 \t N_evals : 24940 \n", "\tScipy NelderMead : 2702.293910067494 \t N_evals : 100000 \n", "\tMinuit Migrad : 2783.309889088772 \t N_evals : 1922 \n", "\n", "Function : func_22\n", "\tARRDE : 2204.6080291921417 \t N_evals : 100045 \n", "\tNelderMead : 2296.0613458576445 \t N_evals : 100001 \n", "\tL_BFGS_B : 5170.091009056358 \t N_evals : 2436 \n", "\tDA : 2282.4670439968495 \t N_evals : 100003 \n", "\tL_BFGS : 5090.736892756032 \t N_evals : 1849 \n", "\tScipy L_BFGS_B : 5317.590881922163 \t N_evals : 231 \n", "\tScipy DA : 2270.9766464423697 \t N_evals : 24467 \n", "\tScipy NelderMead : 5087.9524178900665 \t N_evals : 100000 \n", "\tMinuit Migrad : 5247.07163479223 \t N_evals : 1874 \n", "\n", "Function : func_23\n", "\tARRDE : 2515.8902268164375 \t N_evals : 100045 \n", "\tNelderMead : 2573.5452774383907 \t N_evals : 100009 \n", "\tL_BFGS_B : 4123.872362233166 \t N_evals : 2058 \n", "\tDA : 2589.3866125867667 \t N_evals : 100018 \n", "\tL_BFGS : 4201.477922746551 \t N_evals : 1534 \n", "\tScipy L_BFGS_B : 4350.549105457307 \t N_evals : 429 \n", "\tScipy DA : 2575.7102966670686 \t N_evals : 27514 \n", "\tScipy NelderMead : 4155.706888004777 \t N_evals : 100000 \n", "\tMinuit Migrad : 4244.609653570781 \t N_evals : 1949 \n", "\n", "Function : func_24\n", "\tARRDE : 2438.850523278313 \t N_evals : 100045 \n", "\tNelderMead : 2692.1758568809346 \t N_evals : 100010 \n", "\tL_BFGS_B : 3279.4624165838736 \t N_evals : 3444 \n", "\tDA : 2747.004107134658 \t N_evals : 100006 \n", "\tL_BFGS : 3256.6063159037485 \t N_evals : 2437 \n", "\tScipy L_BFGS_B : 3466.589818121219 \t N_evals : 231 \n", "\tScipy DA : 2720.1055663476213 \t N_evals : 23763 \n", "\tScipy NelderMead : 3247.7772621543445 \t N_evals : 100000 \n", "\tMinuit Migrad : 3358.949414664634 \t N_evals : 2139 \n", "\n", "Function : func_25\n", "\tARRDE : 2831.140911028333 \t N_evals : 100045 \n", "\tNelderMead : 2878.9624095212316 \t N_evals : 100009 \n", "\tL_BFGS_B : 4649.929952341991 \t N_evals : 2415 \n", "\tDA : 3002.075405075922 \t N_evals : 100018 \n", "\tL_BFGS : 4664.0576976751245 \t N_evals : 3109 \n", "\tScipy L_BFGS_B : 4776.826739487109 \t N_evals : 231 \n", "\tScipy DA : 2846.818656948672 \t N_evals : 25094 \n", "\tScipy NelderMead : 4608.0611863632475 \t N_evals : 100000 \n", "\tMinuit Migrad : 4784.329907802706 \t N_evals : 1856 \n", "\n", "Function : func_26\n", "\tARRDE : 2721.1049870271704 \t N_evals : 100045 \n", "\tNelderMead : 3101.5259269133307 \t N_evals : 100009 \n", "\tL_BFGS_B : 5526.984698207056 \t N_evals : 2541 \n", "\tDA : 3334.661780225864 \t N_evals : 100002 \n", "\tL_BFGS : 5541.256276979093 \t N_evals : 3865 \n", "\tScipy L_BFGS_B : 5838.06093468493 \t N_evals : 319 \n", "\tScipy DA : 2972.7828607569286 \t N_evals : 28933 \n", "\tScipy NelderMead : 5502.780373103895 \t N_evals : 100000 \n", "\tMinuit Migrad : 5702.515365377215 \t N_evals : 1989 \n", "\n", "Function : func_27\n", "\tARRDE : 2971.8407058448115 \t N_evals : 100045 \n", "\tNelderMead : 3026.1490154599546 \t N_evals : 100008 \n", "\tL_BFGS_B : 4588.710025815855 \t N_evals : 4830 \n", "\tDA : 3110.688243486055 \t N_evals : 100016 \n", "\tL_BFGS : 4922.095651982306 \t N_evals : 1933 \n", "\tScipy L_BFGS_B : 5075.269459066873 \t N_evals : 231 \n", "\tScipy DA : 3041.6243007617695 \t N_evals : 23477 \n", "\tScipy NelderMead : 4836.068844317065 \t N_evals : 100000 \n", "\tMinuit Migrad : 5009.794037492836 \t N_evals : 1982 \n", "\n", "Function : func_28\n", "\tARRDE : 3032.9149896087315 \t N_evals : 100045 \n", "\tNelderMead : 3179.4533923434105 \t N_evals : 100009 \n", "\tL_BFGS_B : 4339.758325755842 \t N_evals : 1512 \n", "\tDA : 3469.9402344913833 \t N_evals : 100016 \n", "\tL_BFGS : 4268.639519427811 \t N_evals : 1408 \n", "\tScipy L_BFGS_B : 4620.746460926448 \t N_evals : 231 \n", "\tScipy DA : 3368.431252924286 \t N_evals : 25743 \n", "\tScipy NelderMead : 4326.0290459127355 \t N_evals : 100000 \n", "\tMinuit Migrad : 4466.16896650251 \t N_evals : 1894 \n", "\n", "Function : func_29\n", "\tARRDE : 3106.586982849417 \t N_evals : 100045 \n", "\tNelderMead : 3096.531302375519 \t N_evals : 100021 \n", "\tL_BFGS_B : 47773.78202137524 \t N_evals : 2373 \n", "\tDA : 3141.6130415809744 \t N_evals : 100010 \n", "\tL_BFGS : 47244.06567485894 \t N_evals : 2752 \n", "\tScipy L_BFGS_B : 49247.79514126138 \t N_evals : 330 \n", "\tScipy DA : 3152.3085907140894 \t N_evals : 25919 \n", "\tScipy NelderMead : 46714.00072793446 \t N_evals : 100000 \n", "\tMinuit Migrad : 47836.381445710744 \t N_evals : 1879 \n", "\n", "Function : func_30\n", "\tARRDE : 3454.1126204808224 \t N_evals : 100045 \n", "\tNelderMead : 22918.574075735993 \t N_evals : 100001 \n", "\tL_BFGS_B : 455532080.98460054 \t N_evals : 2121 \n", "\tDA : 106916.03853844912 \t N_evals : 100008 \n", "\tL_BFGS : 445170321.4239029 \t N_evals : 2395 \n", "\tScipy L_BFGS_B : 505937779.04247105 \t N_evals : 231 \n", "\tScipy DA : 109209.9207387307 \t N_evals : 59799 \n", "\tScipy NelderMead : 485232128.89190733 \t N_evals : 100000 \n", "\tMinuit Migrad : 495684739.2473731 \t N_evals : 1923 \n", "\n" ] } ], "source": [ "# Counter for function evaluations\n", "N = 0\n", "\n", "# Noise ratio for function evaluations (set to zero for noiseless optimization)\n", "noise_ratio = 0.01\n", "\n", "# Dictionary to store the number of evaluations per algorithm\n", "N_dict = {}\n", "\n", "# Maximum number of function evaluations allowed per optimization run\n", "Nmaxeval = 100000 \n", "\n", "# Dimensionality of the optimization problem\n", "dimension = 10 \n", "\n", "# Number of times each function should be tested (repetitions)\n", "NRuns = 1 \n", "\n", "# The CEC benchmark year to use for function selection\n", "year = 2017 \n", "\n", "# Dictionary mapping CEC benchmark years to their respective function sets\n", "func_numbers_dict = {\n", " 2022: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], \n", " 2020: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], \n", " 2019: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], \n", " 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], \n", " 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],\n", "}\n", "\n", "# Retrieve the function numbers for the selected benchmark year\n", "func_numbers = func_numbers_dict[year]\n", "\n", "# Using a thread pool to execute optimization tasks in parallel\n", "with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:\n", " futures = [] # List to store future objects representing scheduled tasks\n", "\n", " # Run optimization tests multiple times (for averaging results)\n", " for k in range(NRuns):\n", " for j in func_numbers:\n", " # Submit the optimization test function to the thread pool\n", " futures.append(executor.submit(run_test_optimization, j, dimension, year, k, Nmaxeval))\n", "\n", " # Wait for all submitted tasks to complete\n", " concurrent.futures.wait(futures)\n", "\n", " # Retrieve and process results (ensure all threads completed successfully)\n", " for f in futures:\n", " f.result()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Noise Level: 0.0001 " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Function : func_1\n", "\tARRDE : 99.97398954921276 \t N_evals : 100045 \n", "\tNelderMead : 250425718.5703963 \t N_evals : 100003 \n", "\tL_BFGS_B : 2878.6106795768783 \t N_evals : 3108 \n", "\tDA : 9035.479444262133 \t N_evals : 100011 \n", "\tL_BFGS : 1836.2246069441626 \t N_evals : 2416 \n", "\tScipy L_BFGS_B : 29976884575.383377 \t N_evals : 418 \n", "\tScipy DA : 662.9100090171434 \t N_evals : 53375 \n", "\tScipy NelderMead : 29963325809.53629 \t N_evals : 100000 \n", "\tMinuit Migrad : 29972756324.34399 \t N_evals : 3175 \n", "\n", "Function : func_2\n", "\tARRDE : 199.92291590576446 \t N_evals : 100044 \n", "\tNelderMead : 1540.4934804779364 \t N_evals : 100006 \n", "\tL_BFGS_B : 7.502755353132613e+17 \t N_evals : 1386 \n", "\tDA : 199.92597744190107 \t N_evals : 100012 \n", "\tL_BFGS : 7.564475030591148e+17 \t N_evals : 1366 \n", "\tScipy L_BFGS_B : 8.869696164696824e+17 \t N_evals : 275 \n", "\tScipy DA : 199.95752105397563 \t N_evals : 81282 \n", "\tScipy NelderMead : 8.865879677833524e+17 \t N_evals : 100000 \n", "\tMinuit Migrad : 2.172880786247e+17 \t N_evals : 2958 \n", "\n", "Function : func_3\n", "\tARRDE : 299.8984571313125 \t N_evals : 100045 \n", "\tNelderMead : 1667.8159473605817 \t N_evals : 100001 \n", "\tL_BFGS_B : 419.0537006796958 \t N_evals : 3171 \n", "\tDA : 299.9989724723881 \t N_evals : 100009 \n", "\tL_BFGS : 490.4974525684888 \t N_evals : 7078 \n", "\tScipy L_BFGS_B : 1343077.2922585437 \t N_evals : 330 \n", "\tScipy DA : 319.63136609177957 \t N_evals : 100369 \n", "\tScipy NelderMead : 1340121.1354931558 \t N_evals : 100000 \n", "\tMinuit Migrad : 21120.405284785265 \t N_evals : 2829 \n", "\n", "Function : func_4\n", "\tARRDE : 399.9853371560608 \t N_evals : 100045 \n", "\tNelderMead : 447.8124807602607 \t N_evals : 100003 \n", "\tL_BFGS_B : 509.2401676227964 \t N_evals : 2205 \n", "\tDA : 406.3056915658384 \t N_evals : 100021 \n", "\tL_BFGS : 408.07074838736366 \t N_evals : 6574 \n", "\tScipy L_BFGS_B : 5902.144746857225 \t N_evals : 330 \n", "\tScipy DA : 400.56084371713723 \t N_evals : 33443 \n", "\tScipy NelderMead : 5898.885416913537 \t N_evals : 100000 \n", "\tMinuit Migrad : 5321.304945212138 \t N_evals : 2682 \n", "\n", "Function : func_5\n", "\tARRDE : 503.02399633384124 \t N_evals : 100045 \n", "\tNelderMead : 527.2133144584726 \t N_evals : 100003 \n", "\tL_BFGS_B : 637.5515319554121 \t N_evals : 4158 \n", "\tDA : 528.6922555478317 \t N_evals : 100017 \n", "\tL_BFGS : 647.1389818644826 \t N_evals : 2101 \n", "\tScipy L_BFGS_B : 726.5457356437863 \t N_evals : 231 \n", "\tScipy DA : 521.8358710939284 \t N_evals : 33047 \n", "\tScipy NelderMead : 726.3621724997661 \t N_evals : 100000 \n", "\tMinuit Migrad : 726.6251574494711 \t N_evals : 2747 \n", "\n", "Function : func_6\n", "\tARRDE : 599.8643705717615 \t N_evals : 100045 \n", "\tNelderMead : 602.1756319144124 \t N_evals : 100005 \n", "\tL_BFGS_B : 706.4480765011948 \t N_evals : 3108 \n", "\tDA : 599.9289229827007 \t N_evals : 100007 \n", "\tL_BFGS : 659.2476374135205 \t N_evals : 5860 \n", "\tScipy L_BFGS_B : 741.682247421374 \t N_evals : 319 \n", "\tScipy DA : 599.9748468204334 \t N_evals : 37854 \n", "\tScipy NelderMead : 741.4694017160443 \t N_evals : 100000 \n", "\tMinuit Migrad : 741.7011753171744 \t N_evals : 3200 \n", "\n", "Function : func_7\n", "\tARRDE : 713.0785809072186 \t N_evals : 100045 \n", "\tNelderMead : 738.5481146869507 \t N_evals : 100002 \n", "\tL_BFGS_B : 812.7922927465183 \t N_evals : 4095 \n", "\tDA : 734.8082809566149 \t N_evals : 100016 \n", "\tL_BFGS : 812.8814098426648 \t N_evals : 5356 \n", "\tScipy L_BFGS_B : 939.7509136389721 \t N_evals : 341 \n", "\tScipy DA : 734.5558157334877 \t N_evals : 38503 \n", "\tScipy NelderMead : 939.3452071134508 \t N_evals : 100000 \n", "\tMinuit Migrad : 939.5826652934305 \t N_evals : 2694 \n", "\n", "Function : func_8\n", "\tARRDE : 805.0114531673278 \t N_evals : 100045 \n", "\tNelderMead : 816.8299168627145 \t N_evals : 100003 \n", "\tL_BFGS_B : 872.2253623881882 \t N_evals : 9513 \n", "\tDA : 810.690055576169 \t N_evals : 100012 \n", "\tL_BFGS : 875.0346640863272 \t N_evals : 4033 \n", "\tScipy L_BFGS_B : 946.697108726903 \t N_evals : 231 \n", "\tScipy DA : 811.7749801288732 \t N_evals : 42111 \n", "\tScipy NelderMead : 946.2408891832066 \t N_evals : 100000 \n", "\tMinuit Migrad : 946.4933101563973 \t N_evals : 3277 \n", "\n", "Function : func_9\n", "\tARRDE : 899.7035620261589 \t N_evals : 100044 \n", "\tNelderMead : 999.6556957408797 \t N_evals : 100006 \n", "\tL_BFGS_B : 1784.1129682766639 \t N_evals : 1911 \n", "\tDA : 911.1174052039307 \t N_evals : 100012 \n", "\tL_BFGS : 1830.8259439142855 \t N_evals : 2563 \n", "\tScipy L_BFGS_B : 4305.999378721955 \t N_evals : 297 \n", "\tScipy DA : 946.4684956531622 \t N_evals : 47138 \n", "\tScipy NelderMead : 4303.763719320696 \t N_evals : 100000 \n", "\tMinuit Migrad : 4305.436456945482 \t N_evals : 2825 \n", "\n", "Function : func_10\n", "\tARRDE : 1143.3215043657358 \t N_evals : 100044 \n", "\tNelderMead : 1860.4366709331052 \t N_evals : 100009 \n", "\tL_BFGS_B : 3139.678256989393 \t N_evals : 6174 \n", "\tDA : 1953.7085543813878 \t N_evals : 100018 \n", "\tL_BFGS : 3080.1655135206997 \t N_evals : 2395 \n", "\tScipy L_BFGS_B : 6138.26368614968 \t N_evals : 374 \n", "\tScipy DA : 1718.7907386738575 \t N_evals : 37205 \n", "\tScipy NelderMead : 6135.599067104017 \t N_evals : 100000 \n", "\tMinuit Migrad : 6137.395909624754 \t N_evals : 2709 \n", "\n", "Function : func_11\n", "\tARRDE : 1104.8680312364263 \t N_evals : 100045 \n", "\tNelderMead : 1158.7748493665379 \t N_evals : 100001 \n", "\tL_BFGS_B : 1131.0180009853088 \t N_evals : 3612 \n", "\tDA : 1115.116661605461 \t N_evals : 100018 \n", "\tL_BFGS : 1134.0201840044315 \t N_evals : 2983 \n", "\tScipy L_BFGS_B : 65031667.059521675 \t N_evals : 385 \n", "\tScipy DA : 1108.2601099700066 \t N_evals : 53507 \n", "\tScipy NelderMead : 64998574.46818639 \t N_evals : 100000 \n", "\tMinuit Migrad : 65015242.45812702 \t N_evals : 2816 \n", "\n", "Function : func_12\n", "\tARRDE : 1199.83952566857 \t N_evals : 100044 \n", "\tNelderMead : 8218.914798836537 \t N_evals : 100003 \n", "\tL_BFGS_B : 7454.747343308128 \t N_evals : 2247 \n", "\tDA : 1500.6445406376884 \t N_evals : 100015 \n", "\tL_BFGS : 8224.858415559303 \t N_evals : 2773 \n", "\tScipy L_BFGS_B : 5721979276.617425 \t N_evals : 231 \n", "\tScipy DA : 396599.0214210665 \t N_evals : 100108 \n", "\tScipy NelderMead : 5718574595.373932 \t N_evals : 100000 \n", "\tMinuit Migrad : 5720238282.895653 \t N_evals : 2757 \n", "\n", "Function : func_13\n", "\tARRDE : 1302.8286117272523 \t N_evals : 100044 \n", "\tNelderMead : 1492.0845792883574 \t N_evals : 100008 \n", "\tL_BFGS_B : 11425.99617078585 \t N_evals : 3192 \n", "\tDA : 1336.8001996003577 \t N_evals : 100017 \n", "\tL_BFGS : 10564.565700710815 \t N_evals : 3025 \n", "\tScipy L_BFGS_B : 2841737598.549046 \t N_evals : 286 \n", "\tScipy DA : 20478.683189831783 \t N_evals : 43167 \n", "\tScipy NelderMead : 2840391391.153341 \t N_evals : 100000 \n", "\tMinuit Migrad : 1182363450.77991 \t N_evals : 2700 \n", "\n", "Function : func_14\n", "\tARRDE : 1401.668918151325 \t N_evals : 100045 \n", "\tNelderMead : 1587.7026776897246 \t N_evals : 100009 \n", "\tL_BFGS_B : 7935.741641268469 \t N_evals : 2814 \n", "\tDA : 1628.9088074074093 \t N_evals : 100013 \n", "\tL_BFGS : 6257.007269433303 \t N_evals : 2458 \n", "\tScipy L_BFGS_B : 2215935475.817911 \t N_evals : 319 \n", "\tScipy DA : 2188.11299798793 \t N_evals : 41451 \n", "\tScipy NelderMead : 2214414132.28249 \t N_evals : 100000 \n", "\tMinuit Migrad : 2214951266.7481685 \t N_evals : 3030 \n", "\n", "Function : func_15\n", "\tARRDE : 1499.758241892499 \t N_evals : 100045 \n", "\tNelderMead : 1817.036105926235 \t N_evals : 100008 \n", "\tL_BFGS_B : 17498.438421452483 \t N_evals : 3255 \n", "\tDA : 1504.2407142718987 \t N_evals : 100018 \n", "\tL_BFGS : 21151.504600980043 \t N_evals : 2962 \n", "\tScipy L_BFGS_B : 769631833.7790315 \t N_evals : 231 \n", "\tScipy DA : 1670.1669182975747 \t N_evals : 44883 \n", "\tScipy NelderMead : 769222486.7922529 \t N_evals : 100000 \n", "\tMinuit Migrad : 769371639.4157549 \t N_evals : 2913 \n", "\n", "Function : func_16\n", "\tARRDE : 1602.9659072261927 \t N_evals : 100045 \n", "\tNelderMead : 1659.276760310669 \t N_evals : 100006 \n", "\tL_BFGS_B : 2511.2601189739726 \t N_evals : 2730 \n", "\tDA : 1723.219374266837 \t N_evals : 100022 \n", "\tL_BFGS : 2417.1605592695405 \t N_evals : 2416 \n", "\tScipy L_BFGS_B : 3438.226214139711 \t N_evals : 385 \n", "\tScipy DA : 1869.6711114003672 \t N_evals : 49921 \n", "\tScipy NelderMead : 3436.3474073438074 \t N_evals : 100000 \n", "\tMinuit Migrad : 3437.133409730512 \t N_evals : 2819 \n", "\n", "Function : func_17\n", "\tARRDE : 1701.4304725436027 \t N_evals : 100045 \n", "\tNelderMead : 1782.034071923235 \t N_evals : 100005 \n", "\tL_BFGS_B : 2551.8382100108624 \t N_evals : 4116 \n", "\tDA : 1705.4583677800651 \t N_evals : 100007 \n", "\tL_BFGS : 1834.8988726658097 \t N_evals : 2122 \n", "\tScipy L_BFGS_B : 3283.2709171921733 \t N_evals : 341 \n", "\tScipy DA : 1758.2362500628446 \t N_evals : 35093 \n", "\tScipy NelderMead : 3281.508828370808 \t N_evals : 100000 \n", "\tMinuit Migrad : 3282.494897207339 \t N_evals : 2820 \n", "\n", "Function : func_18\n", "\tARRDE : 1820.4132209366423 \t N_evals : 100045 \n", "\tNelderMead : 4098.563279748932 \t N_evals : 100008 \n", "\tL_BFGS_B : 8073.532915808978 \t N_evals : 2982 \n", "\tDA : 1875.651813435142 \t N_evals : 100021 \n", "\tL_BFGS : 3014.31728790276 \t N_evals : 1639 \n", "\tScipy L_BFGS_B : 14468711922.636732 \t N_evals : 374 \n", "\tScipy DA : 24331.147625435282 \t N_evals : 43838 \n", "\tScipy NelderMead : 14461707174.241901 \t N_evals : 100000 \n", "\tMinuit Migrad : 14466465837.632093 \t N_evals : 2947 \n", "\n", "Function : func_19\n", "\tARRDE : 1900.722250593314 \t N_evals : 100045 \n", "\tNelderMead : 2038.1319162890552 \t N_evals : 100011 \n", "\tL_BFGS_B : 5991.705480969812 \t N_evals : 3549 \n", "\tDA : 1911.4488118003471 \t N_evals : 100002 \n", "\tL_BFGS : 2125.503666966294 \t N_evals : 4159 \n", "\tScipy L_BFGS_B : 12291153135.940708 \t N_evals : 319 \n", "\tScipy DA : 5624.405233596111 \t N_evals : 49481 \n", "\tScipy NelderMead : 12283832540.37543 \t N_evals : 100000 \n", "\tMinuit Migrad : 12287946952.6033 \t N_evals : 2969 \n", "\n", "Function : func_20\n", "\tARRDE : 1999.3375271133614 \t N_evals : 100044 \n", "\tNelderMead : 2103.139451897375 \t N_evals : 100005 \n", "\tL_BFGS_B : 2445.409159240669 \t N_evals : 4473 \n", "\tDA : 2007.869068629202 \t N_evals : 100010 \n", "\tL_BFGS : 2446.036812421946 \t N_evals : 4873 \n", "\tScipy L_BFGS_B : 3152.5764066816378 \t N_evals : 352 \n", "\tScipy DA : 2002.2481530395007 \t N_evals : 53529 \n", "\tScipy NelderMead : 3150.9713472833846 \t N_evals : 100000 \n", "\tMinuit Migrad : 3151.5909459292975 \t N_evals : 2846 \n", "\n", "Function : func_21\n", "\tARRDE : 2206.394295799416 \t N_evals : 100045 \n", "\tNelderMead : 2214.1048401020817 \t N_evals : 100006 \n", "\tL_BFGS_B : 2425.327305583956 \t N_evals : 4116 \n", "\tDA : 2224.5240114051862 \t N_evals : 100014 \n", "\tL_BFGS : 2471.6097880841917 \t N_evals : 3277 \n", "\tScipy L_BFGS_B : 2828.7570421783885 \t N_evals : 484 \n", "\tScipy DA : 2207.8003909300096 \t N_evals : 40296 \n", "\tScipy NelderMead : 2827.236064961357 \t N_evals : 100000 \n", "\tMinuit Migrad : 2828.2972738335247 \t N_evals : 2912 \n", "\n", "Function : func_22\n", "\tARRDE : 2220.367848829268 \t N_evals : 100045 \n", "\tNelderMead : 2320.268416811298 \t N_evals : 100008 \n", "\tL_BFGS_B : 4630.276571387268 \t N_evals : 2856 \n", "\tDA : 2306.141702244525 \t N_evals : 100010 \n", "\tL_BFGS : 4209.402614857713 \t N_evals : 2920 \n", "\tScipy L_BFGS_B : 5302.009855794798 \t N_evals : 231 \n", "\tScipy DA : 2303.024508494588 \t N_evals : 40527 \n", "\tScipy NelderMead : 5300.384358597136 \t N_evals : 100000 \n", "\tMinuit Migrad : 5301.595205745655 \t N_evals : 2940 \n", "\n", "Function : func_23\n", "\tARRDE : 2606.592474210589 \t N_evals : 100045 \n", "\tNelderMead : 2651.427284034966 \t N_evals : 100002 \n", "\tL_BFGS_B : 3423.1256422964907 \t N_evals : 1848 \n", "\tDA : 2633.8037896398746 \t N_evals : 100019 \n", "\tL_BFGS : 3311.0711938659847 \t N_evals : 9409 \n", "\tScipy L_BFGS_B : 4335.936069420504 \t N_evals : 539 \n", "\tScipy DA : 2628.4436752123015 \t N_evals : 34378 \n", "\tScipy NelderMead : 4334.1049847947415 \t N_evals : 100000 \n", "\tMinuit Migrad : 4335.025486519908 \t N_evals : 3116 \n", "\n", "Function : func_24\n", "\tARRDE : 2499.144448050211 \t N_evals : 100044 \n", "\tNelderMead : 2752.3196646159877 \t N_evals : 100010 \n", "\tL_BFGS_B : 3347.1063335395957 \t N_evals : 1575 \n", "\tDA : 2770.646656881288 \t N_evals : 100005 \n", "\tL_BFGS : 3391.3801807681907 \t N_evals : 1597 \n", "\tScipy L_BFGS_B : 3391.816500979647 \t N_evals : 363 \n", "\tScipy DA : 2769.2948015817346 \t N_evals : 31441 \n", "\tScipy NelderMead : 3390.7678073998563 \t N_evals : 100000 \n", "\tMinuit Migrad : 3391.5341428599586 \t N_evals : 2710 \n", "\n", "Function : func_25\n", "\tARRDE : 2897.0411403772046 \t N_evals : 100045 \n", "\tNelderMead : 2947.501163702278 \t N_evals : 100009 \n", "\tL_BFGS_B : 3000.410324448454 \t N_evals : 7644 \n", "\tDA : 2899.7701997629674 \t N_evals : 100020 \n", "\tL_BFGS : 3036.5531127906793 \t N_evals : 4180 \n", "\tScipy L_BFGS_B : 4820.403803226335 \t N_evals : 429 \n", "\tScipy DA : 2948.129277541235 \t N_evals : 35885 \n", "\tScipy NelderMead : 4818.626630537185 \t N_evals : 100000 \n", "\tMinuit Migrad : 4820.013072891607 \t N_evals : 3263 \n", "\n", "Function : func_26\n", "\tARRDE : 2599.1997422579207 \t N_evals : 100045 \n", "\tNelderMead : 3266.8721460303177 \t N_evals : 100006 \n", "\tL_BFGS_B : 5314.837265835571 \t N_evals : 4956 \n", "\tDA : 2799.153462455562 \t N_evals : 100004 \n", "\tL_BFGS : 2799.6534573138742 \t N_evals : 6175 \n", "\tScipy L_BFGS_B : 5734.11658871078 \t N_evals : 231 \n", "\tScipy DA : 2900.1655932880462 \t N_evals : 47688 \n", "\tScipy NelderMead : 5731.425620692347 \t N_evals : 100000 \n", "\tMinuit Migrad : 5732.784984577089 \t N_evals : 2692 \n", "\n", "Function : func_27\n", "\tARRDE : 3088.635718377062 \t N_evals : 100045 \n", "\tNelderMead : 3102.138871019347 \t N_evals : 100008 \n", "\tL_BFGS_B : 3985.8805165281524 \t N_evals : 7266 \n", "\tDA : 3186.1616657069244 \t N_evals : 100018 \n", "\tL_BFGS : 3169.36487931358 \t N_evals : 5923 \n", "\tScipy L_BFGS_B : 5055.848496956892 \t N_evals : 374 \n", "\tScipy DA : 3097.135530125197 \t N_evals : 36864 \n", "\tScipy NelderMead : 5053.793363768702 \t N_evals : 100000 \n", "\tMinuit Migrad : 3170.9339782155957 \t N_evals : 3012 \n", "\n", "Function : func_28\n", "\tARRDE : 3099.1831041104274 \t N_evals : 100045 \n", "\tNelderMead : 3233.5882097224417 \t N_evals : 100007 \n", "\tL_BFGS_B : 4494.541029012757 \t N_evals : 1722 \n", "\tDA : 3215.8538293297406 \t N_evals : 100018 \n", "\tL_BFGS : 3843.5869813167674 \t N_evals : 5965 \n", "\tScipy L_BFGS_B : 4517.030500145132 \t N_evals : 231 \n", "\tScipy DA : 3217.182640302305 \t N_evals : 55729 \n", "\tScipy NelderMead : 4515.347789193575 \t N_evals : 100000 \n", "\tMinuit Migrad : 3388.0033666690283 \t N_evals : 3244 \n", "\n", "Function : func_29\n", "\tARRDE : 3146.818557745588 \t N_evals : 100045 \n", "\tNelderMead : 3223.8334484851225 \t N_evals : 100002 \n", "\tL_BFGS_B : 3538.1805637517396 \t N_evals : 3318 \n", "\tDA : 3198.108510631354 \t N_evals : 100020 \n", "\tL_BFGS : 3569.2943762295795 \t N_evals : 2185 \n", "\tScipy L_BFGS_B : 48955.04401106232 \t N_evals : 231 \n", "\tScipy DA : 3243.6696947949386 \t N_evals : 36369 \n", "\tScipy NelderMead : 48936.56395404345 \t N_evals : 100000 \n", "\tMinuit Migrad : 3432.758653277318 \t N_evals : 3140 \n", "\n", "Function : func_30\n", "\tARRDE : 3447.526135652937 \t N_evals : 100044 \n", "\tNelderMead : 15054.496189489022 \t N_evals : 100008 \n", "\tL_BFGS_B : 46768.59201285958 \t N_evals : 5397 \n", "\tDA : 1888436.1830356773 \t N_evals : 100013 \n", "\tL_BFGS : 9773.071862772898 \t N_evals : 2752 \n", "\tScipy L_BFGS_B : 506159534.8138832 \t N_evals : 231 \n", "\tScipy DA : 87838.78383967647 \t N_evals : 100089 \n", "\tScipy NelderMead : 505859172.9137379 \t N_evals : 100000 \n", "\tMinuit Migrad : 505959731.10538256 \t N_evals : 2769 \n", "\n" ] } ], "source": [ "# Noise ratio for function evaluations (set to zero for noiseless optimization)\n", "noise_ratio = 1e-4\n", "\n", "# Using a thread pool to execute optimization tasks in parallel\n", "with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:\n", " futures = [] # List to store future objects representing scheduled tasks\n", "\n", " # Run optimization tests multiple times (for averaging results)\n", " for k in range(NRuns):\n", " for j in func_numbers:\n", " # Submit the optimization test function to the thread pool\n", " futures.append(executor.submit(run_test_optimization, j, dimension, year, k, Nmaxeval))\n", "\n", " # Wait for all submitted tasks to complete\n", " concurrent.futures.wait(futures)\n", "\n", " # Retrieve and process results (ensure all threads completed successfully)\n", " for f in futures:\n", " f.result()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Noise Level : 1e-6" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Function : func_1\n", "\tARRDE : 99.99965568441243 \t N_evals : 100045 \n", "\tNelderMead : 411510483.0143577 \t N_evals : 100008 \n", "\tL_BFGS_B : 99.99974266892346 \t N_evals : 3255 \n", "\tDA : 99.99964758925897 \t N_evals : 100021 \n", "\tL_BFGS : 102.51224266242104 \t N_evals : 2584 \n", "\tScipy L_BFGS_B : 29975433231.454494 \t N_evals : 341 \n", "\tScipy DA : 9525.140513432096 \t N_evals : 55883 \n", "\tScipy NelderMead : 3261974710.6240864 \t N_evals : 100000 \n", "\tMinuit Migrad : 4696.276270522521 \t N_evals : 8204 \n", "\n", "Function : func_2\n", "\tARRDE : 199.9994039717403 \t N_evals : 100045 \n", "\tNelderMead : 280.6718174861575 \t N_evals : 100012 \n", "\tL_BFGS_B : 200.0015072927467 \t N_evals : 3696 \n", "\tDA : 199.99983015965012 \t N_evals : 100017 \n", "\tL_BFGS : 7.556722049752932e+17 \t N_evals : 1366 \n", "\tScipy L_BFGS_B : 8.869638406639756e+17 \t N_evals : 231 \n", "\tScipy DA : 200.00463296648388 \t N_evals : 56235 \n", "\tScipy NelderMead : 75365.86209133535 \t N_evals : 100000 \n", "\tMinuit Migrad : 200.00538627302817 \t N_evals : 9180 \n", "\n", "Function : func_3\n", "\tARRDE : 299.99896723240084 \t N_evals : 100045 \n", "\tNelderMead : 1351.859139658249 \t N_evals : 100006 \n", "\tL_BFGS_B : 299.99916261593165 \t N_evals : 5229 \n", "\tDA : 299.9990081922694 \t N_evals : 100005 \n", "\tL_BFGS : 299.99942455837197 \t N_evals : 2710 \n", "\tScipy L_BFGS_B : 1343217.3708453623 \t N_evals : 297 \n", "\tScipy DA : 621.5523950409889 \t N_evals : 100149 \n", "\tScipy NelderMead : 4108.968349322301 \t N_evals : 100000 \n", "\tMinuit Migrad : 310.11100640126386 \t N_evals : 7948 \n", "\n", "Function : func_4\n", "\tARRDE : 399.9988165510882 \t N_evals : 100045 \n", "\tNelderMead : 403.6163085722612 \t N_evals : 100008 \n", "\tL_BFGS_B : 402.94446056175826 \t N_evals : 8106 \n", "\tDA : 400.2175317046606 \t N_evals : 100009 \n", "\tL_BFGS : 404.78367958186396 \t N_evals : 5356 \n", "\tScipy L_BFGS_B : 5901.661791017457 \t N_evals : 363 \n", "\tScipy DA : 407.0511076668341 \t N_evals : 100090 \n", "\tScipy NelderMead : 473.469492270753 \t N_evals : 100000 \n", "\tMinuit Migrad : 400.9799947815121 \t N_evals : 5761 \n", "\n", "Function : func_5\n", "\tARRDE : 504.9950337896259 \t N_evals : 100045 \n", "\tNelderMead : 527.1818546296221 \t N_evals : 100006 \n", "\tL_BFGS_B : 621.3819666242026 \t N_evals : 5481 \n", "\tDA : 516.9122408064221 \t N_evals : 100013 \n", "\tL_BFGS : 621.3821400076105 \t N_evals : 2647 \n", "\tScipy L_BFGS_B : 726.7153289789646 \t N_evals : 231 \n", "\tScipy DA : 518.9031337054248 \t N_evals : 40967 \n", "\tScipy NelderMead : 634.928081385159 \t N_evals : 100000 \n", "\tMinuit Migrad : 561.8001949927622 \t N_evals : 4822 \n", "\n", "Function : func_6\n", "\tARRDE : 599.9986118753684 \t N_evals : 100045 \n", "\tNelderMead : 619.1531792711021 \t N_evals : 100007 \n", "\tL_BFGS_B : 660.1088437605096 \t N_evals : 5460 \n", "\tDA : 600.0933011562701 \t N_evals : 100010 \n", "\tL_BFGS : 660.1096607939446 \t N_evals : 3613 \n", "\tScipy L_BFGS_B : 741.7753624774518 \t N_evals : 396 \n", "\tScipy DA : 600.0247129828565 \t N_evals : 46434 \n", "\tScipy NelderMead : 659.1465416464789 \t N_evals : 100000 \n", "\tMinuit Migrad : 650.3570906951594 \t N_evals : 4376 \n", "\n", "Function : func_7\n", "\tARRDE : 711.5737047510712 \t N_evals : 100045 \n", "\tNelderMead : 732.7467043575933 \t N_evals : 100002 \n", "\tL_BFGS_B : 778.2094063345955 \t N_evals : 4242 \n", "\tDA : 748.8476520678751 \t N_evals : 100010 \n", "\tL_BFGS : 811.2713595228851 \t N_evals : 2311 \n", "\tScipy L_BFGS_B : 939.7164373854255 \t N_evals : 286 \n", "\tScipy DA : 715.4509937910693 \t N_evals : 41484 \n", "\tScipy NelderMead : 802.8436404595018 \t N_evals : 100000 \n", "\tMinuit Migrad : 792.4994158615726 \t N_evals : 4989 \n", "\n", "Function : func_8\n", "\tARRDE : 804.9779909162004 \t N_evals : 100045 \n", "\tNelderMead : 843.0848906747862 \t N_evals : 100011 \n", "\tL_BFGS_B : 834.8219680252072 \t N_evals : 4284 \n", "\tDA : 808.95177013287 \t N_evals : 100021 \n", "\tL_BFGS : 828.8514459992714 \t N_evals : 3298 \n", "\tScipy L_BFGS_B : 946.6447552622569 \t N_evals : 363 \n", "\tScipy DA : 817.9082611798573 \t N_evals : 39240 \n", "\tScipy NelderMead : 946.6298297842018 \t N_evals : 100000 \n", "\tMinuit Migrad : 830.8436438245291 \t N_evals : 5157 \n", "\n", "Function : func_9\n", "\tARRDE : 899.9965015948762 \t N_evals : 100044 \n", "\tNelderMead : 994.1777337812193 \t N_evals : 100003 \n", "\tL_BFGS_B : 1783.2350868435265 \t N_evals : 2415 \n", "\tDA : 906.7264234710125 \t N_evals : 100015 \n", "\tL_BFGS : 1783.2221842916192 \t N_evals : 3718 \n", "\tScipy L_BFGS_B : 4301.262308915138 \t N_evals : 462 \n", "\tScipy DA : 901.5172337419739 \t N_evals : 54057 \n", "\tScipy NelderMead : 1778.8550110071794 \t N_evals : 100000 \n", "\tMinuit Migrad : 1755.7830494897687 \t N_evals : 5378 \n", "\n", "Function : func_10\n", "\tARRDE : 1018.7823450406715 \t N_evals : 100044 \n", "\tNelderMead : 1551.6346811924334 \t N_evals : 100003 \n", "\tL_BFGS_B : 3138.4927084683536 \t N_evals : 3990 \n", "\tDA : 1954.3492313396844 \t N_evals : 100020 \n", "\tL_BFGS : 3138.4934622132314 \t N_evals : 3214 \n", "\tScipy L_BFGS_B : 6138.308986782028 \t N_evals : 319 \n", "\tScipy DA : 1367.3343340832785 \t N_evals : 42628 \n", "\tScipy NelderMead : 3149.769101658298 \t N_evals : 100000 \n", "\tMinuit Migrad : 2740.7645499202995 \t N_evals : 4827 \n", "\n", "Function : func_11\n", "\tARRDE : 1101.534032239261 \t N_evals : 100045 \n", "\tNelderMead : 1152.8455535489836 \t N_evals : 100012 \n", "\tL_BFGS_B : 1130.2055960887506 \t N_evals : 3171 \n", "\tDA : 1106.7875924872956 \t N_evals : 100018 \n", "\tL_BFGS : 1132.4815849221511 \t N_evals : 3970 \n", "\tScipy L_BFGS_B : 65027269.05111647 \t N_evals : 319 \n", "\tScipy DA : 1113.7960561038444 \t N_evals : 100215 \n", "\tScipy NelderMead : 1228.9858838602595 \t N_evals : 100000 \n", "\tMinuit Migrad : 1129.578312550509 \t N_evals : 7672 \n", "\n", "Function : func_12\n", "\tARRDE : 1318.6485794081839 \t N_evals : 100045 \n", "\tNelderMead : 8219.687717487664 \t N_evals : 100003 \n", "\tL_BFGS_B : 1899.352770317027 \t N_evals : 5250 \n", "\tDA : 1750.3658207126882 \t N_evals : 100013 \n", "\tL_BFGS : 2229.3199182286253 \t N_evals : 4936 \n", "\tScipy L_BFGS_B : 5721203580.513788 \t N_evals : 352 \n", "\tScipy DA : 2456997.582110197 \t N_evals : 100087 \n", "\tScipy NelderMead : 553906.0438645157 \t N_evals : 100000 \n", "\tMinuit Migrad : 4781.938078472289 \t N_evals : 8156 \n", "\n", "Function : func_13\n", "\tARRDE : 1304.9921757610862 \t N_evals : 100045 \n", "\tNelderMead : 1597.42230459353 \t N_evals : 100011 \n", "\tL_BFGS_B : 1467.9231355273143 \t N_evals : 4158 \n", "\tDA : 1312.01299525334 \t N_evals : 100016 \n", "\tL_BFGS : 1499.6945896816221 \t N_evals : 6742 \n", "\tScipy L_BFGS_B : 2841540530.5151534 \t N_evals : 385 \n", "\tScipy DA : 8189.97113057223 \t N_evals : 46302 \n", "\tScipy NelderMead : 9777.617303245743 \t N_evals : 100000 \n", "\tMinuit Migrad : 3412.2021019149165 \t N_evals : 7524 \n", "\n", "Function : func_14\n", "\tARRDE : 1400.9906324210351 \t N_evals : 100045 \n", "\tNelderMead : 1578.4605362110967 \t N_evals : 100007 \n", "\tL_BFGS_B : 1456.9567815377873 \t N_evals : 6006 \n", "\tDA : 1452.3967920641921 \t N_evals : 100004 \n", "\tL_BFGS : 1477.481176099491 \t N_evals : 5314 \n", "\tScipy L_BFGS_B : 2215436174.4004235 \t N_evals : 396 \n", "\tScipy DA : 2334.4847982200413 \t N_evals : 80996 \n", "\tScipy NelderMead : 7762.169190775192 \t N_evals : 100000 \n", "\tMinuit Migrad : 1562.2415443387167 \t N_evals : 5732 \n", "\n", "Function : func_15\n", "\tARRDE : 1500.4951608041026 \t N_evals : 100044 \n", "\tNelderMead : 1587.6195277259524 \t N_evals : 100009 \n", "\tL_BFGS_B : 1599.6237605382917 \t N_evals : 2877 \n", "\tDA : 1503.1277084847704 \t N_evals : 100005 \n", "\tL_BFGS : 1535.6069724985055 \t N_evals : 9493 \n", "\tScipy L_BFGS_B : 769548622.4956751 \t N_evals : 231 \n", "\tScipy DA : 13530.58666126373 \t N_evals : 33135 \n", "\tScipy NelderMead : 24736.05595603283 \t N_evals : 100000 \n", "\tMinuit Migrad : 1927.3129575310327 \t N_evals : 5019 \n", "\n", "Function : func_16\n", "\tARRDE : 1601.063596606803 \t N_evals : 100044 \n", "\tNelderMead : 1635.7905982605994 \t N_evals : 100002 \n", "\tL_BFGS_B : 2423.1840637702417 \t N_evals : 3465 \n", "\tDA : 1718.6893804226456 \t N_evals : 100012 \n", "\tL_BFGS : 2283.4460952721433 \t N_evals : 4894 \n", "\tScipy L_BFGS_B : 3437.769078201145 \t N_evals : 231 \n", "\tScipy DA : 1963.5638555751493 \t N_evals : 100000 \n", "\tScipy NelderMead : 2387.4243751958065 \t N_evals : 100000 \n", "\tMinuit Migrad : 2060.436783535179 \t N_evals : 4869 \n", "\n", "Function : func_17\n", "\tARRDE : 1700.2025213518575 \t N_evals : 100045 \n", "\tNelderMead : 1777.0945140029419 \t N_evals : 100012 \n", "\tL_BFGS_B : 1876.8875030383283 \t N_evals : 2940 \n", "\tDA : 1725.7159573803065 \t N_evals : 100012 \n", "\tL_BFGS : 1788.0143774273845 \t N_evals : 2227 \n", "\tScipy L_BFGS_B : 3283.0091642457046 \t N_evals : 264 \n", "\tScipy DA : 1825.9860898790314 \t N_evals : 47512 \n", "\tScipy NelderMead : 1955.624502599227 \t N_evals : 100000 \n", "\tMinuit Migrad : 1918.0427658290494 \t N_evals : 3566 \n", "\n", "Function : func_18\n", "\tARRDE : 1802.0424755755075 \t N_evals : 100045 \n", "\tNelderMead : 3240.9576477599026 \t N_evals : 100004 \n", "\tL_BFGS_B : 2004.4829083809466 \t N_evals : 2457 \n", "\tDA : 1824.8985540688266 \t N_evals : 100001 \n", "\tL_BFGS : 1946.2424908588023 \t N_evals : 2353 \n", "\tScipy L_BFGS_B : 14468765592.803608 \t N_evals : 374 \n", "\tScipy DA : 15138.421693962837 \t N_evals : 44157 \n", "\tScipy NelderMead : 2551.1176890225834 \t N_evals : 100000 \n", "\tMinuit Migrad : 5287.861030830303 \t N_evals : 6569 \n", "\n", "Function : func_19\n", "\tARRDE : 1900.2000505497808 \t N_evals : 100045 \n", "\tNelderMead : 1980.9708681253708 \t N_evals : 100005 \n", "\tL_BFGS_B : 1932.1677007324429 \t N_evals : 4116 \n", "\tDA : 1904.8284318943404 \t N_evals : 100002 \n", "\tL_BFGS : 1913.8367971720184 \t N_evals : 4222 \n", "\tScipy L_BFGS_B : 12289156082.302404 \t N_evals : 341 \n", "\tScipy DA : 12909.360924871953 \t N_evals : 57588 \n", "\tScipy NelderMead : 1163724.4374382212 \t N_evals : 100000 \n", "\tMinuit Migrad : 2651.1726476538424 \t N_evals : 5736 \n", "\n", "Function : func_20\n", "\tARRDE : 1999.9937608835364 \t N_evals : 100045 \n", "\tNelderMead : 2118.119077407478 \t N_evals : 100015 \n", "\tL_BFGS_B : 2443.1753416408897 \t N_evals : 5292 \n", "\tDA : 2005.0422082117534 \t N_evals : 100022 \n", "\tL_BFGS : 2586.8626076768564 \t N_evals : 3508 \n", "\tScipy L_BFGS_B : 3152.3445816742355 \t N_evals : 231 \n", "\tScipy DA : 2005.6107207990694 \t N_evals : 66509 \n", "\tScipy NelderMead : 3152.0976061753117 \t N_evals : 100000 \n", "\tMinuit Migrad : 2348.896481942625 \t N_evals : 4630 \n", "\n", "Function : func_21\n", "\tARRDE : 2199.9944226342704 \t N_evals : 100045 \n", "\tNelderMead : 2219.7396205948826 \t N_evals : 100009 \n", "\tL_BFGS_B : 2408.6090405082414 \t N_evals : 2625 \n", "\tDA : 2202.656274040207 \t N_evals : 100005 \n", "\tL_BFGS : 2364.608858952653 \t N_evals : 2290 \n", "\tScipy L_BFGS_B : 2828.6142411779188 \t N_evals : 231 \n", "\tScipy DA : 2327.634517570187 \t N_evals : 39229 \n", "\tScipy NelderMead : 2828.6021713729074 \t N_evals : 100000 \n", "\tMinuit Migrad : 2345.994161874921 \t N_evals : 4764 \n", "\n", "Function : func_22\n", "\tARRDE : 2199.9935883882827 \t N_evals : 100045 \n", "\tNelderMead : 2313.7721158626237 \t N_evals : 100010 \n", "\tL_BFGS_B : 4202.892662430537 \t N_evals : 2079 \n", "\tDA : 2301.2255474995577 \t N_evals : 100015 \n", "\tL_BFGS : 4202.892297532052 \t N_evals : 3613 \n", "\tScipy L_BFGS_B : 5302.503969224863 \t N_evals : 341 \n", "\tScipy DA : 2304.2037879002123 \t N_evals : 48216 \n", "\tScipy NelderMead : 4599.592683785272 \t N_evals : 100000 \n", "\tMinuit Migrad : 2335.8328155220856 \t N_evals : 6014 \n", "\n", "Function : func_23\n", "\tARRDE : 2605.1029586095183 \t N_evals : 100045 \n", "\tNelderMead : 2645.551537143992 \t N_evals : 100010 \n", "\tL_BFGS_B : 3303.602382262219 \t N_evals : 4389 \n", "\tDA : 2665.5241567093417 \t N_evals : 100003 \n", "\tL_BFGS : 3303.601753622085 \t N_evals : 1849 \n", "\tScipy L_BFGS_B : 4335.935485219025 \t N_evals : 231 \n", "\tScipy DA : 2615.0689067492635 \t N_evals : 100177 \n", "\tScipy NelderMead : 3318.557357295846 \t N_evals : 100000 \n", "\tMinuit Migrad : 2823.9878527020287 \t N_evals : 5306 \n", "\n", "Function : func_24\n", "\tARRDE : 2499.9938366437364 \t N_evals : 100044 \n", "\tNelderMead : 2500.024828910897 \t N_evals : 100009 \n", "\tL_BFGS_B : 2499.9989506545553 \t N_evals : 4725 \n", "\tDA : 2791.021975606074 \t N_evals : 100006 \n", "\tL_BFGS : 2500.003833816128 \t N_evals : 3277 \n", "\tScipy L_BFGS_B : 3392.2103871641966 \t N_evals : 231 \n", "\tScipy DA : 2762.6129571083984 \t N_evals : 44432 \n", "\tScipy NelderMead : 3392.1947620781852 \t N_evals : 100000 \n", "\tMinuit Migrad : 2743.842891315348 \t N_evals : 4802 \n", "\n", "Function : func_25\n", "\tARRDE : 2898.068637359863 \t N_evals : 100045 \n", "\tNelderMead : 2948.5641858409804 \t N_evals : 100009 \n", "\tL_BFGS_B : 2945.4021453179853 \t N_evals : 4200 \n", "\tDA : 2898.914790401096 \t N_evals : 100007 \n", "\tL_BFGS : 2945.0227546371093 \t N_evals : 3928 \n", "\tScipy L_BFGS_B : 4820.809604336691 \t N_evals : 319 \n", "\tScipy DA : 2946.585921218999 \t N_evals : 47633 \n", "\tScipy NelderMead : 4820.763396696243 \t N_evals : 100000 \n", "\tMinuit Migrad : 2899.6051197038846 \t N_evals : 4717 \n", "\n", "Function : func_26\n", "\tARRDE : 2799.9931200131255 \t N_evals : 100045 \n", "\tNelderMead : 3009.7316690155767 \t N_evals : 100012 \n", "\tL_BFGS_B : 4988.193165884794 \t N_evals : 2877 \n", "\tDA : 2799.993994017318 \t N_evals : 100007 \n", "\tL_BFGS : 4621.358120102736 \t N_evals : 3214 \n", "\tScipy L_BFGS_B : 5733.9128690783855 \t N_evals : 341 \n", "\tScipy DA : 2900.0043012861006 \t N_evals : 60470 \n", "\tScipy NelderMead : 5733.879857090661 \t N_evals : 100000 \n", "\tMinuit Migrad : 2995.782434440826 \t N_evals : 5008 \n", "\n", "Function : func_27\n", "\tARRDE : 3089.5084587328574 \t N_evals : 100045 \n", "\tNelderMead : 3100.3927598270534 \t N_evals : 100008 \n", "\tL_BFGS_B : 3201.1096989832076 \t N_evals : 2016 \n", "\tDA : 3191.8602891458386 \t N_evals : 100009 \n", "\tL_BFGS : 3370.152045736729 \t N_evals : 3571 \n", "\tScipy L_BFGS_B : 5055.88822687667 \t N_evals : 231 \n", "\tScipy DA : 3105.683195243443 \t N_evals : 49855 \n", "\tScipy NelderMead : 3561.388379127069 \t N_evals : 100000 \n", "\tMinuit Migrad : 3189.6401713157898 \t N_evals : 5649 \n", "\n", "Function : func_28\n", "\tARRDE : 3099.9938885236206 \t N_evals : 100044 \n", "\tNelderMead : 3232.535107381396 \t N_evals : 100011 \n", "\tL_BFGS_B : 3418.758505923391 \t N_evals : 4746 \n", "\tDA : 3099.9912573140628 \t N_evals : 100012 \n", "\tL_BFGS : 3297.507008585088 \t N_evals : 2752 \n", "\tScipy L_BFGS_B : 4517.336569792302 \t N_evals : 231 \n", "\tScipy DA : 3169.136317444072 \t N_evals : 100203 \n", "\tScipy NelderMead : 4517.308772509756 \t N_evals : 100000 \n", "\tMinuit Migrad : 3100.0851976881295 \t N_evals : 6623 \n", "\n", "Function : func_29\n", "\tARRDE : 3154.6926942245786 \t N_evals : 100045 \n", "\tNelderMead : 3211.7307313763795 \t N_evals : 100009 \n", "\tL_BFGS_B : 3359.623494239029 \t N_evals : 3570 \n", "\tDA : 3182.661434273551 \t N_evals : 100008 \n", "\tL_BFGS : 3411.2192756296076 \t N_evals : 4705 \n", "\tScipy L_BFGS_B : 48958.469759465355 \t N_evals : 231 \n", "\tScipy DA : 3189.424251958579 \t N_evals : 40780 \n", "\tScipy NelderMead : 16532.095702945313 \t N_evals : 100000 \n", "\tMinuit Migrad : 3396.213783187279 \t N_evals : 4052 \n", "\n", "Function : func_30\n", "\tARRDE : 3412.295336409609 \t N_evals : 100044 \n", "\tNelderMead : 11616.524650425132 \t N_evals : 100005 \n", "\tL_BFGS_B : 5304.392267674555 \t N_evals : 2646 \n", "\tDA : 3948.2698338529017 \t N_evals : 100022 \n", "\tL_BFGS : 4132.987421074662 \t N_evals : 4936 \n", "\tScipy L_BFGS_B : 506077241.6708051 \t N_evals : 319 \n", "\tScipy DA : 467493.100681527 \t N_evals : 100015 \n", "\tScipy NelderMead : 822823.899574373 \t N_evals : 100000 \n", "\tMinuit Migrad : 1346081.6218397561 \t N_evals : 7181 \n", "\n" ] } ], "source": [ "# Noise ratio for function evaluations (set to zero for noiseless optimization)\n", "noise_ratio = 1e-6\n", "\n", "# Using a thread pool to execute optimization tasks in parallel\n", "with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:\n", " futures = [] # List to store future objects representing scheduled tasks\n", "\n", " # Run optimization tests multiple times (for averaging results)\n", " for k in range(1):\n", " for j in func_numbers:\n", " # Submit the optimization test function to the thread pool\n", " futures.append(executor.submit(run_test_optimization, j, dimension, year, k, Nmaxeval))\n", "\n", " # Wait for all submitted tasks to complete\n", " concurrent.futures.wait(futures)\n", "\n", " # Retrieve and process results (ensure all threads completed successfully)\n", " for f in futures:\n", " f.result()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Noise Level : 1e-8" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Function : func_1\n", "\tARRDE : 99.99999751719136 \t N_evals : 100045 \n", "\tNelderMead : 411510501.72534627 \t N_evals : 100006 \n", "\tL_BFGS_B : 99.99999779301376 \t N_evals : 1869 \n", "\tDA : 99.99999583687155 \t N_evals : 100008 \n", "\tL_BFGS : 99.99999811741898 \t N_evals : 2290 \n", "\tScipy L_BFGS_B : 22097418029.7505 \t N_evals : 836 \n", "\tScipy DA : 5176.843214574206 \t N_evals : 40747 \n", "\tScipy NelderMead : 2422.988133120459 \t N_evals : 6951 \n", "\tMinuit Migrad : 100.00006918869452 \t N_evals : 816 \n", "\n", "Function : func_2\n", "\tARRDE : 199.99999339314 \t N_evals : 100045 \n", "\tNelderMead : 340.031347288827 \t N_evals : 100001 \n", "\tL_BFGS_B : 200.00084391445952 \t N_evals : 4935 \n", "\tDA : 200.00050007089212 \t N_evals : 100015 \n", "\tL_BFGS : 7.556704944803493e+17 \t N_evals : 1366 \n", "\tScipy L_BFGS_B : 8.869645460851034e+17 \t N_evals : 231 \n", "\tScipy DA : 200.00055279858842 \t N_evals : 59513 \n", "\tScipy NelderMead : 200.0000007337802 \t N_evals : 9171 \n", "\tMinuit Migrad : 200.00010594758123 \t N_evals : 6948 \n", "\n", "Function : func_3\n", "\tARRDE : 299.9999901966331 \t N_evals : 100045 \n", "\tNelderMead : 299.9999908884268 \t N_evals : 100007 \n", "\tL_BFGS_B : 299.99999486730593 \t N_evals : 2604 \n", "\tDA : 299.99998810897887 \t N_evals : 100014 \n", "\tL_BFGS : 299.9999946845395 \t N_evals : 2878 \n", "\tScipy L_BFGS_B : 19615.642367441516 \t N_evals : 924 \n", "\tScipy DA : 1156.5509861366247 \t N_evals : 100234 \n", "\tScipy NelderMead : 299.999992425618 \t N_evals : 7653 \n", "\tMinuit Migrad : 301.49456371031744 \t N_evals : 2206 \n", "\n", "Function : func_4\n", "\tARRDE : 399.99998698858326 \t N_evals : 100044 \n", "\tNelderMead : 421.63355047274 \t N_evals : 100005 \n", "\tL_BFGS_B : 400.0028656171424 \t N_evals : 5943 \n", "\tDA : 400.0019729919129 \t N_evals : 100004 \n", "\tL_BFGS : 400.00111695889086 \t N_evals : 5902 \n", "\tScipy L_BFGS_B : 5901.656443009923 \t N_evals : 231 \n", "\tScipy DA : 404.25633564155794 \t N_evals : 100029 \n", "\tScipy NelderMead : 403.36761746871224 \t N_evals : 6708 \n", "\tMinuit Migrad : 400.0000146646939 \t N_evals : 1266 \n", "\n", "Function : func_5\n", "\tARRDE : 502.9848613713583 \t N_evals : 100045 \n", "\tNelderMead : 525.8688839014476 \t N_evals : 100009 \n", "\tL_BFGS_B : 632.3276454133297 \t N_evals : 1911 \n", "\tDA : 516.9142530428069 \t N_evals : 100014 \n", "\tL_BFGS : 621.383373293557 \t N_evals : 1702 \n", "\tScipy L_BFGS_B : 726.7145603573398 \t N_evals : 341 \n", "\tScipy DA : 525.8688936653596 \t N_evals : 42111 \n", "\tScipy NelderMead : 619.4643474640518 \t N_evals : 4693 \n", "\tMinuit Migrad : 624.3677138884559 \t N_evals : 393 \n", "\n", "Function : func_6\n", "\tARRDE : 599.9999869998317 \t N_evals : 100044 \n", "\tNelderMead : 608.3064089746418 \t N_evals : 100005 \n", "\tL_BFGS_B : 660.1105304503817 \t N_evals : 1932 \n", "\tDA : 600.000029520358 \t N_evals : 100022 \n", "\tL_BFGS : 660.1105057870227 \t N_evals : 2059 \n", "\tScipy L_BFGS_B : 741.7754907770716 \t N_evals : 253 \n", "\tScipy DA : 600.000255280635 \t N_evals : 52484 \n", "\tScipy NelderMead : 659.2185644798254 \t N_evals : 3737 \n", "\tMinuit Migrad : 659.0966443218176 \t N_evals : 537 \n", "\n", "Function : func_7\n", "\tARRDE : 713.3229871796216 \t N_evals : 100045 \n", "\tNelderMead : 732.7427836272224 \t N_evals : 100010 \n", "\tL_BFGS_B : 778.2115010450884 \t N_evals : 1407 \n", "\tDA : 733.8179870302197 \t N_evals : 100003 \n", "\tL_BFGS : 778.2115050609812 \t N_evals : 1114 \n", "\tScipy L_BFGS_B : 891.8949607260842 \t N_evals : 297 \n", "\tScipy DA : 721.7974979880865 \t N_evals : 56422 \n", "\tScipy NelderMead : 811.2731264144727 \t N_evals : 3296 \n", "\tMinuit Migrad : 797.5708625221881 \t N_evals : 734 \n", "\n", "Function : func_8\n", "\tARRDE : 804.9765584584326 \t N_evals : 100044 \n", "\tNelderMead : 842.4968650489645 \t N_evals : 100013 \n", "\tL_BFGS_B : 831.8385984225299 \t N_evals : 2226 \n", "\tDA : 808.9546011265818 \t N_evals : 100014 \n", "\tL_BFGS : 828.8537243093589 \t N_evals : 1366 \n", "\tScipy L_BFGS_B : 930.9765355368567 \t N_evals : 616 \n", "\tScipy DA : 811.9395238193504 \t N_evals : 46137 \n", "\tScipy NelderMead : 831.8385978559583 \t N_evals : 5122 \n", "\tMinuit Migrad : 831.8386257570597 \t N_evals : 658 \n", "\n", "Function : func_9\n", "\tARRDE : 899.999969261106 \t N_evals : 100044 \n", "\tNelderMead : 993.6316409473914 \t N_evals : 100002 \n", "\tL_BFGS_B : 1783.2257181887187 \t N_evals : 2541 \n", "\tDA : 911.091103704458 \t N_evals : 100016 \n", "\tL_BFGS : 1783.2257156653684 \t N_evals : 2962 \n", "\tScipy L_BFGS_B : 2310.838821331191 \t N_evals : 627 \n", "\tScipy DA : 901.7278267155689 \t N_evals : 77322 \n", "\tScipy NelderMead : 1778.8623240007043 \t N_evals : 4367 \n", "\tMinuit Migrad : 1772.4757397506983 \t N_evals : 655 \n", "\n", "Function : func_10\n", "\tARRDE : 1003.7965075498726 \t N_evals : 100044 \n", "\tNelderMead : 1551.1057231723819 \t N_evals : 100011 \n", "\tL_BFGS_B : 3138.5006720504916 \t N_evals : 1806 \n", "\tDA : 1954.3555788736776 \t N_evals : 100022 \n", "\tL_BFGS : 3500.875297707733 \t N_evals : 3529 \n", "\tScipy L_BFGS_B : 4686.596532251753 \t N_evals : 440 \n", "\tScipy DA : 1455.1085065201598 \t N_evals : 45510 \n", "\tScipy NelderMead : 3039.70743484738 \t N_evals : 5650 \n", "\tMinuit Migrad : 3534.6343905478475 \t N_evals : 461 \n", "\n", "Function : func_11\n", "\tARRDE : 1101.9130266494954 \t N_evals : 100045 \n", "\tNelderMead : 1151.7896627443768 \t N_evals : 100008 \n", "\tL_BFGS_B : 1182.3128196457465 \t N_evals : 6468 \n", "\tDA : 1110.9493911721636 \t N_evals : 100013 \n", "\tL_BFGS : 1140.8205122319953 \t N_evals : 4936 \n", "\tScipy L_BFGS_B : 65027135.62521542 \t N_evals : 286 \n", "\tScipy DA : 1119.9052562032973 \t N_evals : 100075 \n", "\tScipy NelderMead : 1184.7297225789503 \t N_evals : 5988 \n", "\tMinuit Migrad : 1285.771833239217 \t N_evals : 3615 \n", "\n", "Function : func_12\n", "\tARRDE : 1200.2081148538743 \t N_evals : 100044 \n", "\tNelderMead : 8219.687778735673 \t N_evals : 100001 \n", "\tL_BFGS_B : 1512.0777231854474 \t N_evals : 3507 \n", "\tDA : 1634.4875559356146 \t N_evals : 100005 \n", "\tL_BFGS : 1835.3088021470523 \t N_evals : 3361 \n", "\tScipy L_BFGS_B : 5721203390.98989 \t N_evals : 231 \n", "\tScipy DA : 3555597.5551406275 \t N_evals : 100173 \n", "\tScipy NelderMead : 11402.767506888602 \t N_evals : 100000 \n", "\tMinuit Migrad : 1318.6733509771022 \t N_evals : 8715 \n", "\n", "Function : func_13\n", "\tARRDE : 1304.1087408084663 \t N_evals : 100045 \n", "\tNelderMead : 1542.044157940823 \t N_evals : 100002 \n", "\tL_BFGS_B : 1577.5511576293245 \t N_evals : 4515 \n", "\tDA : 1339.3677800492367 \t N_evals : 100009 \n", "\tL_BFGS : 1473.398292543709 \t N_evals : 5125 \n", "\tScipy L_BFGS_B : 2841537163.967545 \t N_evals : 429 \n", "\tScipy DA : 4781.081690299964 \t N_evals : 47380 \n", "\tScipy NelderMead : 12616.808206856933 \t N_evals : 100000 \n", "\tMinuit Migrad : 1318.4603419872433 \t N_evals : 8879 \n", "\n", "Function : func_14\n", "\tARRDE : 1400.99492122921 \t N_evals : 100045 \n", "\tNelderMead : 1570.2555416571834 \t N_evals : 100009 \n", "\tL_BFGS_B : 1537.5055464543284 \t N_evals : 3801 \n", "\tDA : 1422.75524729409 \t N_evals : 100016 \n", "\tL_BFGS : 1458.862350138285 \t N_evals : 2983 \n", "\tScipy L_BFGS_B : 2215435602.920833 \t N_evals : 231 \n", "\tScipy DA : 1649.4182549246668 \t N_evals : 42914 \n", "\tScipy NelderMead : 8421.508876883721 \t N_evals : 100000 \n", "\tMinuit Migrad : 1617.2719448900284 \t N_evals : 5315 \n", "\n", "Function : func_15\n", "\tARRDE : 1501.4739492658132 \t N_evals : 100045 \n", "\tNelderMead : 1588.5016960728824 \t N_evals : 100003 \n", "\tL_BFGS_B : 1567.4489003446197 \t N_evals : 4494 \n", "\tDA : 1518.456091881986 \t N_evals : 100018 \n", "\tL_BFGS : 1528.5511071078172 \t N_evals : 2815 \n", "\tScipy L_BFGS_B : 769548247.5403284 \t N_evals : 209 \n", "\tScipy DA : 1950.660954513282 \t N_evals : 80413 \n", "\tScipy NelderMead : 15169.154745137783 \t N_evals : 100000 \n", "\tMinuit Migrad : 1538.00810080853 \t N_evals : 6192 \n", "\n", "Function : func_16\n", "\tARRDE : 1601.050074308418 \t N_evals : 100045 \n", "\tNelderMead : 1600.8843697114792 \t N_evals : 100006 \n", "\tL_BFGS_B : 2464.5775200174535 \t N_evals : 3969 \n", "\tDA : 1723.451314610054 \t N_evals : 100008 \n", "\tL_BFGS : 2316.681504698129 \t N_evals : 2941 \n", "\tScipy L_BFGS_B : 3437.7629818131904 \t N_evals : 231 \n", "\tScipy DA : 1736.905288545219 \t N_evals : 100000 \n", "\tScipy NelderMead : 2310.009476003972 \t N_evals : 3658 \n", "\tMinuit Migrad : 1611.4312270950584 \t N_evals : 6461 \n", "\n", "Function : func_17\n", "\tARRDE : 1701.105636641274 \t N_evals : 100045 \n", "\tNelderMead : 1776.2905766741853 \t N_evals : 100011 \n", "\tL_BFGS_B : 1885.8343672087624 \t N_evals : 2310 \n", "\tDA : 1706.0489525285302 \t N_evals : 100009 \n", "\tL_BFGS : 1751.3990786691047 \t N_evals : 3634 \n", "\tScipy L_BFGS_B : 2382.9276113438186 \t N_evals : 308 \n", "\tScipy DA : 1741.7465062234203 \t N_evals : 58864 \n", "\tScipy NelderMead : 2683.235343796058 \t N_evals : 1350 \n", "\tMinuit Migrad : 1796.5374941390548 \t N_evals : 4240 \n", "\n", "Function : func_18\n", "\tARRDE : 1800.3843923439567 \t N_evals : 100045 \n", "\tNelderMead : 2325.796563421607 \t N_evals : 100011 \n", "\tL_BFGS_B : 1876.898796726942 \t N_evals : 2919 \n", "\tDA : 1805.0794082456644 \t N_evals : 100021 \n", "\tL_BFGS : 1860.472098396039 \t N_evals : 5566 \n", "\tScipy L_BFGS_B : 305148756.70617896 \t N_evals : 1243 \n", "\tScipy DA : 11343.907734424596 \t N_evals : 44300 \n", "\tScipy NelderMead : 1865.9907900902956 \t N_evals : 4711 \n", "\tMinuit Migrad : 1836.164807977784 \t N_evals : 9663 \n", "\n", "Function : func_19\n", "\tARRDE : 1900.01938573213 \t N_evals : 100044 \n", "\tNelderMead : 1980.4178743956556 \t N_evals : 100002 \n", "\tL_BFGS_B : 1914.993741965292 \t N_evals : 3969 \n", "\tDA : 1904.024465664457 \t N_evals : 100002 \n", "\tL_BFGS : 1906.8550380730214 \t N_evals : 5377 \n", "\tScipy L_BFGS_B : 12289135565.028492 \t N_evals : 308 \n", "\tScipy DA : 2017.4876762270567 \t N_evals : 42111 \n", "\tScipy NelderMead : 2585.467260875594 \t N_evals : 2769 \n", "\tMinuit Migrad : 1903.076183004396 \t N_evals : 10993 \n", "\n", "Function : func_20\n", "\tARRDE : 1999.9999345828169 \t N_evals : 100044 \n", "\tNelderMead : 2065.5899446394014 \t N_evals : 100005 \n", "\tL_BFGS_B : 2526.4802508281564 \t N_evals : 5061 \n", "\tDA : 2017.034338660544 \t N_evals : 100002 \n", "\tL_BFGS : 2455.624929819974 \t N_evals : 1765 \n", "\tScipy L_BFGS_B : 2935.7330447982117 \t N_evals : 935 \n", "\tScipy DA : 2000.9974749810865 \t N_evals : 72328 \n", "\tScipy NelderMead : 2629.9265436115747 \t N_evals : 3398 \n", "\tMinuit Migrad : 2590.515847851497 \t N_evals : 452 \n", "\n", "Function : func_21\n", "\tARRDE : 2199.999939344757 \t N_evals : 100045 \n", "\tNelderMead : 2209.3077176057704 \t N_evals : 100005 \n", "\tL_BFGS_B : 2413.816724161348 \t N_evals : 567 \n", "\tDA : 2366.69194482348 \t N_evals : 100010 \n", "\tL_BFGS : 2427.9074720301533 \t N_evals : 1492 \n", "\tScipy L_BFGS_B : 2828.6145443510914 \t N_evals : 297 \n", "\tScipy DA : 2330.4547912604075 \t N_evals : 44124 \n", "\tScipy NelderMead : 2366.6578828022407 \t N_evals : 7131 \n", "\tMinuit Migrad : 2373.7395426760945 \t N_evals : 748 \n", "\n", "Function : func_22\n", "\tARRDE : 2299.999941341407 \t N_evals : 100044 \n", "\tNelderMead : 2310.0095632067537 \t N_evals : 100006 \n", "\tL_BFGS_B : 2351.0817624749448 \t N_evals : 4284 \n", "\tDA : 2300.821213533321 \t N_evals : 100015 \n", "\tL_BFGS : 4051.6423921456544 \t N_evals : 1975 \n", "\tScipy L_BFGS_B : 4241.792951393489 \t N_evals : 440 \n", "\tScipy DA : 2301.603983366127 \t N_evals : 63946 \n", "\tScipy NelderMead : 4506.392759551173 \t N_evals : 100000 \n", "\tMinuit Migrad : 2707.1981844825186 \t N_evals : 2403 \n", "\n", "Function : func_23\n", "\tARRDE : 2604.7463757640085 \t N_evals : 100045 \n", "\tNelderMead : 2645.3739692865943 \t N_evals : 100008 \n", "\tL_BFGS_B : 3246.5300632811663 \t N_evals : 1344 \n", "\tDA : 2626.5464006874495 \t N_evals : 100011 \n", "\tL_BFGS : 3303.6106646127055 \t N_evals : 1849 \n", "\tScipy L_BFGS_B : 4335.929883782289 \t N_evals : 231 \n", "\tScipy DA : 2617.301591157175 \t N_evals : 100146 \n", "\tScipy NelderMead : 3303.610594708305 \t N_evals : 4816 \n", "\tMinuit Migrad : 3303.6106275213156 \t N_evals : 704 \n", "\n", "Function : func_24\n", "\tARRDE : 2499.99993709232 \t N_evals : 100044 \n", "\tNelderMead : 2500.0001050928217 \t N_evals : 100006 \n", "\tL_BFGS_B : 2500.000084681375 \t N_evals : 3360 \n", "\tDA : 2760.74892909843 \t N_evals : 100011 \n", "\tL_BFGS : 2500.0001306005515 \t N_evals : 2479 \n", "\tScipy L_BFGS_B : 3392.208809276254 \t N_evals : 220 \n", "\tScipy DA : 2745.6010061072634 \t N_evals : 44795 \n", "\tScipy NelderMead : 2680.449906836158 \t N_evals : 6515 \n", "\tMinuit Migrad : 2500.0000145691192 \t N_evals : 4252 \n", "\n", "Function : func_25\n", "\tARRDE : 2699.9999400842157 \t N_evals : 100045 \n", "\tNelderMead : 2957.9131071019688 \t N_evals : 100012 \n", "\tL_BFGS_B : 2955.891416611311 \t N_evals : 2310 \n", "\tDA : 2898.6010815514765 \t N_evals : 100020 \n", "\tL_BFGS : 2946.366989279092 \t N_evals : 1786 \n", "\tScipy L_BFGS_B : 4820.812318524614 \t N_evals : 231 \n", "\tScipy DA : 2943.7088398334745 \t N_evals : 43068 \n", "\tScipy NelderMead : 3146.362210922964 \t N_evals : 4077 \n", "\tMinuit Migrad : 2945.551614324517 \t N_evals : 2161 \n", "\n", "Function : func_26\n", "\tARRDE : 2799.9999340093987 \t N_evals : 100045 \n", "\tNelderMead : 2947.1492954076416 \t N_evals : 100004 \n", "\tL_BFGS_B : 4621.845210086224 \t N_evals : 1470 \n", "\tDA : 2799.9999544728084 \t N_evals : 100015 \n", "\tL_BFGS : 4988.055970315561 \t N_evals : 3319 \n", "\tScipy L_BFGS_B : 5733.919111649673 \t N_evals : 231 \n", "\tScipy DA : 3079.1227718496584 \t N_evals : 59062 \n", "\tScipy NelderMead : 4833.112527113192 \t N_evals : 100000 \n", "\tMinuit Migrad : 4988.055723905056 \t N_evals : 3270 \n", "\n", "Function : func_27\n", "\tARRDE : 3089.517894167052 \t N_evals : 100045 \n", "\tNelderMead : 3100.2684699624647 \t N_evals : 100010 \n", "\tL_BFGS_B : 3184.57373604425 \t N_evals : 2604 \n", "\tDA : 3185.4086186851227 \t N_evals : 100014 \n", "\tL_BFGS : 3101.393791744527 \t N_evals : 3802 \n", "\tScipy L_BFGS_B : 3440.4689456641668 \t N_evals : 770 \n", "\tScipy DA : 3104.8672705852055 \t N_evals : 61251 \n", "\tScipy NelderMead : 3217.8916155233333 \t N_evals : 6008 \n", "\tMinuit Migrad : 3152.5371669066544 \t N_evals : 1450 \n", "\n", "Function : func_28\n", "\tARRDE : 3099.999908587518 \t N_evals : 100044 \n", "\tNelderMead : 3229.0161330062433 \t N_evals : 100006 \n", "\tL_BFGS_B : 3396.1080017403224 \t N_evals : 2772 \n", "\tDA : 3446.4844626390523 \t N_evals : 100006 \n", "\tL_BFGS : 3287.3359565799456 \t N_evals : 5734 \n", "\tScipy L_BFGS_B : 4517.335304975492 \t N_evals : 308 \n", "\tScipy DA : 3165.635309121298 \t N_evals : 100103 \n", "\tScipy NelderMead : 3383.748044911579 \t N_evals : 7569 \n", "\tMinuit Migrad : 3383.7340127597354 \t N_evals : 4379 \n", "\n", "Function : func_29\n", "\tARRDE : 3151.433549682732 \t N_evals : 100045 \n", "\tNelderMead : 3211.2172116131023 \t N_evals : 100008 \n", "\tL_BFGS_B : 3584.326614164005 \t N_evals : 3591 \n", "\tDA : 3198.8512081753843 \t N_evals : 100008 \n", "\tL_BFGS : 3393.714829252586 \t N_evals : 3403 \n", "\tScipy L_BFGS_B : 10342.705428834948 \t N_evals : 473 \n", "\tScipy DA : 3213.2924915939934 \t N_evals : 45048 \n", "\tScipy NelderMead : 3758.205250899091 \t N_evals : 5094 \n", "\tMinuit Migrad : 3349.0780602163063 \t N_evals : 7065 \n", "\n", "Function : func_30\n", "\tARRDE : 3480.979267836456 \t N_evals : 100045 \n", "\tNelderMead : 11616.516169321321 \t N_evals : 100010 \n", "\tL_BFGS_B : 5567.87264012787 \t N_evals : 2583 \n", "\tDA : 3481.765455497704 \t N_evals : 100021 \n", "\tL_BFGS : 4133.80375260588 \t N_evals : 3676 \n", "\tScipy L_BFGS_B : 368538695.196276 \t N_evals : 715 \n", "\tScipy DA : 390282.0211696862 \t N_evals : 100142 \n", "\tScipy NelderMead : 4187.87287891103 \t N_evals : 12517 \n", "\tMinuit Migrad : 3493.5005707839036 \t N_evals : 16342 \n", "\n" ] } ], "source": [ "# Noise ratio for function evaluations (set to zero for noiseless optimization)\n", "noise_ratio = 1e-8\n", "\n", "# Using a thread pool to execute optimization tasks in parallel\n", "with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:\n", " futures = [] # List to store future objects representing scheduled tasks\n", "\n", " # Run optimization tests multiple times (for averaging results)\n", " for k in range(NRuns):\n", " for j in func_numbers:\n", " # Submit the optimization test function to the thread pool\n", " futures.append(executor.submit(run_test_optimization, j, dimension, year, k, Nmaxeval))\n", "\n", " # Wait for all submitted tasks to complete\n", " concurrent.futures.wait(futures)\n", "\n", " # Retrieve and process results (ensure all threads completed successfully)\n", " for f in futures:\n", " f.result()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Noise Level : 1e-10" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Function : func_1\n", "\tARRDE : 99.99999998146482 \t N_evals : 100045 \n", "\tNelderMead : 411510502.8785815 \t N_evals : 100008 \n", "\tL_BFGS_B : 100.00000000471442 \t N_evals : 903 \n", "\tDA : 99.9999999675947 \t N_evals : 100017 \n", "\tL_BFGS : 99.99999996461153 \t N_evals : 925 \n", "\tScipy L_BFGS_B : 100.02471298242172 \t N_evals : 1386 \n", "\tScipy DA : 100.00062903391391 \t N_evals : 21090 \n", "\tScipy NelderMead : 2712.3754020719502 \t N_evals : 6914 \n", "\tMinuit Migrad : 100.00002479993728 \t N_evals : 746 \n", "\n", "Function : func_2\n", "\tARRDE : 199.99999998141658 \t N_evals : 100045 \n", "\tNelderMead : 295.94632102454506 \t N_evals : 100004 \n", "\tL_BFGS_B : 200.00015248095772 \t N_evals : 4809 \n", "\tDA : 200.00005569235267 \t N_evals : 100004 \n", "\tL_BFGS : 7.556706336095375e+17 \t N_evals : 1366 \n", "\tScipy L_BFGS_B : 301.150547252332 \t N_evals : 946 \n", "\tScipy DA : 200.00045148238053 \t N_evals : 39229 \n", "\tScipy NelderMead : 307.37085372535427 \t N_evals : 9058 \n", "\tMinuit Migrad : 200.00083707023333 \t N_evals : 6929 \n", "\n", "Function : func_3\n", "\tARRDE : 299.9999999212991 \t N_evals : 100045 \n", "\tNelderMead : 299.99999994905033 \t N_evals : 100013 \n", "\tL_BFGS_B : 300.0000001291188 \t N_evals : 1134 \n", "\tDA : 299.99999989569767 \t N_evals : 100022 \n", "\tL_BFGS : 299.9999999497001 \t N_evals : 1807 \n", "\tScipy L_BFGS_B : 4985.404787192905 \t N_evals : 583 \n", "\tScipy DA : 300.00034167935314 \t N_evals : 47710 \n", "\tScipy NelderMead : 299.99999993087397 \t N_evals : 7116 \n", "\tMinuit Migrad : 301.5219449007896 \t N_evals : 2043 \n", "\n", "Function : func_4\n", "\tARRDE : 399.9999999056293 \t N_evals : 100045 \n", "\tNelderMead : 399.9999999188782 \t N_evals : 100003 \n", "\tL_BFGS_B : 400.00017884678 \t N_evals : 2247 \n", "\tDA : 400.00013642436915 \t N_evals : 100016 \n", "\tL_BFGS : 400.0000002671418 \t N_evals : 1555 \n", "\tScipy L_BFGS_B : 570.7081459210068 \t N_evals : 407 \n", "\tScipy DA : 405.6629459977546 \t N_evals : 100084 \n", "\tScipy NelderMead : 399.9999999288301 \t N_evals : 8700 \n", "\tMinuit Migrad : 400.0000444576483 \t N_evals : 1347 \n", "\n", "Function : func_5\n", "\tARRDE : 502.01699511349983 \t N_evals : 100045 \n", "\tNelderMead : 525.8688902129203 \t N_evals : 100007 \n", "\tL_BFGS_B : 621.3833907217139 \t N_evals : 525 \n", "\tDA : 516.9142684661023 \t N_evals : 100019 \n", "\tL_BFGS : 621.3833907087973 \t N_evals : 799 \n", "\tScipy L_BFGS_B : 684.1455739388281 \t N_evals : 495 \n", "\tScipy DA : 511.93953709876735 \t N_evals : 60646 \n", "\tScipy NelderMead : 624.3681395778656 \t N_evals : 5002 \n", "\tMinuit Migrad : 612.4283306781778 \t N_evals : 409 \n", "\n", "Function : func_6\n", "\tARRDE : 599.9999998360609 \t N_evals : 100044 \n", "\tNelderMead : 614.6275609620569 \t N_evals : 100004 \n", "\tL_BFGS_B : 660.1105189512664 \t N_evals : 1428 \n", "\tDA : 600.0000719594337 \t N_evals : 100007 \n", "\tL_BFGS : 660.1105188258935 \t N_evals : 610 \n", "\tScipy L_BFGS_B : 675.6729314479452 \t N_evals : 781 \n", "\tScipy DA : 600.0000604883195 \t N_evals : 45312 \n", "\tScipy NelderMead : 660.1105185414015 \t N_evals : 4772 \n", "\tMinuit Migrad : 659.0966070252388 \t N_evals : 511 \n", "\n", "Function : func_7\n", "\tARRDE : 711.8848753263945 \t N_evals : 100044 \n", "\tNelderMead : 732.7427932666927 \t N_evals : 100010 \n", "\tL_BFGS_B : 778.2115142547051 \t N_evals : 336 \n", "\tDA : 735.2614561246186 \t N_evals : 100014 \n", "\tL_BFGS : 778.2115141688279 \t N_evals : 442 \n", "\tScipy L_BFGS_B : 793.6657444139023 \t N_evals : 440 \n", "\tScipy DA : 735.5269306321622 \t N_evals : 33905 \n", "\tScipy NelderMead : 811.2731445582131 \t N_evals : 3258 \n", "\tMinuit Migrad : 794.857583900823 \t N_evals : 500 \n", "\n", "Function : func_8\n", "\tARRDE : 800.9949588812672 \t N_evals : 100045 \n", "\tNelderMead : 842.2946074467682 \t N_evals : 100012 \n", "\tL_BFGS_B : 831.8386141546785 \t N_evals : 441 \n", "\tDA : 808.954626222599 \t N_evals : 100017 \n", "\tL_BFGS : 828.8537420040867 \t N_evals : 379 \n", "\tScipy L_BFGS_B : 936.4731278001937 \t N_evals : 253 \n", "\tScipy DA : 818.9042524940464 \t N_evals : 37469 \n", "\tScipy NelderMead : 831.838613925965 \t N_evals : 5103 \n", "\tMinuit Migrad : 831.838616152109 \t N_evals : 477 \n", "\n", "Function : func_9\n", "\tARRDE : 899.9999996844036 \t N_evals : 100044 \n", "\tNelderMead : 993.3438817082854 \t N_evals : 100001 \n", "\tL_BFGS_B : 1783.2257708689433 \t N_evals : 945 \n", "\tDA : 902.1820705507712 \t N_evals : 100014 \n", "\tL_BFGS : 1783.225770950813 \t N_evals : 820 \n", "\tScipy L_BFGS_B : 1770.6991732767485 \t N_evals : 1078 \n", "\tScipy DA : 903.6378776612943 \t N_evals : 93855 \n", "\tScipy NelderMead : 1778.8623675260847 \t N_evals : 4328 \n", "\tMinuit Migrad : 1772.4757881360126 \t N_evals : 472 \n", "\n", "Function : func_10\n", "\tARRDE : 1247.7602398161525 \t N_evals : 100044 \n", "\tNelderMead : 1551.1057140870519 \t N_evals : 100012 \n", "\tL_BFGS_B : 3138.5007249988053 \t N_evals : 903 \n", "\tDA : 1954.355642464167 \t N_evals : 100022 \n", "\tL_BFGS : 3500.7941654713086 \t N_evals : 2563 \n", "\tScipy L_BFGS_B : 3644.4435496588108 \t N_evals : 264 \n", "\tScipy DA : 1688.2180178853594 \t N_evals : 32112 \n", "\tScipy NelderMead : 3039.707511649384 \t N_evals : 5132 \n", "\tMinuit Migrad : 3534.634499987548 \t N_evals : 396 \n", "\n", "Function : func_11\n", "\tARRDE : 1099.9999998912513 \t N_evals : 100045 \n", "\tNelderMead : 1135.8611556949534 \t N_evals : 100001 \n", "\tL_BFGS_B : 1133.8307463021624 \t N_evals : 2499 \n", "\tDA : 1110.9452883542801 \t N_evals : 100016 \n", "\tL_BFGS : 1129.8628356817023 \t N_evals : 3403 \n", "\tScipy L_BFGS_B : 1344.4944816284578 \t N_evals : 726 \n", "\tScipy DA : 1108.5719901485656 \t N_evals : 100031 \n", "\tScipy NelderMead : 1161.4684217775798 \t N_evals : 9042 \n", "\tMinuit Migrad : 1209.1651206631147 \t N_evals : 2244 \n", "\n", "Function : func_12\n", "\tARRDE : 1342.083783265013 \t N_evals : 100045 \n", "\tNelderMead : 8219.687793338193 \t N_evals : 100010 \n", "\tL_BFGS_B : 1535.763345874584 \t N_evals : 2772 \n", "\tDA : 1420.271248685288 \t N_evals : 100014 \n", "\tL_BFGS : 1758.5645441967642 \t N_evals : 2920 \n", "\tScipy L_BFGS_B : 6437.1831451569415 \t N_evals : 1815 \n", "\tScipy DA : 1448.7842557101337 \t N_evals : 43585 \n", "\tScipy NelderMead : 3376.8788165790543 \t N_evals : 8680 \n", "\tMinuit Migrad : 1715.3581386709848 \t N_evals : 3561 \n", "\n", "Function : func_13\n", "\tARRDE : 1308.5079442175504 \t N_evals : 100045 \n", "\tNelderMead : 1542.0441652679488 \t N_evals : 100009 \n", "\tL_BFGS_B : 1519.8601301606323 \t N_evals : 3129 \n", "\tDA : 1322.0582581719614 \t N_evals : 100007 \n", "\tL_BFGS : 1468.183384816729 \t N_evals : 4369 \n", "\tScipy L_BFGS_B : 12354.512516033907 \t N_evals : 671 \n", "\tScipy DA : 1327.6026057956046 \t N_evals : 64639 \n", "\tScipy NelderMead : 15242.747760378243 \t N_evals : 1749 \n", "\tMinuit Migrad : 1612.3905308605854 \t N_evals : 5445 \n", "\n", "Function : func_14\n", "\tARRDE : 1400.9949586009227 \t N_evals : 100045 \n", "\tNelderMead : 1569.1836101255283 \t N_evals : 100004 \n", "\tL_BFGS_B : 1543.5047187935504 \t N_evals : 5145 \n", "\tDA : 1447.3375565337026 \t N_evals : 100006 \n", "\tL_BFGS : 1439.9339825548159 \t N_evals : 3067 \n", "\tScipy L_BFGS_B : 1495.0059253606237 \t N_evals : 1100 \n", "\tScipy DA : 2191.4574704770366 \t N_evals : 57280 \n", "\tScipy NelderMead : 1524.125181259149 \t N_evals : 3124 \n", "\tMinuit Migrad : 1589.7731661411156 \t N_evals : 1890 \n", "\n", "Function : func_15\n", "\tARRDE : 1500.0421946175218 \t N_evals : 100044 \n", "\tNelderMead : 1588.5068472335402 \t N_evals : 100001 \n", "\tL_BFGS_B : 1594.7593610857539 \t N_evals : 4977 \n", "\tDA : 1505.0514764785137 \t N_evals : 100008 \n", "\tL_BFGS : 1527.303940615181 \t N_evals : 5272 \n", "\tScipy L_BFGS_B : 9260.750858802949 \t N_evals : 979 \n", "\tScipy DA : 1514.1660787694475 \t N_evals : 92249 \n", "\tScipy NelderMead : 1612.9356733627378 \t N_evals : 8003 \n", "\tMinuit Migrad : 1530.0589077491554 \t N_evals : 3468 \n", "\n", "Function : func_16\n", "\tARRDE : 1600.5751134593133 \t N_evals : 100045 \n", "\tNelderMead : 1722.1107412729946 \t N_evals : 100004 \n", "\tL_BFGS_B : 2455.155472769112 \t N_evals : 2772 \n", "\tDA : 1884.9162911037147 \t N_evals : 100005 \n", "\tL_BFGS : 2318.0365175335046 \t N_evals : 6679 \n", "\tScipy L_BFGS_B : 2284.768275336976 \t N_evals : 594 \n", "\tScipy DA : 1600.8008072647428 \t N_evals : 100089 \n", "\tScipy NelderMead : 2300.9020452568893 \t N_evals : 5067 \n", "\tMinuit Migrad : 2291.662902487966 \t N_evals : 3368 \n", "\n", "Function : func_17\n", "\tARRDE : 1702.1720096950983 \t N_evals : 100045 \n", "\tNelderMead : 1776.2904298272954 \t N_evals : 100006 \n", "\tL_BFGS_B : 1992.859374861787 \t N_evals : 2625 \n", "\tDA : 1706.3016592444403 \t N_evals : 100003 \n", "\tL_BFGS : 1973.7877116811278 \t N_evals : 2647 \n", "\tScipy L_BFGS_B : 1974.2686304243216 \t N_evals : 352 \n", "\tScipy DA : 1705.3271848814586 \t N_evals : 49140 \n", "\tScipy NelderMead : 1956.7698931576792 \t N_evals : 3807 \n", "\tMinuit Migrad : 1943.4261650808003 \t N_evals : 1158 \n", "\n", "Function : func_18\n", "\tARRDE : 1801.2581665957507 \t N_evals : 100045 \n", "\tNelderMead : 1842.3915127353753 \t N_evals : 100005 \n", "\tL_BFGS_B : 1999.6001332910319 \t N_evals : 3381 \n", "\tDA : 1822.001206333412 \t N_evals : 100017 \n", "\tL_BFGS : 1860.4910653078512 \t N_evals : 6217 \n", "\tScipy L_BFGS_B : 3428.3298841022834 \t N_evals : 517 \n", "\tScipy DA : 1842.5938493411552 \t N_evals : 30165 \n", "\tScipy NelderMead : 2092.535972853888 \t N_evals : 4283 \n", "\tMinuit Migrad : 1825.0218335001955 \t N_evals : 4470 \n", "\n", "Function : func_19\n", "\tARRDE : 1902.0143908343193 \t N_evals : 100045 \n", "\tNelderMead : 1980.412273553875 \t N_evals : 100012 \n", "\tL_BFGS_B : 2000.102750789216 \t N_evals : 2751 \n", "\tDA : 1904.0980475809583 \t N_evals : 100003 \n", "\tL_BFGS : 1905.8088954888249 \t N_evals : 5881 \n", "\tScipy L_BFGS_B : 29149.80152195076 \t N_evals : 308 \n", "\tScipy DA : 1946.18411399218 \t N_evals : 73505 \n", "\tScipy NelderMead : 1938.30976067719 \t N_evals : 2672 \n", "\tMinuit Migrad : 1937.8924500344967 \t N_evals : 4942 \n", "\n", "Function : func_20\n", "\tARRDE : 1999.999999501442 \t N_evals : 100045 \n", "\tNelderMead : 2139.990672806584 \t N_evals : 100010 \n", "\tL_BFGS_B : 2441.731081045896 \t N_evals : 1575 \n", "\tDA : 2000.9957413040825 \t N_evals : 100009 \n", "\tL_BFGS : 2441.693046550841 \t N_evals : 1870 \n", "\tScipy L_BFGS_B : 2926.304359972402 \t N_evals : 264 \n", "\tScipy DA : 2007.9602635077351 \t N_evals : 68720 \n", "\tScipy NelderMead : 2885.343594599009 \t N_evals : 1145 \n", "\tMinuit Migrad : 2590.516858846803 \t N_evals : 349 \n", "\n", "Function : func_21\n", "\tARRDE : 2199.99999947858 \t N_evals : 100045 \n", "\tNelderMead : 2209.305119600595 \t N_evals : 100006 \n", "\tL_BFGS_B : 2413.816735494357 \t N_evals : 483 \n", "\tDA : 2327.718258452968 \t N_evals : 100014 \n", "\tL_BFGS : 2413.8167351936254 \t N_evals : 463 \n", "\tScipy L_BFGS_B : 2499.0370052565613 \t N_evals : 825 \n", "\tScipy DA : 2203.0629756643316 \t N_evals : 100186 \n", "\tScipy NelderMead : 2398.98205919678 \t N_evals : 6799 \n", "\tMinuit Migrad : 2488.9695093253886 \t N_evals : 480 \n", "\n", "Function : func_22\n", "\tARRDE : 2300.558057432392 \t N_evals : 100044 \n", "\tNelderMead : 2310.009551032577 \t N_evals : 100010 \n", "\tL_BFGS_B : 2310.0913490071434 \t N_evals : 2268 \n", "\tDA : 2301.374562134717 \t N_evals : 100016 \n", "\tL_BFGS : 2301.8219094012115 \t N_evals : 2815 \n", "\tScipy L_BFGS_B : 5083.305075764876 \t N_evals : 297 \n", "\tScipy DA : 2307.3939192593125 \t N_evals : 42639 \n", "\tScipy NelderMead : 4396.443215753653 \t N_evals : 5520 \n", "\tMinuit Migrad : 4418.942836509127 \t N_evals : 570 \n", "\n", "Function : func_23\n", "\tARRDE : 2602.459432423742 \t N_evals : 100045 \n", "\tNelderMead : 2645.325568212316 \t N_evals : 100007 \n", "\tL_BFGS_B : 3246.5299039774254 \t N_evals : 630 \n", "\tDA : 2629.4783935499768 \t N_evals : 100006 \n", "\tL_BFGS : 3303.6106936856104 \t N_evals : 463 \n", "\tScipy L_BFGS_B : 2712.890077481842 \t N_evals : 231 \n", "\tScipy DA : 2634.737882074044 \t N_evals : 94031 \n", "\tScipy NelderMead : 3303.6106929846314 \t N_evals : 5096 \n", "\tMinuit Migrad : 3303.6107275587037 \t N_evals : 541 \n", "\n", "Function : func_24\n", "\tARRDE : 2499.999999594927 \t N_evals : 100045 \n", "\tNelderMead : 2500.0000022156432 \t N_evals : 100007 \n", "\tL_BFGS_B : 2500.0000060990938 \t N_evals : 1449 \n", "\tDA : 2756.3514459540265 \t N_evals : 100006 \n", "\tL_BFGS : 2500.0000056972212 \t N_evals : 1996 \n", "\tScipy L_BFGS_B : 3354.7640307433844 \t N_evals : 286 \n", "\tScipy DA : 2781.4060608081627 \t N_evals : 36534 \n", "\tScipy NelderMead : 2500.0001851725815 \t N_evals : 11195 \n", "\tMinuit Migrad : 2500.0000037752634 \t N_evals : 4228 \n", "\n", "Function : func_25\n", "\tARRDE : 2898.008988679196 \t N_evals : 100045 \n", "\tNelderMead : 2957.7709873832478 \t N_evals : 100008 \n", "\tL_BFGS_B : 2944.824121097827 \t N_evals : 1638 \n", "\tDA : 2898.306113453491 \t N_evals : 100006 \n", "\tL_BFGS : 2947.659118524446 \t N_evals : 1660 \n", "\tScipy L_BFGS_B : 4116.3916055457275 \t N_evals : 253 \n", "\tScipy DA : 2949.2121627336646 \t N_evals : 47776 \n", "\tScipy NelderMead : 3091.019884836397 \t N_evals : 7559 \n", "\tMinuit Migrad : 2955.80979603171 \t N_evals : 1259 \n", "\n", "Function : func_26\n", "\tARRDE : 2799.99999934918 \t N_evals : 100045 \n", "\tNelderMead : 2947.25088672464 \t N_evals : 100005 \n", "\tL_BFGS_B : 4620.754650501499 \t N_evals : 1239 \n", "\tDA : 2799.999999635519 \t N_evals : 100022 \n", "\tL_BFGS : 4621.845115265906 \t N_evals : 883 \n", "\tScipy L_BFGS_B : 5733.919058268073 \t N_evals : 231 \n", "\tScipy DA : 2900.0004454143213 \t N_evals : 60547 \n", "\tScipy NelderMead : 4449.575518059603 \t N_evals : 6999 \n", "\tMinuit Migrad : 4987.958197766668 \t N_evals : 859 \n", "\n", "Function : func_27\n", "\tARRDE : 3089.5179892238616 \t N_evals : 100044 \n", "\tNelderMead : 3100.1873325185493 \t N_evals : 100011 \n", "\tL_BFGS_B : 3098.121929194018 \t N_evals : 3528 \n", "\tDA : 3092.8903990465737 \t N_evals : 100004 \n", "\tL_BFGS : 3343.5671460771046 \t N_evals : 967 \n", "\tScipy L_BFGS_B : 3828.3674742898725 \t N_evals : 792 \n", "\tScipy DA : 3103.579046379763 \t N_evals : 59887 \n", "\tScipy NelderMead : 3507.6979462903837 \t N_evals : 6610 \n", "\tMinuit Migrad : 3353.1643058963023 \t N_evals : 692 \n", "\n", "Function : func_28\n", "\tARRDE : 3099.9999996103097 \t N_evals : 100045 \n", "\tNelderMead : 3229.016082451607 \t N_evals : 100007 \n", "\tL_BFGS_B : 3383.75918472034 \t N_evals : 2961 \n", "\tDA : 3196.568315476675 \t N_evals : 100013 \n", "\tL_BFGS : 3287.305931327285 \t N_evals : 3508 \n", "\tScipy L_BFGS_B : 4517.335286475703 \t N_evals : 231 \n", "\tScipy DA : 3100.000860782523 \t N_evals : 50922 \n", "\tScipy NelderMead : 3383.7552070973447 \t N_evals : 7785 \n", "\tMinuit Migrad : 3383.7452274717984 \t N_evals : 1219 \n", "\n", "Function : func_29\n", "\tARRDE : 3143.9156177703317 \t N_evals : 100045 \n", "\tNelderMead : 3211.667612811737 \t N_evals : 100011 \n", "\tL_BFGS_B : 3820.472617273393 \t N_evals : 3234 \n", "\tDA : 3190.9826741772727 \t N_evals : 100015 \n", "\tL_BFGS : 3692.3397079899414 \t N_evals : 2374 \n", "\tScipy L_BFGS_B : 3801.3592625559577 \t N_evals : 1012 \n", "\tScipy DA : 3145.533346837897 \t N_evals : 97793 \n", "\tScipy NelderMead : 5146.9840820185955 \t N_evals : 2899 \n", "\tMinuit Migrad : 3386.0439564630633 \t N_evals : 8730 \n", "\n", "Function : func_30\n", "\tARRDE : 3405.8147512435576 \t N_evals : 100044 \n", "\tNelderMead : 11616.516184998627 \t N_evals : 100012 \n", "\tL_BFGS_B : 5839.057050934611 \t N_evals : 2331 \n", "\tDA : 3469.228641221694 \t N_evals : 100010 \n", "\tL_BFGS : 4509.115956499942 \t N_evals : 2794 \n", "\tScipy L_BFGS_B : 12608.111506184603 \t N_evals : 1672 \n", "\tScipy DA : 4544.046668110243 \t N_evals : 54904 \n", "\tScipy NelderMead : 4331.263001559403 \t N_evals : 9032 \n", "\tMinuit Migrad : 3556.5277756919704 \t N_evals : 20434 \n", "\n" ] } ], "source": [ "# Noise ratio for function evaluations (set to zero for noiseless optimization)\n", "noise_ratio = 1e-10\n", "\n", "# Using a thread pool to execute optimization tasks in parallel\n", "with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:\n", " futures = [] # List to store future objects representing scheduled tasks\n", "\n", " # Run optimization tests multiple times (for averaging results)\n", " for k in range(NRuns):\n", " for j in func_numbers:\n", " # Submit the optimization test function to the thread pool\n", " futures.append(executor.submit(run_test_optimization, j, dimension, year, k, Nmaxeval))\n", "\n", " # Wait for all submitted tasks to complete\n", " concurrent.futures.wait(futures)\n", "\n", " # Retrieve and process results (ensure all threads completed successfully)\n", " for f in futures:\n", " f.result()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can that L-BFGS-B are generally more robust than similar algorithms implemented by Scipy and Minuit library." ] }, { "cell_type": "markdown", "metadata": {}, "source": [] } ], "metadata": { "kernelspec": { "display_name": "base", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.2" } }, "nbformat": 4, "nbformat_minor": 2 }