Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Program synthesis/graph expressions #271

Merged
merged 118 commits into from
Mar 20, 2024
Merged

Program synthesis/graph expressions #271

merged 118 commits into from
Mar 20, 2024

Conversation

MilesCranmer
Copy link
Owner

@MilesCranmer MilesCranmer commented Dec 28, 2023

This is a working implementation of program synthesis in SymbolicRegression.jl via the use of nodes that are shared between multiple parents.

  • Moving these TODOs to later:

    • Improving printing to be like a program, rather than like an expression
    • Consider optimizing the weight of forming connections and breaking connections
    • Consider whether we want to be smart at all about where we form connections across a tree
    • Create some unittests for these new mutations
    • Refactor existing mutations to be simpler (?)
  • Try other settings for Optim.options:

    • Set f_calls_limit in Optim.options, rather than just iterations.

@MilesCranmer MilesCranmer changed the title [wip] Program synthesis/graph expressions [WIP] Program synthesis/graph expressions Jan 6, 2024
Copy link
Contributor

github-actions bot commented Jan 6, 2024

Benchmark Results

master 89daeff... master/89daeff0c2f869...
search/multithreading 22.5 ± 0.78 s 26.4 ± 1.2 s 0.855
search/serial 32.3 ± 0.33 s 35.3 ± 0.19 s 0.914
utils/best_of_sample 1.02 ± 0.43 μs 0.922 ± 0.32 μs 1.11
utils/check_constraints_x10 12.4 ± 3.1 μs 11.5 ± 2.9 μs 1.08
utils/compute_complexity_x10/Float64 2.25 ± 0.12 μs 2.21 ± 0.12 μs 1.02
utils/compute_complexity_x10/Int64 2.31 ± 0.12 μs 2.21 ± 0.12 μs 1.04
utils/compute_complexity_x10/nothing 1.54 ± 0.12 μs 1.46 ± 0.11 μs 1.05
utils/optimize_constants_x10 29.7 ± 6.5 ms 0.032 ± 0.0071 s 0.927
time_to_load 1.27 ± 0.013 s 1.72 ± 0.0052 s 0.738

Benchmark Plots

A plot of the benchmark results have been uploaded as an artifact to the workflow run for this PR.
Go to "Actions"->"Benchmark a pull request"->[the most recent run]->"Artifacts" (at the bottom).

@MilesCranmer
Copy link
Owner Author

MilesCranmer commented Mar 16, 2024

Did a git bisect on the illegal instruction error that comes up from the deterministic test. It started on 3a33882.

Reported in JuliaLang/julia#53761

@MilesCranmer
Copy link
Owner Author

The function optimize_and_simplify_population seems to be accounting for the performance regression here, even though optimize_constants by itself seems fine. So perhaps the simplification method is hurting us here?

@MilesCranmer MilesCranmer merged commit ae848a3 into master Mar 20, 2024
28 checks passed
@MilesCranmer MilesCranmer deleted the graph-nodes branch March 20, 2024 07:00
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