Skip to content

Benchmark Methodology

This document describes the rigorous methodology used for benchmarking optimization algorithms in Useful Optimizer.

Protocol Overview

Our benchmarking follows established standards from the optimization research community, particularly COCO (Comparing Continuous Optimizers) and IOHprofiler platforms.

Key Principles

  1. Reproducibility: Fixed random seeds for each run
  2. Statistical Validity: 30 independent runs per configuration
  3. Fair Comparison: Same budget (function evaluations) for all algorithms
  4. Comprehensive Testing: Multiple functions, dimensions, and metrics

Test Functions

Sphere Function

f(x)=i=1nxi2
  • Optimum: f(0)=0
  • Bounds: [5.12,5.12]n
  • Characteristics: Unimodal, separable, convex

Rosenbrock Function

f(x)=i=1n1[100(xi+1xi2)2+(1xi)2]
  • Optimum: f(1)=0
  • Bounds: [5,10]n
  • Characteristics: Unimodal, non-separable, ill-conditioned

Rastrigin Function

f(x)=10n+i=1n[xi210cos(2πxi)]
  • Optimum: f(0)=0
  • Bounds: [5.12,5.12]n
  • Characteristics: Multi-modal, separable

Ackley Function

f(x)=20exp(0.21ni=1nxi2)exp(1ni=1ncos(2πxi))+20+e
  • Optimum: f(0)=0
  • Bounds: [32.768,32.768]n
  • Characteristics: Multi-modal, nearly flat outer region

Griewank Function

f(x)=i=1nxi24000i=1ncos(xii)+1
  • Optimum: f(0)=0
  • Bounds: [600,600]n
  • Characteristics: Multi-modal, many local minima

Experimental Setup

Parameters

ParameterValue
Dimensions2, 10, 30
Independent runs30
Maximum iterations100
Population size30 (where applicable)
Random seeds42, 43, ..., 71

Algorithm Settings

All algorithms use their default parameters as defined in the library, with the following exceptions:

  • Population-based algorithms use population_size=30
  • All algorithms use max_iter=100

Statistical Analysis

Friedman Test

Non-parametric test for comparing multiple algorithms across multiple functions:

χF2=12Nk(k+1)[j=1kRj2k(k+1)24]

where N is the number of functions, k is the number of algorithms, and Rj is the average rank of algorithm j.

Wilcoxon Signed-Rank Test

Pairwise comparison with Bonferroni correction:

αadjusted=αm

where m is the number of pairwise comparisons.

ECDF Calculation

For a set of runs, the ECDF at budget B is:

ECDF(B)=Number of runs reaching target at budgetBTotal number of runs

Target precisions: 101,103,105,107

Metrics Reported

Primary Metrics

  • Best Fitness: Minimum fitness achieved
  • Mean Fitness: Average across 30 runs
  • Std Fitness: Standard deviation across runs
  • Success Rate: Proportion of runs reaching target

Secondary Metrics

  • Median Fitness: Robust central tendency
  • Mean Time: Average wall-clock time
  • Function Evaluations: Number of objective function calls

Reproducibility

All benchmark results can be reproduced using:

bash
# Set up environment
uv sync --all-extras

# Run benchmarks
uv run python benchmarks/run_benchmark_suite.py \
    --output-dir benchmarks/output

# Generate visualizations
uv run python benchmarks/generate_plots.py \
    --results benchmarks/output/results.json \
    --output-dir benchmarks/output

References

  1. Hansen, N., et al. "COCO: A Platform for Comparing Continuous Optimizers in a Black-Box Setting." arXiv:1603.08785 (2016).

  2. Doerr, C., et al. "IOHprofiler: A Benchmarking and Profiling Tool for Iterative Optimization Heuristics." arXiv:1810.05281 (2018).

  3. Demšar, J. "Statistical Comparisons of Classifiers over Multiple Data Sets." JMLR 7 (2006): 1-30.

Released under the MIT License.