Releases: MilesCranmer/SymbolicRegression.jl
Releases · MilesCranmer/SymbolicRegression.jl
v0.24.4
SymbolicRegression v0.24.4
Merged pull requests:
- feat: use
?
for wildcard units instead of⋅
(#307) (@MilesCranmer) - refactor: fix some more type instabilities (#308) (@MilesCranmer)
- refactor: remove unused Tricks dependency (#309) (@MilesCranmer)
- Add option to force dimensionless constants (#310) (@MilesCranmer)
v0.24.3
SymbolicRegression v0.24.3
Merged pull requests:
- 40% speedup (for default settings) via more parallelism inside workers (#304) (@MilesCranmer)
Closed issues:
- Silence warnings for Optim.jl (#255)
v0.24.2
SymbolicRegression v0.24.2
Merged pull requests:
- Bump julia-actions/setup-julia from 1 to 2 (#300) (@dependabot[bot])
- [pre-commit.ci] pre-commit autoupdate (#301) (@pre-commit-ci[bot])
- A small update on examples.md for 1-based indexing (#302) (@liuyxpp)
- Fixes for Julia 1.11 (#303) (@MilesCranmer)
Closed issues:
v0.24.1
What's Changed
- CompatHelper: bump compat for MLJModelInterface to 1.9, (keep existing compat) by @github-actions in #295
- CompatHelper: bump compat for ProgressBars to 1, (keep existing compat) by @github-actions in #294
- Ensure we load ClusterManagers.jl on workers by @MilesCranmer in #297
- Move test dependencies to test folder by @MilesCranmer in #298
Full Changelog: v0.24.0...v0.24.1
v0.24.0
What's Changed
- Experimental support for program synthesis / graph-like expressions instead of trees (#271)
- BREAKING: many types now have a third type parameter, declaring the type of node. For example,
PopMember{T,L}
is nowPopMember{T,L,N}
forN
the type of expression. - Can now specify a
node_type
in creation ofOptions
. Thisnode_type <: AbstractExpressionNode
can be aGraphNode
which will result in expressions that care share nodes – and therefore have a lower complexity. - Two new mutations:
form_connection
andbreak_connection
– which control the merging and breaking of shared nodes in expressions. These are experimental.
- BREAKING: many types now have a third type parameter, declaring the type of node. For example,
- BREAKING: The
Dataset
struct has had many of its field declared immutable (for memory safety). If you had relied on the mutability of the struct to set parameters after initializing it, you will need to modify your code. - BREAKING: LoopVectorization.jl moved to a package extension. Need to install it separately (#287).
- DEPRECATED: Now prefer to use new keyword-based constructors for nodes:
Node{T}(feature=...) # leaf referencing a particular feature column
Node{T}(val=...) # constant value leaf
Node{T}(op=1, l=x1) # operator unary node, using the 1st unary operator
Node{T}(op=1, l=x1, r=1.5) # binary unary node, using the 1st binary operator
rather than the previous constructors Node(op, l, r)
and Node(T; val=...)
(though those will still work; just with a depwarn
).
- Bumper.jl support added. Passing
bumper=true
toOptions()
will result in using bump-allocation for evaluation which can get speeds equivalent to LoopVectorization and sometimes even better due to better management of allocations. (#287) - Upgraded Optim.jl to 1.9.
- Upgraded DynamicQuantities to 0.13
- Upgraded DynamicExpressions to 0.16
- The main search loop has been greatly refactored for readability and improved type inference. It now looks like this (down from a monolithic ~1000 line function)
function _equation_search(
datasets::Vector{D}, ropt::RuntimeOptions, options::Options, saved_state
) where {D<:Dataset}
_validate_options(datasets, ropt, options)
state = _create_workers(datasets, ropt, options)
_initialize_search!(state, datasets, ropt, options, saved_state)
_warmup_search!(state, datasets, ropt, options)
_main_search_loop!(state, datasets, ropt, options)
_tear_down!(state, ropt, options)
return _format_output(state, ropt)
end
Full Changelog: v0.23.3...v0.24.0
v0.23.3
SymbolicRegression v0.23.3
Merged pull requests:
- Bump peter-evans/create-or-update-comment from 3 to 4 (#283) (@dependabot[bot])
- Bump peter-evans/find-comment from 2 to 3 (#284) (@dependabot[bot])
- Bump peter-evans/create-pull-request from 5 to 6 (#286) (@dependabot[bot])
v0.23.2
SymbolicRegression v0.23.2
Merged pull requests:
- Formatting overhaul (#278) (@MilesCranmer)
- Avoid julia-formatter on pre-commit.ci (#279) (@MilesCranmer)
- Make it easier to select expression from Pareto front for evaluation (#289) (@MilesCranmer)
Closed issues:
v0.23.1
v0.23.0
SymbolicRegression v0.23.0
Merged pull requests:
- Automatically set heap size hint on workers (#270) (@MilesCranmer)
Closed issues:
- How do I set up a basis function consisting of three different inputs x, y, z? (#268)
v0.22.5
SymbolicRegression v0.22.5
Merged pull requests:
- CompatHelper: bump compat for DynamicQuantities to 0.7, (keep existing compat) (#259) (@github-actions[bot])
- Create
cond
operator (#260) (@MilesCranmer) - Add
[compat]
entry for Documenter (#261) (@MilesCranmer) - CompatHelper: bump compat for DynamicQuantities to 0.10 (#264) (@github-actions[bot])