Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

GTOP optimizer comparison

The seven problems, absolute-best values, and stop targets are identical to the native GTOP report. Each entry is based on 100 independent experiments, a maximum of 240,000 objective evaluations, root seed 1, and at most 24 evaluation workers.

Problem definitions and putative best solutions come from ESA’s GTOP database. See ESA’s TandEM page for the mission model, bounds, and problem instances used by that case.

The workers column is the number actually available to the optimizer. genetic_algorithms 3.0.0 L-SHADE is correctly shown as one worker because its DE engine has no parallel population-evaluation API. BIPOP population sizes vary between restarts.

Standard deviations use the population definition (ddof=0). Wall time covers only the optimizer call; compilation and process startup are excluded.

Main results

  • fcmaes produces the best mean final optimum on six of seven problems and the lowest mean optimizer wall time on five of seven.
  • BIPOP-CMA-ES produces the best equal-budget Tandem mean (-495.388325), but no equal-budget method reaches the -1493 target.
  • The pre-registered BIPOP-CMA-ES stress test also reaches 0/1,000 targets with 10,000,000 configured evaluations per retry; its best result is -1410.050665 after 9,466,290,846 actual evaluations.
  • fcmaes coordinated DE→CMA retry reaches the Tandem target in 85/100 experiments. It uses a much larger adaptive budget—230,727,025 actual evaluations on average—so this is evidence for adaptive coordination, not an equal-budget comparison.

Cassini1

Library / algorithmParallel modeVersionWorkersPop/batchSuccessMean optimumSdev optimumMean evalsMean wall msSdev wall ms
fcmaes / BiteOptindependent-retries0.1.0242759%5.182604510.70149923658953.1052.728
fcmaes / DE→CMAcoordinated-retries0.1.024varies7%5.362194790.71184423901355.6192.064
fcmaes / BiteOptask-tell-batch0.1.0242413%9.828060063.76448221197319.54179.221
cmaes / CMA-ESparallel-population0.2.224240%14.7874773.176431771824.4065.754
cmaes / BIPOP-CMA-ESparallel-bipop0.2.224varies2%7.094239422.71647235984516.34074.186
genetic_algorithms / L-SHADEnative-serial3.0.01480%6.55433731.12002240000908.6136.266
math-optimisation / DE/best/1/binparallel-population0.5.1024902%12.29183173.65338235368150.81520.624
argmin / PSOparallel-population0.11.024480%14.2876334.46822240000257.4859.837

Cassini2

Library / algorithmParallel modeVersionWorkersPop/batchSuccessMean optimumSdev optimumMean evalsMean wall msSdev wall ms
fcmaes / BiteOptindependent-retries0.1.024750%13.91957122.2458324000072.8882.691
fcmaes / DE→CMAcoordinated-retries0.1.024varies0%14.52843152.016223899176.5212.960
fcmaes / BiteOptask-tell-batch0.1.024240%20.06649152.93358240000601.90718.568
cmaes / CMA-ESparallel-population0.2.224240%18.58138313.65102140566430.066154.935
cmaes / BIPOP-CMA-ESparallel-bipop0.2.224varies0%17.00615793.018842400001088.518173.782
genetic_algorithms / L-SHADEnative-serial3.0.01480%17.2866872.106752400001239.05326.170
math-optimisation / DE/best/1/binparallel-population0.5.10243300%19.34597123.86131239910131.6622.288
argmin / PSOparallel-population0.11.024480%27.84983036.09158240000353.54914.068

Gtoc1

Library / algorithmParallel modeVersionWorkersPop/batchSuccessMean optimumSdev optimumMean evalsMean wall msSdev wall ms
fcmaes / BiteOptindependent-retries0.1.024331%-1092383.8414002023999174.3121.982
fcmaes / DE→CMAcoordinated-retries0.1.024varies0%-1128295.8812665823994478.7162.232
fcmaes / BiteOptask-tell-batch0.1.024240%-662854.873363260240000397.13214.416
cmaes / CMA-ESparallel-population0.2.224240%-579699.0493136601851431.9249.110
cmaes / BIPOP-CMA-ESparallel-bipop0.2.224varies0%-978550.388151083240000590.71040.260
genetic_algorithms / L-SHADEnative-serial3.0.01480%-843070.5391176242400001307.0304.971
math-optimisation / DE/best/1/binparallel-population0.5.10241200%-511531.964343885240000152.6633.654
argmin / PSOparallel-population0.11.024480%-356307.27324241240000303.45012.445

Messenger

Library / algorithmParallel modeVersionWorkersPop/batchSuccessMean optimumSdev optimumMean evalsMean wall msSdev wall ms
fcmaes / BiteOptindependent-retries0.1.024630%11.73159860.82132724000058.0212.564
fcmaes / DE→CMAcoordinated-retries0.1.024varies0%11.85837120.77085923967660.9362.318
fcmaes / BiteOptask-tell-batch0.1.024240%13.27429262.26318240000540.78227.900
cmaes / CMA-ESparallel-population0.2.224240%14.8760862.960595194286.019107.668
cmaes / BIPOP-CMA-ESparallel-bipop0.2.224varies0%12.61616031.49001240000984.62496.962
genetic_algorithms / L-SHADEnative-serial3.0.01480%14.22938920.975518240000977.8827.742
math-optimisation / DE/best/1/binparallel-population0.5.10242700%14.23978472.49657239760134.6832.755
argmin / PSOparallel-population0.11.024480%19.08726254.09862240000332.73714.719

Rosetta

Library / algorithmParallel modeVersionWorkersPop/batchSuccessMean optimumSdev optimumMean evalsMean wall msSdev wall ms
fcmaes / BiteOptindependent-retries0.1.024750%4.319878921.2648624000070.0082.387
fcmaes / DE→CMAcoordinated-retries0.1.024varies0%3.00246450.67527823994074.4721.843
fcmaes / BiteOptask-tell-batch0.1.024240%5.321048932.67627240000593.41226.393
cmaes / CMA-ESparallel-population0.2.224240%4.519770512.40153141104422.501134.065
cmaes / BIPOP-CMA-ESparallel-bipop0.2.224varies0%4.328811191.93432400001097.152169.559
genetic_algorithms / L-SHADEnative-serial3.0.01480%6.909084641.282612400001216.11815.307
math-optimisation / DE/best/1/binparallel-population0.5.10243300%7.270981613.43071239910136.4692.948
argmin / PSOparallel-population0.11.024480%13.845465.49368240000372.60917.722

Tandem

Library / algorithmParallel modeVersionWorkersPop/batchSuccessMean optimumSdev optimumMean evalsMean wall msSdev wall ms
fcmaes / BiteOptindependent-retries0.1.024630%-384.40993129.76224000064.7801.755
fcmaes / DE→CMAcoordinated-retries0.1.024varies0%-349.165192166.5723962265.4622.275
fcmaes / BiteOptask-tell-batch0.1.024240%-182.747996152.29240000574.29524.385
cmaes / CMA-ESparallel-population0.2.224240%-289.546806215.49282754243.74094.737
cmaes / BIPOP-CMA-ESparallel-bipop0.2.224varies0%-495.388325162.818240000983.451105.756
genetic_algorithms / L-SHADEnative-serial3.0.01480%-139.86469881.61562400001052.5168.690
math-optimisation / DE/best/1/binparallel-population0.5.10242700%-157.398465210.524239760137.1543.335
argmin / PSOparallel-population0.11.024480%-53.166501991.0731240000340.44316.549

Sagas

Library / algorithmParallel modeVersionWorkersPop/batchSuccessMean optimumSdev optimumMean evalsMean wall msSdev wall ms
fcmaes / BiteOptindependent-retries0.1.024452%85.559983755.48423999634.0392.278
fcmaes / DE→CMAcoordinated-retries0.1.024varies0%119.65696663.609923246036.8271.628
fcmaes / BiteOptask-tell-batch0.1.024241%203.71028251.1415238155410.99834.813
cmaes / CMA-ESparallel-population0.2.224240%235.80549715.42544107385.14128.441
cmaes / BIPOP-CMA-ESparallel-bipop0.2.224varies0%174.34121155.1338240000644.90741.164
genetic_algorithms / L-SHADEnative-serial3.0.01480%136.30812938.0583240000557.3294.962
math-optimisation / DE/best/1/binparallel-population0.5.10241800%228.1791986.21341239940102.1494.067
argmin / PSOparallel-population0.11.024480%242.83397531.5997240000255.25911.838

