Created
February 11, 2025 02:56
-
-
Save andyfaff/4d57823e6936c567f585645886789933 to your computer and use it in GitHub Desktop.
Minimize1D benchmarks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"id": "b3c0ec20-c616-429a-a587-057a9c487bb8", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from benchmarks import go_benchmark_functions as gbf\n", | |
"from scipy.optimize import differential_evolution\n", | |
"import inspect\n", | |
"from collections import namedtuple" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 75, | |
"id": "6d5a125c-0050-4955-aeca-f80613e65cd7", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"61" | |
] | |
}, | |
"execution_count": 75, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"_gof = inspect.getmembers(gbf, inspect.isclass)\n", | |
"benchmark_functions = {it[0]:it[1] for it in _gof if (issubclass(it[1], gbf.Benchmark) and it[1].change_dimensionality)}\n", | |
"\n", | |
"# not suited to dimensions=1\n", | |
"benchmark_functions.pop('LennardJones')\n", | |
"benchmark_functions.pop('Quadratic')\n", | |
"benchmark_functions.pop('EggHolder')\n", | |
"benchmark_functions.pop('Alpine02')\n", | |
"benchmark_functions.pop('SineEnvelope')\n", | |
"benchmark_functions.pop('Shubert01')\n", | |
"benchmark_functions.pop('Shubert03')\n", | |
"benchmark_functions.pop('Shubert04')\n", | |
"benchmark_functions.pop('StretchedV')\n", | |
"benchmark_functions.pop('Rana')\n", | |
"benchmark_functions.pop('Trid')\n", | |
"\n", | |
"len(benchmark_functions)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 76, | |
"id": "0a555e20-9ac8-4242-bc0a-915497b4e847", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"AMGM 100.0 32.0\n", | |
"Ackley01 100.0 814.0\n", | |
"Alpine01 100.0 826.3\n", | |
"Brown 100.0 32.0\n", | |
"Cigar 100.0 752.5\n", | |
"CosineMixture 100.0 125.56666666666666\n", | |
"Csendes 100.0 801.5\n", | |
"Deb01 100.0 235.7\n", | |
"Deb03 100.0 162.96666666666667\n", | |
"Deceptive 43.333333333333336 257.3333333333333\n", | |
"DeflectedCorrugatedSpring 100.0 150.86666666666667\n", | |
"DixonPrice 100.0 771.0\n", | |
"Exponential 100.0 62.5\n", | |
"Griewank 66.66666666666667 456.1666666666667\n", | |
"Infinity 100.0 795.5\n", | |
"Katsuura 60.0 352.8666666666667\n", | |
"Mishra01 100.0 32.0\n", | |
"Mishra02 100.0 32.0\n", | |
"Mishra07 100.0 765.5\n", | |
"Mishra11 100.0 32.0\n", | |
"MultiModal 100.0 742.5\n", | |
"NeedleEye 100.0 73.93333333333334\n", | |
"Penalty01 93.33333333333333 773.2666666666667\n", | |
"Penalty02 83.33333333333333 730.8\n", | |
"PermFunction01 100.0 775.0\n", | |
"PermFunction02 100.0 763.5\n", | |
"Pinter 100.0 762.0\n", | |
"Plateau 100.0 71.5\n", | |
"Qing 100.0 807.0\n", | |
"Quintic 100.0 833.0\n", | |
"Rastrigin 100.0 498.0\n", | |
"Rosenbrock 100.0 32.0\n", | |
"Salomon 93.33333333333333 791.6666666666666\n", | |
"Sargan 100.0 760.5\n", | |
"Schwefel01 100.0 767.0\n", | |
"Schwefel02 100.0 747.5\n", | |
"Schwefel04 100.0 779.5\n", | |
"Schwefel20 100.0 799.5\n", | |
"Schwefel21 100.0 791.0\n", | |
"Schwefel22 100.0 802.0\n", | |
"Schwefel26 100.0 336.03333333333336\n", | |
"Sodp 100.0 761.0\n", | |
"Sphere 100.0 773.0\n", | |
"Step 100.0 138.0\n", | |
"Step2 has a lower global minimum\n", | |
"Step2 0.0 0.0\n", | |
"Stochastic 0.0 15039.4\n", | |
"StyblinskiTang 100.0 105.56666666666666\n", | |
"Trigonometric01 100.0 1020.5\n", | |
"Trigonometric02 100.0 238.7\n", | |
"Vincent 100.0 137.53333333333333\n", | |
"Wavy 93.33333333333333 497.4\n", | |
"Weierstrass 100.0 752.0\n", | |
"Whitley 63.333333333333336 521.0\n", | |
"XinSheYang01 80.0 6758.8\n", | |
"XinSheYang02 100.0 803.5\n", | |
"XinSheYang03 100.0 190.53333333333333\n", | |
"XinSheYang04 63.333333333333336 261.26666666666665\n", | |
"YaoLiu04 100.0 802.0\n", | |
"YaoLiu09 93.33333333333333 475.9\n", | |
"Zacharov 100.0 753.5\n", | |
"ZeroSum 0.0 448.3666666666667\n" | |
] | |
} | |
], | |
"source": [ | |
"Stats = namedtuple('Stats', ['success', 'nfev'])\n", | |
"N = 30\n", | |
"\n", | |
"results = {}\n", | |
"for fun, bf in benchmark_functions.items():\n", | |
" nsuccess = 0\n", | |
" nfev = 0\n", | |
" for i in range(N):\n", | |
" _o = bf(dimensions=1)\n", | |
" res = differential_evolution(_o.fun, _o.bounds)\n", | |
" try:\n", | |
" if _o.success(res.x) and res.success:\n", | |
" nsuccess += 1\n", | |
" nfev += res.nfev\n", | |
" except ValueError:\n", | |
" print(f\"{fun} has a lower global minimum\")\n", | |
" break\n", | |
" nfev /= N\n", | |
" s = Stats(success=nsuccess / N, nfev = nfev)\n", | |
" print(f\"{fun:<35}{100 * nsuccess / N:>35}{nfev:>20}\")\n", | |
" results[fun] = s" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 73, | |
"id": "a72745a3-4c9b-4424-9948-95a1405fc845", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 9.140951240902869e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15045\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 9.141e-20 1.572e-19 ... 2.882e-19 7.746e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 1.0366202780987425e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15043\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 1.037e-20 4.100e-18 ... 1.716e-18 5.929e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 3.7985491469233e-21\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15039\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 3.799e-21 4.605e-20 ... 3.804e-19 4.924e-20]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 2.488973650148111e-21\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15033\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 2.489e-21 1.033e-19 ... 1.408e-19 3.427e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 6.077059899722594e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15037\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 6.077e-20 9.313e-19 ... 7.581e-20 2.651e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 4.4067636224937934e-13\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15031\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 4.407e-13 1.616e-12 ... 1.869e-12 3.055e-11]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 6.280221297940196e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15037\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 6.280e-20 6.897e-19 ... 2.874e-19 8.934e-20]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 1.0580059309317228e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15039\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 1.058e-20 1.004e-19 ... 9.113e-20 5.677e-20]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 9.058017351270389e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15041\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 9.058e-20 7.714e-19 ... 2.573e-18 1.564e-18]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 5.886098350301826e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15037\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 5.886e-20 3.552e-19 ... 6.692e-20 6.301e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 3.2212070101491893e-21\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15045\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 3.221e-21 4.176e-19 ... 5.067e-20 5.248e-20]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 5.693703742390079e-21\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15045\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 5.694e-21 7.485e-20 ... 3.284e-19 6.110e-20]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 2.2723362136766125e-21\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15045\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 2.272e-21 4.375e-20 ... 4.147e-19 7.601e-20]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 5.111440214324175e-21\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15037\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 5.111e-21 5.485e-19 ... 3.854e-19 1.686e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 4.599939109167904e-21\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15037\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 4.600e-21 3.815e-20 ... 1.338e-19 1.311e-18]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 1.1996849250652716e-21\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15039\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 1.200e-21 3.877e-20 ... 1.482e-19 1.087e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 6.731072220648297e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15039\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 6.731e-20 8.578e-19 ... 2.576e-18 2.744e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 3.453043844671721e-21\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15043\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 3.453e-21 4.692e-19 ... 8.013e-19 2.096e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 6.6472018462849015e-21\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15041\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 6.647e-21 1.444e-19 ... 2.180e-19 6.730e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 4.549123217484381e-21\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15041\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 4.549e-21 1.089e-19 ... 8.955e-20 1.714e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 1.739177163119174e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15033\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 1.739e-20 3.728e-19 ... 2.583e-19 1.887e-18]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 4.3571347267678284e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15035\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 4.357e-20 3.207e-19 ... 3.590e-19 2.147e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 7.230971995397577e-11\n", | |
" x: [ 9.997e-01]\n", | |
" nit: 1000\n", | |
" nfev: 15055\n", | |
" population: [[ 9.997e-01]\n", | |
" [ 9.999e-01]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 9.996e-01]]\n", | |
" population_energies: [ 7.231e-11 1.402e-07 ... 2.126e-08 3.016e-08]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 1.672858196310722e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15043\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 1.673e-20 8.878e-20 ... 1.343e-19 4.129e-20]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 3.2061127620059666e-21\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15037\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 3.206e-21 1.765e-20 ... 2.661e-19 8.098e-20]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 1.5108479347483028e-14\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15035\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 1.511e-14 2.476e-13 ... 1.759e-13 2.813e-14]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 5.815869610594116e-21\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15039\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 5.816e-21 1.603e-19 ... 1.713e-19 1.188e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 4.235639625236039e-19\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15037\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 4.236e-19 4.857e-19 ... 1.496e-18 4.287e-18]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 4.2122708066013683e-16\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15027\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 4.212e-16 6.272e-15 ... 8.559e-15 2.532e-15]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 2.0678316266450393e-21\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15043\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 2.068e-21 1.206e-19 ... 5.728e-19 1.142e-20]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 3.277280679640374e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15041\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 3.277e-20 4.375e-19 ... 1.895e-19 6.562e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 6.345882179727646e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15037\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 6.346e-20 3.881e-19 ... 1.998e-19 1.125e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 7.075844114441972e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15043\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 7.076e-20 2.755e-19 ... 2.444e-18 1.750e-18]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 3.370292336207075e-21\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15041\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 3.370e-21 4.150e-18 ... 3.446e-19 4.497e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 5.006933386816179e-06\n", | |
" x: [ 9.287e-01]\n", | |
" nit: 1000\n", | |
" nfev: 15057\n", | |
" population: [[ 9.287e-01]\n", | |
" [ 9.287e-01]\n", | |
" ...\n", | |
" [ 9.287e-01]\n", | |
" [ 9.287e-01]]\n", | |
" population_energies: [ 5.007e-06 1.245e-04 ... 1.355e-05 1.584e-05]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 4.8048637959172376e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15041\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 4.805e-20 2.151e-19 ... 1.679e-19 1.252e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 8.27495261290269e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15043\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 8.275e-20 6.414e-19 ... 5.780e-19 2.557e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 4.499587202551564e-21\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15043\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 4.500e-21 2.686e-19 ... 4.565e-19 2.484e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 1.5477712913705307e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15041\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 1.548e-20 3.857e-19 ... 6.793e-20 9.357e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 4.964880988466473e-19\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15033\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 4.965e-19 1.732e-18 ... 1.074e-18 5.891e-18]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 1.2732721851872782e-19\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15041\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 1.273e-19 1.071e-18 ... 2.508e-19 1.835e-18]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 4.540481378396956e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15047\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 4.540e-20 2.175e-19 ... 5.847e-19 5.790e-20]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 2.651765143450541e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15049\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 2.652e-20 5.394e-20 ... 5.683e-19 3.416e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 2.2324620470167304e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15041\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 2.232e-20 3.406e-19 ... 6.534e-19 3.258e-20]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 1.5237864402997578e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15043\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 1.524e-20 9.141e-20 ... 3.418e-19 3.304e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 2.24135863919321e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15041\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 2.241e-20 5.145e-19 ... 8.276e-19 4.990e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 7.945030552587172e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15035\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 7.945e-20 7.778e-19 ... 2.284e-19 2.427e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 2.158010319203871e-21\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15037\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 2.158e-21 2.630e-20 ... 4.256e-19 1.610e-19]\n", | |
" message: Maximum number of iterations has been exceeded.\n", | |
" success: False\n", | |
" fun: 8.185040620396056e-20\n", | |
" x: [ 1.000e+00]\n", | |
" nit: 1000\n", | |
" nfev: 15039\n", | |
" population: [[ 1.000e+00]\n", | |
" [ 1.000e+00]\n", | |
" ...\n", | |
" [ 1.000e+00]\n", | |
" [ 1.000e+00]]\n", | |
" population_energies: [ 8.185e-20 4.273e-19 ... 7.815e-19 5.258e-19]\n" | |
] | |
}, | |
{ | |
"ename": "KeyboardInterrupt", | |
"evalue": "", | |
"output_type": "error", | |
"traceback": [ | |
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", | |
"Cell \u001b[0;32mIn[73], line 4\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;241m100\u001b[39m):\n\u001b[1;32m 3\u001b[0m _o \u001b[38;5;241m=\u001b[39m benchmark_functions[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mStochastic\u001b[39m\u001b[38;5;124m'\u001b[39m](dimensions\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m----> 4\u001b[0m res \u001b[38;5;241m=\u001b[39m \u001b[43mdifferential_evolution\u001b[49m\u001b[43m(\u001b[49m\u001b[43m_o\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfun\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_o\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbounds\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28mprint\u001b[39m(res)\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m res\u001b[38;5;241m.\u001b[39msuccess \u001b[38;5;129;01mand\u001b[39;00m _o\u001b[38;5;241m.\u001b[39msuccess(res\u001b[38;5;241m.\u001b[39mx):\n", | |
"File \u001b[0;32m~/miniforge3/envs/dev3/lib/python3.12/site-packages/scipy/optimize/_differentialevolution.py:496\u001b[0m, in \u001b[0;36mdifferential_evolution\u001b[0;34m(func, bounds, args, strategy, maxiter, popsize, tol, mutation, recombination, seed, callback, disp, polish, init, atol, updating, workers, constraints, x0, integrality, vectorized)\u001b[0m\n\u001b[1;32m 479\u001b[0m \u001b[38;5;66;03m# using a context manager means that any created Pool objects are\u001b[39;00m\n\u001b[1;32m 480\u001b[0m \u001b[38;5;66;03m# cleared up.\u001b[39;00m\n\u001b[1;32m 481\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m DifferentialEvolutionSolver(func, bounds, args\u001b[38;5;241m=\u001b[39margs,\n\u001b[1;32m 482\u001b[0m strategy\u001b[38;5;241m=\u001b[39mstrategy,\n\u001b[1;32m 483\u001b[0m maxiter\u001b[38;5;241m=\u001b[39mmaxiter,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 494\u001b[0m integrality\u001b[38;5;241m=\u001b[39mintegrality,\n\u001b[1;32m 495\u001b[0m vectorized\u001b[38;5;241m=\u001b[39mvectorized) \u001b[38;5;28;01mas\u001b[39;00m solver:\n\u001b[0;32m--> 496\u001b[0m ret \u001b[38;5;241m=\u001b[39m \u001b[43msolver\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msolve\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 498\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ret\n", | |
"File \u001b[0;32m~/miniforge3/envs/dev3/lib/python3.12/site-packages/scipy/optimize/_differentialevolution.py:1161\u001b[0m, in \u001b[0;36mDifferentialEvolutionSolver.solve\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1158\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m nit \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;241m1\u001b[39m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmaxiter \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m):\n\u001b[1;32m 1159\u001b[0m \u001b[38;5;66;03m# evolve the population by a generation\u001b[39;00m\n\u001b[1;32m 1160\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 1161\u001b[0m \u001b[38;5;28;43mnext\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1162\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m:\n\u001b[1;32m 1163\u001b[0m warning_flag \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n", | |
"File \u001b[0;32m~/miniforge3/envs/dev3/lib/python3.12/site-packages/scipy/optimize/_differentialevolution.py:1576\u001b[0m, in \u001b[0;36mDifferentialEvolutionSolver.__next__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1574\u001b[0m feasible \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 1575\u001b[0m cv \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39matleast_2d([\u001b[38;5;241m0.\u001b[39m])\n\u001b[0;32m-> 1576\u001b[0m energy \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mparameters\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1577\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_nfev \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[1;32m 1579\u001b[0m \u001b[38;5;66;03m# compare trial and population member\u001b[39;00m\n", | |
"File \u001b[0;32m~/miniforge3/envs/dev3/lib/python3.12/site-packages/scipy/_lib/_util.py:446\u001b[0m, in \u001b[0;36m_FunctionWrapper.__call__\u001b[0;34m(self, x)\u001b[0m\n\u001b[1;32m 445\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__call__\u001b[39m(\u001b[38;5;28mself\u001b[39m, x):\n\u001b[0;32m--> 446\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mf\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n", | |
"File \u001b[0;32m~/Documents/Andy/programming/scipy/benchmarks/benchmarks/go_benchmark_functions/go_funcs_S.py:1270\u001b[0m, in \u001b[0;36mStochastic.fun\u001b[0;34m(self, x, *args)\u001b[0m\n\u001b[1;32m 1267\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mfun\u001b[39m(\u001b[38;5;28mself\u001b[39m, x, \u001b[38;5;241m*\u001b[39margs):\n\u001b[1;32m 1268\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnfev \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[0;32m-> 1270\u001b[0m rnd \u001b[38;5;241m=\u001b[39m \u001b[43muniform\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0.0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1.0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msize\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mN\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1271\u001b[0m i \u001b[38;5;241m=\u001b[39m arange(\u001b[38;5;241m1\u001b[39m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mN \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m)\n\u001b[1;32m 1273\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msum\u001b[39m(rnd \u001b[38;5;241m*\u001b[39m \u001b[38;5;28mabs\u001b[39m(x \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m1.0\u001b[39m \u001b[38;5;241m/\u001b[39m i))\n", | |
"\u001b[0;31mKeyboardInterrupt\u001b[0m: " | |
] | |
} | |
], | |
"source": [ | |
"nsuccess = 0\n", | |
"for i in range(100):\n", | |
" _o = benchmark_functions['Stochastic'](dimensions=1)\n", | |
" res = differential_evolution(_o.fun, _o.bounds)\n", | |
" print(res)\n", | |
" if res.success and _o.success(res.x):\n", | |
" print(\"yeah\")\n", | |
" nsuccess += 1\n", | |
"\n", | |
"nsuccess" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 41, | |
"id": "6ac9ef8c-8c49-4733-9430-e1d9ccc34f9d", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"-959.640662711" | |
] | |
}, | |
"execution_count": 41, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"_o.fglob" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "931616fd-e57a-4d56-9c55-0bd327f15c4f", | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3 (ipykernel)", | |
"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.6" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 5 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment