Skip to content

Releases: MilesCranmer/SymbolicRegression.jl

v0.24.4

28 Apr 04:51
2287c83
Compare
Choose a tag to compare

SymbolicRegression v0.24.4

Diff since v0.24.3

Merged pull requests:

v0.24.3

26 Apr 07:00
758f991
Compare
Choose a tag to compare

SymbolicRegression v0.24.3

Diff since v0.24.2

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

14 Apr 20:47
cc136e7
Compare
Choose a tag to compare

SymbolicRegression v0.24.2

Diff since v0.24.1

Merged pull requests:

Closed issues:

  • API Overhaul (#187)
  • [Feature]: Training on high dimensions X (#299)

v0.24.1

24 Mar 02:20
0b6b173
Compare
Choose a tag to compare

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

20 Mar 07:12
9f89932
Compare
Choose a tag to compare

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 now PopMember{T,L,N} for N the type of expression.
    • Can now specify a node_type in creation of Options. This node_type <: AbstractExpressionNode can be a GraphNode which will result in expressions that care share nodes – and therefore have a lower complexity.
    • Two new mutations: form_connection and break_connection – which control the merging and breaking of shared nodes in expressions. These are experimental.
  • 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 to Options() 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

23 Feb 12:49
b26f7f6
Compare
Choose a tag to compare

SymbolicRegression v0.23.3

Diff since v0.23.2

Merged pull requests:

v0.23.2

17 Feb 21:16
e18c742
Compare
Choose a tag to compare

SymbolicRegression v0.23.2

Diff since v0.23.1

Merged pull requests:

Closed issues:

  • Garbage collection too passive on worker processes (#237)
  • How can I set the maximum number of nests? (#285)

v0.23.1

03 Jan 23:07
31031b3
Compare
Choose a tag to compare

What's Changed

  • Implement swap operands mutation for binary operators by @foxtran in #276

New Contributors

Full Changelog: v0.23.0...v0.23.1

v0.23.0

24 Dec 05:23
f38ea0d
Compare
Choose a tag to compare

SymbolicRegression v0.23.0

Diff since v0.22.5

Merged pull requests:

Closed issues:

  • How do I set up a basis function consisting of three different inputs x, y, z? (#268)

v0.22.5

11 Dec 18:25
93b1b26
Compare
Choose a tag to compare

SymbolicRegression v0.22.5

Diff since v0.22.4

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])