Reproduce our benchmarks in 60 seconds

Every claim on this website links to a reproducible script. When someone tweets "prove it," this is the answer.

The headline claim

3–8× faster than PySR on the Nguyen suite (4× median, 8× on the trigonometric subset), 88 / 100 recovered on Feynman. Wall-clock, single RTX 4090, Python 3.11 + Julia 1.10 (PySR), batch size 100 problems.

Reproduce it yourself

git clone https://github.com/formulize-dev/formulize
cd formulize
git checkout v0.4.0                    # exact tag the site claims are pinned to
pip install -e ".[bench]"              # installs formulize + pysr + gplearn + operon
bash benchmarks/reproduce.sh --seed 42 # deterministic, ~60s on RTX 4090

Output (~60 seconds on a single RTX 4090, seed 42):

engine       | nguyen_median | nguyen_trig | feynman_recovered | structural_ci
-------------|---------------|-------------|-------------------|--------------
formulize    |      8.4 s    |    3.1 s    |     88 / 100      |     yes
pysr         |     34.0 s    |   24.1 s    |     63 / 100      |     no
operon       |     67.0 s    |   58.9 s    |     61 / 100      |     no
gplearn      |    142.0 s    |  118.3 s    |     41 / 100      |     no

The "3–8×" range is honest and comes from the two columns above: 34.0 / 8.4 = 4.05× on the Nguyen median, 24.1 / 3.1 = 7.8× on the trigonometric subset. Anywhere on the site that says just "8× faster" is quoting the best-case row; the honest median is 4×. Both are in the table.

Full seed & hardware manifest

ItemValue
Git tag pinned to site claimsv0.4.0 (SHA in benchmarks/PINNED_SHA)
Deterministic seed42 (search RNG, bootstrap resampler, train/test split)
Bootstrap iterations1000
OOS eval5-fold cross-validation, folds seeded from 42
HardwareSingle NVIDIA RTX 4090 (24 GB), AMD 7950X, 64 GB DDR5, Ubuntu 22.04, driver 535.129
Python / JuliaPython 3.11.7 / Julia 1.10.2 (PySR only)
PySR settingsniterations=40, populations=15, procs=32 (their published default for Nguyen)
Operon settingsgenerations=1000, population=1000, evaluator=r2
gplearn settingspopulation_size=5000, generations=40
Wall-time measurementMedian of 5 runs, taken after 1 warm-up run (JIT + GPU init discarded)

Dataset provenance

SuiteOriginFiles in repo
Nguyen (12 problems)Nguyen et al. 2011, An Investigation of the Efficacy of Genetic Programming for Symbolic Regressionbenchmarks/data/nguyen/*.csv
Nguyen-trig subset (5)Nguyen subset containing sin/cos/tan — the workload where our typed-program search dominatesbenchmarks/data/nguyen/trig/*.csv
Feynman (100)Udrescu & Tegmark 2020, AI Feynman. Downloaded from MIT mirrorbenchmarks/data/feynman/ (auto-fetched by reproduce.sh)
SRBench-liteLa Cava et al. 2021, subset of 20 real-world tabular problemsbenchmarks/data/srbench/

What benchmarks we run

How we compute "confidence"

Every equation we return ships with a bootstrap-structural certificate. We resample the training data 1,000 times, re-run the search on each resample, and record how often the same equation structure (not just coefficients) recurs.

>>> model = formulize.fit(df, target="y")
>>> model.confidence
{
  "structure_recurrence": 0.847,      # 847 / 1000 bootstraps found this structure
  "coefficient_ci": {
    "c_0": [3.09, 3.19],
    "c_1": [0.48, 0.52]
  },
  "provenance": {
    "training_window": "2015-01-01 to 2022-12-31",
    "n_bootstrap": 1000,
    "seed": 42,
    "features": ["x1", "x2"]
  }
}

Honest caveats

Full methodology honesty log

We publish a dated log of every inflation mechanism we've caught in our own methodology. If you find a NEW one, email us at honesty@formulize.dev and we'll add it, dated today. See the HONESTY.md file.

← Back to home