A general framework to work with Symbolic Regression expression trees.
A Symbolic Regression Tree data structure to work with mathematical expressions with support to first order derivative and simplification;
srtree: A symbolic regression expression tree structure.
srtree
is a Haskell library with a data structure and supporting functions to manipulate expression trees for symbolic regression.
The tree-like structure is defined as a fixed-point of an n-ary tree. The variables and parameters of the regression model are indexed as Int
type and the constant values are Double
.
The tree supports leaf nodes containing a variable, a free parameter, or a constant value; internal nodes that represents binary operators such as the four basic math operations, logarithm with custom base, and the power of two expressions; and unary functions specified by Function
data type.
The SRTree
structure has instances for Num, Fractional, Floating
which allows to create an expression as a valid Haskell expression such as:
x = var 0)
y = var 1
expr = x * 2 + sin(y * pi + x) :: Fix SRTree
Other features:
- derivative w.r.t. a variable (
deriveByVar
) and w.r.t. a parameter (deriveByParam
) - evaluation (
evalTree
) - relabel free parameters sequentially (
relabelParams
) - gradient calculation with
forwardMode
, or optimized withgradParams
if there is only a single occurrence of each parameter (most of the cases).
TODO:
- support more advanced functions
- support conditional branching (
IF-THEN-ELSE
)