MIT License

项目介绍

heal-research/operon 是一个托管在 GitHub 上的开源项目,主要使用 C++ 编写,采用 MIT License 许可证,目前获得 226 个 Star、42 次 Fork。

仓库全名
heal-research/operon
开源许可证
MIT License
Star 数
226
Fork 数
42
未关闭 Issue
7

README 摘要

Modern C++ framework for Symbolic Regression Operon is a modern C++ framework for symbolic regression that uses genetic programming to explore a hypothesis space of possible mathematical expressions in order to find the best-fitting model for a given regression target. Its main purpose is to help develop accurate and interpretable white-box models in the area of system identification. More in-depth documentation is…

完整内容见 GitHub 原始 README 或本页 。

常见问题

operon 用什么语言开发?

主要使用 C++ 编写,采用 MIT License 许可证,目前有 226 个 Star。

operon 可以免费商用吗?

仓库采用 MIT License 许可证,可免费使用与修改,商业使用请遵守许可证条款(例如保留版权声明与许可声明)。

如何获取 operon 的源码?

可以直接克隆仓库:git clone https://github.com/heal-research/operon.git,默认分支为 main;安装与运行步骤见仓库 README。

operon 最近还在维护吗?

仓库最近一次更新为 6 天前,当前有 7 个未关闭 Issue;Star 数为 226,可作为社区活跃度的参考。

关于

GitHub 原始描述(英文)

C++ Large Scale Genetic Programming

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

语言占比

C
C++
CMake
Nix
Python
Shell

README

Modern C++ framework for Symbolic Regression

License build-linux build-macos build-windows Documentation Matrix Channel

Operon is a modern C++ framework for symbolic regression that uses genetic programming to explore a hypothesis space of possible mathematical expressions in order to find the best-fitting model for a given regression target. Its main purpose is to help develop accurate and interpretable white-box models in the area of system identification. More in-depth documentation is available at heal-research.github.io/operon.

How does it work?

Broadly speaking, genetic programming (GP) is said to evolve a population of “computer programs” ― AST-like structures encoding behavior for a given problem domain ― following the principles of natural selection. It repeatedly combines random program parts keeping only the best results ― the “fittest”. Here, the biological concept of fitness is defined as a measure of a program’s ability to solve a certain task.

In symbolic regression, the programs represent mathematical expressions typically encoded as expression trees. Fitness is usually defined as goodness of fit between the dependent variable and the prediction of a tree-encoded model. Iterative selection of best-scoring models followed by random recombination leads naturally to a self-improving process that can uncover patterns in the data.

Build instructions

The project requires CMake and a compiler supporting C++23. The recommended way to build Operon is via either nix or vcpkg.

Check out https://github.com/heal-research/operon/blob/master/BUILDING.md for detailed build instructions and how to enable/disable certain features.

Nix

First, you have to install nix and enable flakes. For a portable install, see nix-portable.

To create a development shell:

nix develop github:heal-research/operon --no-write-lock-file

To build Operon (a symlink to the nix store called result will be created).

nix build github:heal-research/operon --no-write-lock-file

Vcpkg

Select the build generator appropriate for your system and point CMake to the vcpkg.cmake toolchain file

cmake -S . -B build -G "Visual Studio 16 2019" -A x64 \
-DCMAKE_TOOLCHAIN_FILE=..\vcpkg\scripts\buildsystems\vcpkg.cmake \
-DVCPKG_OVERLAY_PORTS=.\ports

The file CMakePresets.json contains some presets that you may find useful. For using clang-cl instead of cl, pass -TClangCL to the above (official documentation).

Python wrapper

Python bindings for the Operon library are available as a separate project: PyOperon, which also includes a scikit-learn compatible regressor.

Bibtex info

If you find Operon useful you can cite our work as:

@inproceedings{10.1145/3377929.3398099,
    author = {Burlacu, Bogdan and Kronberger, Gabriel and Kommenda, Michael},
    title = {Operon C++: An Efficient Genetic Programming Framework for Symbolic Regression},
    year = {2020},
    isbn = {9781450371278},
    publisher = {Association for Computing Machinery},
    address = {New York, NY, USA},
    url = {https://doi.org/10.1145/3377929.3398099},
    doi = {10.1145/3377929.3398099},
    booktitle = {Proceedings of the 2020 Genetic and Evolutionary Computation Conference Companion},
    pages = {1562–1570},
    numpages = {9},
    keywords = {symbolic regression, genetic programming, C++},
    location = {Canc\'{u}n, Mexico},
    series = {GECCO '20}
}

Operon was also featured in a recent survey of symbolic regression methods, where it showed good results:

@article{DBLP:journals/corr/abs-2107-14351,
    author    = {William G. La Cava and
                 Patryk Orzechowski and
                 Bogdan Burlacu and
                 Fabr{\'{\i}}cio Olivetti de Fran{\c{c}}a and
                 Marco Virgolin and
                 Ying Jin and
                 Michael Kommenda and
                 Jason H. Moore},
    title     = {Contemporary Symbolic Regression Methods and their Relative Performance},
    journal   = {CoRR},
    volume    = {abs/2107.14351},
    year      = {2021},
    url       = {https://arxiv.org/abs/2107.14351},
    eprinttype = {arXiv},
    eprint    = {2107.14351},
    timestamp = {Tue, 03 Aug 2021 14:53:34 +0200},
    biburl    = {https://dblp.org/rec/journals/corr/abs-2107-14351.bib},
    bibsource = {dblp computer science bibliography, https://dblp.org}
}

评论

暂无评论