
╔══════════════════════════════════════════════════════════════════╗
║          MULTI-START UNCONSTRAINED BENCHMARKS                    ║
║          5 optimizers · 15 problems · 3 starting points = 225 runs║
╚══════════════════════════════════════════════════════════════════╝

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Sphere
  Type: Unimodal, convex
  Known min: f(0, 0) = 0
  x₀A = (5.000, -3.000)   // baseline
  x₀B = (-10.000, 10.000)   // mirrored far
  x₀C = (100.000, 100.000)   // very far (numerical stress)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Method          | x₀A status · value (its, fn) | x₀B status · value (its, fn) |  x₀C status · value (its, fn)
  ----------------+------------------------------+------------------------------+------------------------------
  Nelder-Mead     |    ✅ 1.33e-10 (49 it, 97 fn) |    ✅ 6.83e-10 (47 it, 87 fn) |    ✅ 2.86e-10 (55 it, 103 fn)
  PSO             | ✅ 1.74e-12 (120 it, 6050 fn) | ✅ 1.16e-13 (128 it, 6450 fn) |  ✅ 2.04e-13 (141 it, 7100 fn)
  GradientDescent |  ✅ 1.30e-8 (419 it, 2096 fn) |  ✅ 1.30e-8 (452 it, 2261 fn) |   ✅ 1.29e-8 (538 it, 2691 fn)
  Adam            | ✅ 1.37e-10 (243 it, 1216 fn) | ✅ 1.86e-14 (383 it, 1916 fn) | ✅ 2.76e-7 (3573 it, 17866 fn)
  L-BFGS          |     ✅ 5.25e-16 (1 it, 11 fn) |     ✅ 1.27e-15 (1 it, 11 fn) |      ✅ 1.28e-11 (1 it, 11 fn)
  L-BFGS-B        |     ✅ 1.27e-15 (2 it, 15 fn) |     ✅ 4.04e-14 (2 it, 15 fn) |      ✅ 1.27e-25 (3 it, 30 fn)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Rosenbrock
  Type: Unimodal, narrow valley
  Known min: f(1.000, 1.000) = 0
  x₀A = (-1.200, 1.000)   // classic
  x₀B = (0, 0)   // origin
  x₀C = (2.000, -2.000)   // past optimum
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Method          | x₀A status · value (its, fn) | x₀B status · value (its, fn) | x₀C status · value (its, fn)
  ----------------+------------------------------+------------------------------+-----------------------------
  Nelder-Mead     |   ✅ 6.11e-11 (86 it, 162 fn) |   ✅ 3.69e-10 (78 it, 146 fn) |    ✅ 1.18e-9 (85 it, 160 fn)
  PSO             |  ✅ 5.16e-9 (196 it, 9850 fn) |  ✅ 1.08e-8 (180 it, 9050 fn) | ✅ 7.88e-11 (187 it, 9400 fn)
  GradientDescent | ⚠ 7.90e-7 (1414 it, 7071 fn) | ⚠ 7.89e-7 (1390 it, 6951 fn) |     ⚠ 79.4464 (11 it, 60 fn)
  Adam            | ✅ 1.85e-7 (1223 it, 6116 fn) |  ⚠ 1.65e-5 (308 it, 1541 fn) |     ⚠ 0.6150 (78 it, 391 fn)
  L-BFGS          | ✅ 2.39e-12 (671 it, 3387 fn) |   ✅ 3.73e-16 (26 it, 142 fn) |   ✅ 5.38e-15 (28 it, 156 fn)
  L-BFGS-B        |   ✅ 1.68e-15 (37 it, 220 fn) |   ✅ 1.04e-13 (21 it, 125 fn) |   ✅ 1.12e-12 (29 it, 175 fn)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Beale
  Type: Unimodal, non-convex
  Known min: f(3.000, 0.500) = 0
  x₀A = (0, 0)   // baseline
  x₀B = (-2.000, -2.000)   // opposite quadrant
  x₀C = (4.000, 0.400)   // near-optimum
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Method          | x₀A status · value (its, fn) |  x₀B status · value (its, fn) |  x₀C status · value (its, fn)
  ----------------+------------------------------+-------------------------------+------------------------------
  Nelder-Mead     |   ✅ 5.53e-10 (82 it, 161 fn) |   ⚠ 0.4520 (2216 it, 4066 fn) |     ✅ 2.22e-10 (36 it, 72 fn)
  PSO             | ✅ 1.64e-12 (121 it, 6100 fn) |  ✅ 2.51e-14 (136 it, 6850 fn) |  ✅ 4.70e-13 (118 it, 5950 fn)
  GradientDescent | ⚠ 1.17e-6 (1536 it, 7681 fn) |       ⚠ 3.7717 (11 it, 60 fn) | ⚠ 1.19e-6 (2392 it, 11961 fn)
  Adam            |  ✅ 1.55e-8 (399 it, 1996 fn) | ⚠ 7.60e-7 (2464 it, 12321 fn) |    ✅ 3.00e-9 (177 it, 886 fn)
  L-BFGS          |     ✅ 1.96e-11 (9 it, 54 fn) |    ⚠ 0.4530 (224 it, 1233 fn) |     ✅ 2.88e-15 (16 it, 91 fn)
  L-BFGS-B        |    ✅ 4.95e-16 (13 it, 70 fn) |    ✅ 7.53e-13 (19 it, 110 fn) |    ✅ 3.54e-12 (17 it, 105 fn)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Booth
  Type: Unimodal, convex
  Known min: f(1.000, 3.000) = 0
  x₀A = (0, 0)   // baseline
  x₀B = (-5.000, -5.000)   // opposite quadrant
  x₀C = (10.000, 10.000)   // far
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Method          | x₀A status · value (its, fn) | x₀B status · value (its, fn) | x₀C status · value (its, fn)
  ----------------+------------------------------+------------------------------+-----------------------------
  Nelder-Mead     |   ✅ 3.02e-10 (70 it, 139 fn) |      ⚠ 0.0389 (35 it, 69 fn) |    ✅ 1.03e-9 (63 it, 123 fn)
  PSO             | ✅ 3.95e-12 (114 it, 5750 fn) | ✅ 1.12e-12 (119 it, 6000 fn) | ✅ 7.59e-14 (139 it, 7000 fn)
  GradientDescent |  ✅ 1.25e-8 (367 it, 1836 fn) |  ✅ 1.25e-8 (367 it, 1836 fn) |  ✅ 1.25e-8 (367 it, 1836 fn)
  Adam            | ✅ 1.40e-10 (297 it, 1486 fn) | ✅ 8.07e-8 (1020 it, 5101 fn) | ✅ 1.08e-7 (1149 it, 5746 fn)
  L-BFGS          |     ✅ 9.89e-14 (8 it, 49 fn) |     ✅ 6.00e-17 (6 it, 39 fn) |     ✅ 3.19e-12 (5 it, 34 fn)
  L-BFGS-B        |     ✅ 2.10e-17 (6 it, 35 fn) |     ✅ 1.83e-12 (4 it, 25 fn) |     ✅ 3.90e-13 (4 it, 25 fn)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Matyas
  Type: Unimodal, convex
  Known min: f(0, 0) = 0
  x₀A = (5.000, -5.000)   // baseline
  x₀B = (-8.000, 8.000)   // mirrored
  x₀C = (0.100, 0.100)   // near-optimum
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Method          | x₀A status · value (its, fn) | x₀B status · value (its, fn) |  x₀C status · value (its, fn)
  ----------------+------------------------------+------------------------------+------------------------------
  Nelder-Mead     |    ✅ 1.52e-10 (43 it, 82 fn) |    ✅ 2.57e-10 (44 it, 84 fn) |     ✅ 4.95e-10 (25 it, 47 fn)
  PSO             | ✅ 5.42e-13 (124 it, 6250 fn) | ✅ 1.08e-12 (124 it, 6250 fn) |   ✅ 9.13e-13 (79 it, 4000 fn)
  GradientDescent |  ✅ 1.46e-7 (858 it, 4291 fn) |  ✅ 1.46e-7 (900 it, 4501 fn) | ⚠ 1.20e-5 (4379 it, 21896 fn)
  Adam            |   ⚠ 3.37e-6 (137 it, 686 fn) | ✅ 8.36e-10 (268 it, 1341 fn) |    ✅ 2.50e-15 (51 it, 256 fn)
  L-BFGS          |     ✅ 2.00e-16 (1 it, 10 fn) |     ✅ 5.03e-16 (1 it, 10 fn) |      ✅ 1.64e-19 (2 it, 15 fn)
  L-BFGS-B        |     ✅ 1.07e-16 (2 it, 15 fn) |     ✅ 5.05e-15 (2 it, 15 fn) |      ✅ 3.55e-20 (2 it, 20 fn)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Himmelblau
  Type: Multimodal (4 minima)
  Known min: f(3.000, 2.000) = 0
  x₀A = (0, 0)   // toward basin of (3, 2)
  x₀B = (-4.000, -4.000)   // toward basin of (−3.78, −3.28)
  x₀C = (3.000, -3.000)   // toward basin of (3.58, −1.85)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Method          | x₀A status · value (its, fn) | x₀B status · value (its, fn) | x₀C status · value (its, fn)
  ----------------+------------------------------+------------------------------+-----------------------------
  Nelder-Mead     |   ✅ 1.43e-10 (86 it, 168 fn) |    ✅ 2.67e-10 (41 it, 81 fn) |    ✅ 1.09e-10 (46 it, 89 fn)
  PSO             | ✅ 5.50e-13 (130 it, 6550 fn) | ✅ 4.00e-15 (144 it, 7250 fn) | ✅ 1.13e-14 (144 it, 7250 fn)
  GradientDescent | ✅ 1.03e-12 (260 it, 1301 fn) |   ✅ 1.13e-6 (138 it, 691 fn) | ✅ 2.84e-10 (235 it, 1176 fn)
  Adam            |  ✅ 3.76e-9 (232 it, 1161 fn) | ✅ 5.41e-11 (211 it, 1056 fn) | ✅ 1.57e-10 (226 it, 1131 fn)
  L-BFGS          |     ✅ 6.19e-12 (9 it, 57 fn) |     ✅ 1.05e-15 (7 it, 46 fn) |     ✅ 1.30e-12 (8 it, 51 fn)
  L-BFGS-B        |     ✅ 5.47e-20 (9 it, 75 fn) |     ✅ 2.24e-14 (6 it, 35 fn) |     ✅ 2.03e-11 (7 it, 40 fn)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Three-Hump Camel
  Type: Multimodal (3 local minima)
  Known min: f(0, 0) = 0
  x₀A = (2.000, -1.000)   // baseline (local basin)
  x₀B = (-2.000, 1.000)   // mirror (local basin)
  x₀C = (0.500, -0.500)   // near global
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Method          | x₀A status · value (its, fn) | x₀B status · value (its, fn) | x₀C status · value (its, fn)
  ----------------+------------------------------+------------------------------+-----------------------------
  Nelder-Mead     |      ⚠ 0.2986 (33 it, 67 fn) |      ⚠ 0.2986 (33 it, 67 fn) |    ✅ 1.42e-10 (43 it, 84 fn)
  PSO             | ✅ 1.84e-13 (127 it, 6400 fn) | ✅ 3.39e-12 (118 it, 5950 fn) | ✅ 5.78e-14 (110 it, 5550 fn)
  GradientDescent |   ⚠ 0.2986 (289 it, 1446 fn) |   ⚠ 0.2986 (289 it, 1446 fn) |  ✅ 3.71e-8 (430 it, 2151 fn)
  Adam            |    ⚠ 0.2986 (169 it, 846 fn) |    ⚠ 0.2986 (169 it, 846 fn) |  ✅ 3.26e-10 (167 it, 836 fn)
  L-BFGS          |       ⚠ 0.2986 (9 it, 55 fn) |       ⚠ 0.2986 (9 it, 55 fn) |     ✅ 2.06e-11 (5 it, 31 fn)
  L-BFGS-B        |       ⚠ 0.2986 (7 it, 45 fn) |       ⚠ 0.2986 (7 it, 45 fn) |     ✅ 2.32e-15 (5 it, 35 fn)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Rastrigin
  Type: Multimodal (highly)
  Known min: f(0, 0) = 0
  x₀A = (2.500, -3.500)   // half-integer aligned — sin(2πxᵢ)=0 zeroes out the multimodal term
  x₀B = (2.600, -3.400)   // +0.1 perturbation — breaks the alignment
  x₀C = (0.300, 0.400)   // near global optimum
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Method          | x₀A status · value (its, fn) | x₀B status · value (its, fn) | x₀C status · value (its, fn)
  ----------------+------------------------------+------------------------------+-----------------------------
  Nelder-Mead     |     ⚠ 24.8738 (42 it, 85 fn) |     ⚠ 17.9092 (39 it, 79 fn) |      ⚠ 0.1399 (22 it, 44 fn)
  PSO             | ✅ 4.26e-14 (141 it, 7100 fn) | ✅ 1.85e-11 (134 it, 6750 fn) | ✅ 5.95e-13 (145 it, 7300 fn)
  GradientDescent |  ⚠ 12.9344 (223 it, 1116 fn) |  ⚠ 17.9092 (224 it, 1121 fn) | ✅ 9.52e-11 (242 it, 1211 fn)
  Adam            |  ⚠ 12.9344 (243 it, 1216 fn) |  ⚠ 17.9092 (228 it, 1141 fn) | ✅ 4.76e-11 (239 it, 1196 fn)
  L-BFGS          |     ✅ 3.73e-14 (1 it, 11 fn) |      ⚠ 19.8991 (8 it, 56 fn) |       ⚠ 4.9748 (9 it, 61 fn)
  L-BFGS-B        |      ⚠ 12.9344 (6 it, 60 fn) |       ⚠ 9.9496 (9 it, 70 fn) |      ⚠ 0.9950 (11 it, 70 fn)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Ackley
  Type: Multimodal
  Known min: f(0, 0) = 0
  x₀A = (2.000, -2.000)   // baseline (integer)
  x₀B = (3.500, 3.500)   // mid-range non-integer
  x₀C = (0.500, 0.500)   // near global
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Method          | x₀A status · value (its, fn) |  x₀B status · value (its, fn) | x₀C status · value (its, fn)
  ----------------+------------------------------+-------------------------------+-----------------------------
  Nelder-Mead     |      ⚠ 6.5596 (30 it, 60 fn) |      ⚠ 10.1204 (37 it, 74 fn) |    ✅ 2.34e-9 (82 it, 162 fn)
  PSO             | ✅ 6.76e-11 (198 it, 9950 fn) | ✅ 8.22e-11 (208 it, 10450 fn) | ✅ 5.01e-11 (175 it, 8800 fn)
  GradientDescent |    ⚠ 6.5596 (127 it, 636 fn) |     ⚠ 9.0011 (184 it, 921 fn) |    ⚠ 0.0020 (124 it, 621 fn)
  Adam            |    ⚠ 6.5596 (137 it, 686 fn) |     ⚠ 9.0011 (147 it, 736 fn) |     ⚠ 0.0015 (88 it, 441 fn)
  L-BFGS          |   ✅ 8.39e-12 (18 it, 107 fn) |    ✅ 5.47e-13 (19 it, 111 fn) |   ✅ 1.91e-10 (17 it, 100 fn)
  L-BFGS-B        |    ✅ 1.77e-10 (7 it, 155 fn) |        ⚠ 3.5745 (6 it, 70 fn) |    ✅ 7.77e-12 (7 it, 185 fn)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Lévi N.13
  Type: Multimodal
  Known min: f(1.000, 1.000) = 0
  x₀A = (-4.000, 5.000)   // integer aligned — all sin(kπxᵢ) terms zero
  x₀B = (-3.900, 5.100)   // +0.1 perturbation — breaks the alignment
  x₀C = (1.500, 1.500)   // near global optimum
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Method          | x₀A status · value (its, fn) | x₀B status · value (its, fn) | x₀C status · value (its, fn)
  ----------------+------------------------------+------------------------------+-----------------------------
  Nelder-Mead     |    ⚠ 15.9746 (60 it, 118 fn) |    ⚠ 20.2246 (54 it, 113 fn) |      ⚠ 0.6316 (34 it, 69 fn)
  PSO             | ✅ 9.78e-15 (129 it, 6500 fn) | ✅ 1.05e-13 (124 it, 6250 fn) | ✅ 1.31e-13 (133 it, 6700 fn)
  GradientDescent |   ⚠ 0.1099 (284 it, 1421 fn) |   ⚠ 0.6316 (287 it, 1436 fn) |   ⚠ 0.1099 (267 it, 1336 fn)
  Adam            |  ⚠ 16.9665 (253 it, 1266 fn) |  ⚠ 16.9665 (263 it, 1316 fn) |   ⚠ 0.1099 (211 it, 1056 fn)
  L-BFGS          |     ✅ 1.44e-14 (1 it, 11 fn) |      ⚠ 22.5044 (9 it, 61 fn) |       ⚠ 0.1099 (8 it, 47 fn)
  L-BFGS-B        |    ⚠ 15.9746 (15 it, 165 fn) |     ⚠ 0.1099 (15 it, 130 fn) |       ⚠ 0.1099 (6 it, 65 fn)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Griewank
  Type: Multimodal (shallow ripples)
  Known min: f(0, 0) = 0
  x₀A = (100.000, -200.000)   // baseline (far)
  x₀B = (5.000, 5.000)   // moderate
  x₀C = (0.500, -0.500)   // near global
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Method          |  x₀A status · value (its, fn) | x₀B status · value (its, fn) | x₀C status · value (its, fn)
  ----------------+-------------------------------+------------------------------+-----------------------------
  Nelder-Mead     |       ⚠ 3.7404 (17 it, 33 fn) |      ⚠ 0.0074 (44 it, 84 fn) |    ✅ 1.53e-10 (38 it, 73 fn)
  PSO             | ✅ 7.01e-13 (238 it, 11950 fn) | ✅ 3.01e-13 (126 it, 6350 fn) | ✅ 4.00e-15 (178 it, 8950 fn)
  GradientDescent |   ⚠ 12.3530 (978 it, 4891 fn) |  ⚠ 0.0074 (1257 it, 6286 fn) | ⚠ 5.58e-7 (1123 it, 5616 fn)
  Adam            |   ⚠ 12.3530 (228 it, 1141 fn) |   ⚠ 0.0074 (200 it, 1001 fn) |  ✅ 3.05e-10 (170 it, 851 fn)
  L-BFGS          |       ⚠ 12.3530 (7 it, 40 fn) |       ⚠ 0.0074 (8 it, 46 fn) |     ✅ 1.62e-11 (4 it, 25 fn)
  L-BFGS-B        |       ⚠ 12.3530 (5 it, 40 fn) |       ⚠ 0.0074 (7 it, 45 fn) |     ✅ 1.62e-11 (4 it, 25 fn)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Styblinski-Tang
  Type: Multimodal
  Known min: f(-2.904, -2.904) = -78.3323
  x₀A = (0, 0)   // baseline
  x₀B = (3.000, 3.000)   // opposite-sign basin
  x₀C = (-2.000, -2.000)   // near global
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Method          | x₀A status · value (its, fn) | x₀B status · value (its, fn) | x₀C status · value (its, fn)
  ----------------+------------------------------+------------------------------+-----------------------------
  Nelder-Mead     |   ⚠ -64.1956 (90 it, 177 fn) |    ⚠ -50.0589 (36 it, 72 fn) |    ✅ -78.3323 (38 it, 71 fn)
  PSO             | ✅ -78.3323 (124 it, 6250 fn) | ✅ -78.3323 (147 it, 7400 fn) | ✅ -78.3323 (127 it, 6400 fn)
  GradientDescent | ✅ -78.3323 (227 it, 1136 fn) |  ⚠ -50.0589 (154 it, 771 fn) |  ✅ -78.3323 (199 it, 996 fn)
  Adam            |   ⚠ -78.3321 (78 it, 391 fn) |   ⚠ -50.0589 (80 it, 401 fn) |  ✅ -78.3323 (197 it, 986 fn)
  L-BFGS          |     ✅ -78.3323 (7 it, 44 fn) |     ⚠ -50.0589 (6 it, 39 fn) |     ✅ -78.3323 (6 it, 39 fn)
  L-BFGS-B        |     ✅ -78.3323 (4 it, 50 fn) |     ⚠ -50.0589 (4 it, 30 fn) |     ✅ -78.3323 (5 it, 30 fn)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Easom
  Type: Nearly flat, narrow peak
  Known min: f(3.142, 3.142) = -1.0000
  x₀A = (1.000, 1.000)   // baseline (flat region)
  x₀B = (2.500, 2.500)   // closer to peak
  x₀C = (3.000, 3.000)   // near peak
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Method          |  x₀A status · value (its, fn) | x₀B status · value (its, fn) | x₀C status · value (its, fn)
  ----------------+-------------------------------+------------------------------+-----------------------------
  Nelder-Mead     |     ⚠ -8.11e-5 (20 it, 40 fn) |     ✅ -1.0000 (34 it, 67 fn) |      ⚠ -0.9998 (7 it, 16 fn)
  PSO             |   ✅ -1.0000 (112 it, 5650 fn) |  ✅ -1.0000 (108 it, 5450 fn) |  ✅ -1.0000 (113 it, 5700 fn)
  GradientDescent |    ⚠ -3.03e-5 (50 it, 251 fn) |  ✅ -1.0000 (245 it, 1226 fn) |   ✅ -1.0000 (181 it, 906 fn)
  Adam            |    ⚠ -8.11e-5 (58 it, 291 fn) |   ✅ -1.0000 (187 it, 936 fn) |   ✅ -1.0000 (128 it, 641 fn)
  L-BFGS          | ❌ -4.81e-5 (1000 it, 5005 fn) |      ✅ -1.0000 (4 it, 27 fn) |      ✅ -1.0000 (4 it, 26 fn)
  L-BFGS-B        |      ⚠ -8.11e-5 (2 it, 55 fn) |      ✅ -1.0000 (4 it, 30 fn) |      ✅ -1.0000 (3 it, 25 fn)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Goldstein-Price
  Type: Multimodal
  Known min: f(0, -1.000) = 3.0000
  x₀A = (0, 0)   // baseline
  x₀B = (1.000, 1.000)   // away from global
  x₀C = (-0.500, -1.000)   // near global
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Method          | x₀A status · value (its, fn) | x₀B status · value (its, fn) | x₀C status · value (its, fn)
  ----------------+------------------------------+------------------------------+-----------------------------
  Nelder-Mead     |    ⚠ 30.0000 (75 it, 143 fn) |    ⚠ 840.1099 (12 it, 24 fn) |      ✅ 3.0000 (49 it, 95 fn)
  PSO             |   ✅ 3.0000 (136 it, 6850 fn) |   ✅ 3.0000 (138 it, 6950 fn) |   ✅ 3.0000 (127 it, 6400 fn)
  GradientDescent |     ⚠ 334.3336 (5 it, 30 fn) |    ⚠ 1876.0000 (3 it, 20 fn) |     ⚠ 279.1250 (3 it, 20 fn)
  Adam            |  ⚠ 30.0000 (255 it, 1276 fn) |  ⚠ 84.0000 (257 it, 1286 fn) |     ⚠ 3.0166 (61 it, 306 fn)
  L-BFGS          |     ⚠ 30.0000 (11 it, 71 fn) |     ⚠ 84.0000 (14 it, 89 fn) |      ✅ 3.0000 (12 it, 76 fn)
  L-BFGS-B        |     ⚠ 30.0000 (11 it, 70 fn) |     ⚠ 84.0000 (13 it, 75 fn) |      ✅ 3.0000 (11 it, 65 fn)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  McCormick
  Type: Multimodal
  Known min: f(-0.547, -1.547) = -1.9133
  x₀A = (0, 0)   // baseline — PSO diverges here without bounds
  x₀B = (-1.000, -2.000)   // near global
  x₀C = (2.000, 2.000)   // opposite side
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Method          |     x₀A status · value (its, fn) |     x₀B status · value (its, fn) |     x₀C status · value (its, fn)
  ----------------+----------------------------------+----------------------------------+---------------------------------
  Nelder-Mead     |        ✅ -1.9132 (79 it, 153 fn) |         ✅ -1.9132 (37 it, 70 fn) |          ⚠ 1.2284 (33 it, 66 fn)
  PSO             | ❌ -3.84e+4 (10000 it, 500050 fn) | ❌ -2.72e+4 (10000 it, 500050 fn) | ❌ -7.58e+4 (10000 it, 500050 fn)
  GradientDescent |      ✅ -1.9132 (417 it, 2086 fn) |      ✅ -1.9132 (419 it, 2096 fn) |       ⚠ 1.2284 (322 it, 1611 fn)
  Adam            |       ✅ -1.9132 (193 it, 966 fn) |       ✅ -1.9132 (156 it, 781 fn) |        ⚠ 1.2284 (190 it, 951 fn)
  L-BFGS          |          ✅ -1.9132 (7 it, 41 fn) |          ✅ -1.9132 (4 it, 25 fn) |           ⚠ 1.2284 (5 it, 31 fn)
  L-BFGS-B        |          ✅ -1.9132 (6 it, 35 fn) |          ✅ -1.9132 (4 it, 25 fn) |           ⚠ 1.2284 (5 it, 30 fn)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  SUMMARY — global optimum hit count across all (problem, x₀) pairs
  Total runs per optimizer: 45
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Method          | Global opts found | Success rate
  ----------------+-------------------+-------------
  Nelder-Mead     |           24 / 45 |        53.3%
  PSO             |           42 / 45 |        93.3%
  GradientDescent |           19 / 45 |        42.2%
  Adam            |           22 / 45 |        48.9%
  L-BFGS          |           31 / 45 |        68.9%
  L-BFGS-B        |           29 / 45 |        64.4%

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Legend:  ✅ found global (converged & quality < 1e-3)
           ⚠  converged but landed far from global (local minimum)
           ❌ did not converge
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
