srtree: A general framework to work with Symbolic Regression expression trees.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

A Symbolic Regression Tree data structure to work with mathematical expressions with support to first order derivative and simplification;


[Skip to Readme]

Properties

Versions 0.1.0.0, 0.1.1.0, 0.1.2.0, 0.1.2.1, 0.1.2.1, 1.0.0.0, 1.0.0.1, 1.0.0.2, 1.0.0.3, 1.0.0.4, 1.0.0.5
Change log ChangeLog.md
Dependencies base (>=4.16 && <4.18), containers (>=0.6 && <0.7), mtl (>=2.2 && <2.3), random (>=1.2 && <1.3), vector (>=0.12 && <0.13) [details]
License BSD-3-Clause
Copyright 2023 Fabricio Olivetti de França
Author Fabricio Olivetti de França
Maintainer fabricio.olivetti@gmail.com
Category Math, Data, Data Structures
Home page https://github.com/folivetti/srtree#readme
Bug tracker https://github.com/folivetti/srtree/issues
Source repo head: git clone https://github.com/folivetti/srtree
Uploaded by olivetti at 2023-01-14T10:24:11Z

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Readme for srtree-0.1.2.1

[back to package description]

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 parameterized by the type of the variables indexing and the return value when evaluating the tree. The most common is to index the variables with Int starting at \(0\) and to return a Double. The Functor instance changes the type of the stored/returned values.

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.

This library also defines the OptInt class with the operator ^. that represents the integral power. This is needed to automatically simplify some constructs of the tree and also when using interval arithmetic, that requires a special case of integral power.

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) :: SRTree Int Double

There is also a Bifunctor instance that allows to change the type of both parameters, and an Applicative, Foldable, Traversable instances. To traverse by the index type, there is a function called traverseIx.

Other features:

TODO: