# Raphaël Anjou's experiments

> A notebook of Eternity II search experiments, organised into the shared engines they run on, the combination pipelines that chase the score, three studies that take one search paradigm apart a decision at a time, and exact endgame solves. Each has its idea, its best board, and the questions it left open. The best reaches 463 of 480.

- Canonical page (with interactive figures/demos): https://eternity2.dev/research/lab/experiments/raphael-anjou/
- Updated: 2026-07-21

---
This is [Raphaël Anjou's](/research/people/raphael-anjou) notebook of Eternity II
search experiments. Some are original ideas; some faithfully reimplement a known
community technique to measure exactly what it buys. Every one records its idea,
the board it reached, and the questions it left open, and every board is real and
checkable in the [viewer](/viewer). The best reaches **463 of 480** matched edges;
the community's best on the same puzzle is 470. Methods and boards are here in
full, nothing withheld.

It is a notebook, not a single result, so it is worth knowing how it is laid out
before diving in.

## What's in this section

Two kinds of thing live here: the **apparatus** the experiments run on, and the
**experiments** themselves. The experiments come in three flavours: pipelines that
chase the whole-board score, studies that isolate one search decision at a time,
and exact solves that *prove* a small region rather than guess it. Start wherever
the question you care about lives.

<div className="not-prose grid gap-4 md:grid-cols-2">
  - [The engines](/research/lab/experiments/raphael-anjou/engines) — The shared machinery the experiments run on: a constructive beam producer, a destroy-and-repair local search, and a family of CSP presets. Documented once here so each study can point back instead of re-explaining the machine. Start here if you want to know how a search works before reading what a study did with it.
  - [Combination pipelines](/research/lab/experiments/raphael-anjou/pipelines) — The named runs that push the score. Each is a pipeline, not a single algorithm: build a board with one engine, then lift or finish it with another. The interest is in the division of labour between construction, repair and an exact endgame. This is where the record-approaching boards come from.
  - [The DFS study](/research/lab/experiments/raphael-anjou/dfs-study) — Depth-first backtracking, dissected. A family of from-scratch backtrackers, each one change apart (fill order, heuristic, break policy), run on the same ten variants under a fixed budget, to price what each idea is worth.
  - [The repair study](/research/lab/experiments/raphael-anjou/repair-study) — Its sibling, for destroy-and-repair local search: which region to destroy, how to rebuild it, when to keep a move, what board to start from. The loop the records actually reach the top with, taken apart one decision at a time.
  - [Learning from strong boards](/research/lab/experiments/raphael-anjou/learning) — The third study, turned inward: instead of varying the search, vary what it is allowed to *know*. Five experiments mine the corpus of strong boards for structure and feed it back in, and all five hit the same wall.
  - [Meet in the middle](/research/lab/experiments/raphael-anjou/meet-in-the-middle) — Exact endgame solves: enumerate a region from two ends and join on the seam to find the true best completion, with a proof nothing scores higher. These measure a small region exactly rather than chase the whole-board score.
  - [Going fast](/research/lab/experiments/raphael-anjou/going-fast) — The other lever: not a smarter search, a faster one. A portable-Rust backtracker that generates and compiles per-puzzle Rust, taken rung by rung to McGavin-class throughput - a tie with the community's fastest hand-tuned C on hard, realistic boards, from a safe language. A speed result, on an axis of its own from the scores above.
</div>

The two constructive engines, the beam producer and the ALNS polish stage, do not
yet have their own write-ups; where a pipeline steers one, its own page says what
that engine does at the level the study needs. The CSP presets are the one engine
documented and measured in full.

## How to read the scores

The chart and table below carry two kinds of number that must never be conflated,
so they are drawn as separate groups.

- **Explore** is the best board each method reached in exploratory runs on 8
  cores, wall-clock not logged. These are the headline numbers the write-ups
  quote, and they top out at PALIMPSEST's 463.
- **Bench** is the standardized single-core benchmark: one core, sixty seconds,
  every board re-scored by the same canonical scorer. Lower, and *directly
  comparable* across methods in a way the explore numbers are not.

Not every experiment earns a row. The three studies vary a knob across a grid
rather than producing one board, so the [DFS](/research/lab/experiments/raphael-anjou/dfs-study)
and [repair](/research/lab/experiments/raphael-anjou/repair-study) studies carry
their own leaderboards instead of a chart row; only their single best bench result
appears here. The five [learning](/research/lab/experiments/raphael-anjou/learning)
experiments each reach one scored board, so they keep their rows as well as their
study home. The bench rows above are study results, not standalone pages, so they
appear only on the chart.
> **[Interactive: ExperimentScoreChart]** Rendered on the canonical page (link above); not shown in this markdown export.
The named experiments as a sortable table (click a column head to reorder by
score, name, method, or month). Author, month, rigor and reproducibility are read
from each experiment's own page, so this summary stays in step with them.

<ExperimentResultsTable data={scores.filter((s) => s.group !== "bench")} />

## Pages in this section

- [The reference engine behind this site](https://eternity2.dev/research/lab/experiments/raphael-anjou/engine) — The Rust-to-WebAssembly backtracker that runs every live demo and checks every number on this wiki. Not a record machine but a reference engine, ported four times and parity-tested byte-for-byte, built so the claims here can be re-run.
- [Learning from strong boards](https://eternity2.dev/research/lab/experiments/raphael-anjou/learning) — A study in five experiments of one idea: instead of searching Eternity II from first principles, mine the corpus of strong boards already found for structure and feed it back into a search. A position prior, a learned move-vote, a scarce-demand compass, an anti-pattern miner, and a record decode, ordered from the simplest signal to the subtlest, and the one wall all five reach.
- [The engines](https://eternity2.dev/research/lab/experiments/raphael-anjou/engines) — The shared engines under Raphaël Anjou's experiments. The named experiments are studies that run on these; this is the apparatus they share. The CSP presets and the Verhaard reimplementation are documented here; the constructive engines are not yet published.
- [The JIT backtracker: portable Rust that ties hand-tuned C on hard boards](https://eternity2.dev/research/lab/experiments/raphael-anjou/jit-backtracker) — A safe, portable Rust depth-first backtracker, specialised at runtime by emitting and compiling per-puzzle Rust, taken from 43 to 123 million search-nodes per second on one core. Measured fairly against Peter McGavin's C on the same machine: a tie on hard, deep boards like the real Eternity II, and about 44% of its speed on easy ones. Every rung searches the identical tree; the whole gain is code, not algorithm.
- [Going fast: when a solver spends its budget on speed](https://eternity2.dev/research/lab/experiments/raphael-anjou/going-fast) — Some Eternity II engines pour their effort into walking the search tree as fast as possible; others spend it on judgement about where to walk. This is the case for the first kind - what raw throughput buys, the three different things people mean by "fast", and why the fastest engine ever built still cannot solve the puzzle.
- [Combination pipelines](https://eternity2.dev/research/lab/experiments/raphael-anjou/pipelines) — The named search experiments that chase score. Each is a pipeline rather than a single algorithm: it builds a board with one engine, then lifts or finishes it with another. Each records its idea, its best board, and the questions it left open.
- [The DFS study](https://eternity2.dev/research/lab/experiments/raphael-anjou/dfs-study) — One question, asked carefully: among depth-first backtrackers for Eternity II, what does each fill order, each heuristic, and the break mechanism actually buy? A family of from-scratch backtrackers, each one change apart, run on the same ten corner-pinned variants, single core, sixty seconds.
- [The hint study](https://eternity2.dev/research/lab/experiments/raphael-anjou/hint-study) — Give a backtracker five correct pieces for free, in the puzzle's own clue geometry. It turns out not to help, and depending on the fill order it can hurt badly, because a pinned piece is a hard constraint a fixed fill order must satisfy on arrival. A family of fill paths, run on the same hinted boards, single core, measured against no hints at all.
- [The repair study](https://eternity2.dev/research/lab/experiments/raphael-anjou/repair-study) — The sibling of the DFS study, for the other way people attack Eternity II: destroy part of a board, rebuild it, keep the change if it helps. One question, asked carefully. What does each decision in that loop buy: which region to destroy, how to rebuild it, when to keep a move, when to restart, and what board to start from?
- [Meet in the middle](https://eternity2.dev/research/lab/experiments/raphael-anjou/meet-in-the-middle) — Exact endgame experiments that meet in the middle: enumerate a region from two ends and join on the seam, to find the true best completion with a proof rather than a heuristic's best guess. These measure a small region exactly instead of chasing the whole-board score.
