Skip to content

refactor: adopt SymbolicRegression abstract crossover API - #86

Open
MilesCranmerBot wants to merge 3 commits into
trishullab:masterfrom
MilesCranmerBot:lasr-abstract-crossover
Open

refactor: adopt SymbolicRegression abstract crossover API#86
MilesCranmerBot wants to merge 3 commits into
trishullab:masterfrom
MilesCranmerBot:lasr-abstract-crossover

Conversation

@MilesCranmerBot

Copy link
Copy Markdown

Summary

This updates the LaSR v2 plugin port from the superseded SymbolicRegression.jl crossover proposal hook to the merged first-class crossover API.

  • add LLMCrossover <: AbstractCrossover and implement SymbolicRegression.crossover with CrossoverResult;
  • let SymbolicRegression own constraint retries, evaluation, accounting, and replacement;
  • avoid repeating an expensive LLM request on constraint retries;
  • configure native mutations and crossovers through Options.mutations and Options.crossovers;
  • preserve LaSROptions compatibility by mapping the legacy conditional LLM crossover probability to exact LLM/subtree weights;
  • pin the development source to SymbolicRegression.jl 74cf6b79, which includes the abstract crossover API and the stdin monitoring fix;
  • update docs, examples, and deterministic mocked integration coverage.

This supersedes the crossover integration in #85, which depended on the now-removed propose_crossover direction.

Validation

  • Julia 1.11.9, SymbolicRegression.jl 74cf6b79
  • focused mocked plugin integration: 15/15 assertions passed
    • mutation/search: 8
    • concept lifecycle: 2
    • end-to-end abstract crossover search: 2
    • legacy crossover probability mapping: 3
  • Aqua passed: unbound parameters, exports, project consistency, stale dependencies, compat bounds, piracy, persistent tasks, and ambiguities
  • all configured pre-commit hooks passed, including JuliaFormatter 1.0.56 and Prettier
  • git diff --check passed

The tests inject a deterministic local LLM function, so no credentials or external provider calls are required.

Remaining scope

  • no authenticated/provider-backed LLM test was run;
  • multiprocessing plugin-state serialization remains unexercised in this focused update.

MilesCranmerBot and others added 3 commits August 5, 2026 15:13
Co-authored-by: Miles Cranmer <7593028+MilesCranmer@users.noreply.github.com>
Co-authored-by: Miles Cranmer <miles.cranmer@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant