Repository navigation
bench: outer mutation loop for the evolve harness (genome evolutionary search) - #520
Merged
Merged
Conversation
…tionary search) Adds the generation half of the AlphaEvolve-style loop that #519 lacked. A candidate is a genome (independent kernel-design choices); a builder renders it to a runnable callable; the #519 evaluator scores it under its correctness oracle. Mutation perturbs one gene, crossover mixes two parents, elitist selection breeds the next generation from the fastest ADMISSIBLE genomes -- an invalid or physics-breaking genome is culled by the oracle, so the search explores freely with no corpse risk. - benchmarks/evolve/mutate.py: HAPPLY_GENES/RR_GENES + builders (build_apply, build_rr), genetic operators (mutate/crossover/dedup), and evolve() with a genome cache, elitism, and convergence patience. Runs in-process (on asus). - benchmarks/evolve_run.py: gwq entrypoint; per-generation trace + final leaderboard over every genome evaluated; best on the last line. This is the autonomous backend (no external model). The file-per-candidate path in driver.py remains the hook for LLM/agent-authored candidates. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…utator backend) Demonstrates the file-per-candidate (LLM/agent-authored) mutator backend that complements the genome loop. cached_nl_fold.py is an OFF-GENOME candidate: it memoises the dij@p projector fold across the many applies of a fixed H (exact, ~1e-13) -- a projector-heavy/large-cell lever, not reachable by the genome axes. Authored by a mutator agent given the kernel + champions + oracle; the oracle gates it, so a wrong candidate is culled not shipped. README documents both backends and the honest scope. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The generation half of the AlphaEvolve-style loop that #519 lacked. A candidate is a genome of independent kernel-design choices; a builder renders it to a runnable callable; the #519 evaluator scores it under its correctness oracle. Mutation perturbs one gene, crossover mixes two parents, elitist selection breeds from the fastest admissible genomes. An invalid or physics-breaking genome is culled by the oracle, so the search explores with no corpse risk.
Benchmarks-only; runs in-process (launch on asus).
benchmarks/evolve/mutate.py—HAPPLY_GENES/RR_GENES+ builders, genetic operators (mutate/crossover/dedup),evolve()with a genome cache, elitism, and convergence patience.benchmarks/evolve_run.py— gwq entrypoint; per-generation trace + full leaderboard; best on the last line.This is the autonomous backend (no external model). The file-per-candidate path in
driver.pyremains the hook for LLM/agent-authored candidates.Validated on asus (
gwq --here, 8 threads, min-of-N)H-apply (24-genome space, evolution sampled 16/24 — guided, not exhaustive):
The loop improved across generations by recombination (gen 0: 6.5x
c64·toeplitz; gen 2: 7.84x by addingfold_becp), discovering that the Toeplitz small-cell win and fp32 stack multiplicatively. Honest caveat: both are known size-gated/expansion-only wins at Si-primitive size, so this recombines known ingredients rather than inventing a new algorithm — but the stacking is a real, useful observation and the loop found it unattended.RR (8-genome space): converged to baseline 1.0x and stopped early via patience — correctly reporting the kernel is mined.
🤖 Generated with Claude Code