Relation to coordinated retry

The native coordinated DE→CMA retry results use adaptive budgets that are much larger than the common 240,000-evaluation allowance above. Six problems reached the stop value in all 100 experiments; Tandem reached it in 85:

ProblemCoordinated successMean actual evalsMultiple of 240kExact configured ceiling
Cassini1100%1,525,8026.4×153,000,000
Cassini2100%19,890,04582.9×229,500,000
Gtoc1100%14,729,20061.4×382,500,000
Messenger100%19,603,56781.7×306,000,000
Rosetta100%21,406,66689.2×153,000,000
Tandem85%230,727,025961.4×765,000,000
Sagas100%8,978,82437.4×153,000,000

The coordinated ceilings are the exact sums of retry limits growing linearly from 1,500 to 75,000 evaluations over each problem’s retry cap. Every recorded run consumed less than its theoretical ceiling. These results demonstrate the quality available from fcmaes coordination at a larger budget; they are not an equal-budget wall-time comparison.

For context, the original Python/C++ fcmaes Performance report records 81/100 Tandem successes, 166.92 s mean wall time, and 147.87 s wall-time sdev with 32 parallel Python processes. The native Rust run records 85/100, 40.207 s, and 39.105 s using 32 native retry threads. This is a historical implementation comparison, not the equal-budget crate comparison above.

Tandem long-retry stress test

The alternative was selected before this stress test by the lowest mean Tandem optimum in the 100-run, 240,000-evaluation table:

Selection candidateMean Tandem optimum
cmaes/BIPOP-CMA-ES/parallel-bipop-495.388325
cmaes/CMA-ES/parallel-population-289.546806
math-optimisation/DE/best/1/bin/parallel-population-157.398465
genetic_algorithms/L-SHADE/native-serial-139.864698
argmin/PSO/parallel-population-53.1665019

Selected: cmaes / BIPOP-CMA-ES.

The stress test ran 1,000 independent retries with 10,000,000 evaluations allowed per retry. It used 24 concurrent optimizer processes and one optimizer thread per process, avoiding nested parallelism.

RetriesConfigured total evalsActual total evalsSuccessesBest optimumMean optimumSdev optimumTotal wall time
1,00010,000,000,0009,466,290,8460-1410.05066-780.409885188.4172236.024 s

Mean single-retry optimizer time was 53.039 s (population sdev 5.040 s).

None of the 1,000 long retries reached the Tandem stop value -1493. This is strong empirical evidence for this implementation and configuration, not a mathematical impossibility result.

Interpretation constraints

  • BiteOpt retry uses 24 independent 10,000-evaluation searches. BiteOpt ask/tell instead uses one 240,000-evaluation state with batches of 24.
  • The equal-budget fcmaes coordinated row uses 48 DE→CMA retries on 24 workers. Retry limits grow from 2,500 to 7,500 evaluations and sum to exactly 240,000; later retries can adapt their sigma and local box from retained solutions.
  • BIPOP-CMA-ES is itself an adaptive restart strategy, not plain single-population CMA-ES: it dynamically allocates restarts between small and increasingly large populations. Its conceptual counterpart is coordinated retry, while BiteOpt retry remains the fixed-budget independent-restart baseline.
  • BiteOpt also adapts selectors inside each optimizer state. This is different from BIPOP population-size adaptation and coordinated retry’s cross-run sigma/box adaptation; the table exposes all three rather than treating every method as straight retry.
  • Population optimizers use their native population evaluation. Equal evaluation budgets and worker caps do not make their search topology identical.
  • cmaes is unconstrained, so its adapter searches normalized coordinates and reflects out-of-range coordinates into [0,1] before decoding the original GTOP bounds.
  • genetic_algorithms DE does not enforce RangeGene bounds during mutation. Its adapter reflects trials into the declared box before objective evaluation.
  • math-optimisation is GPL-3.0-or-later. It is built only in the external comparison workspace and is not a dependency of fcmaes-rust.

The individual raw files and the combined raw/all_results.tsv contain every seed, final objective, actual evaluation count, success flag, and wall-time measurement.