{"id":32637373,"url":"https://github.com/heal-research/operon","last_synced_at":"2025-10-31T01:56:32.801Z","repository":{"id":46734002,"uuid":"207655213","full_name":"heal-research/operon","owner":"heal-research","description":"C++ Large Scale Genetic Programming","archived":false,"fork":false,"pushed_at":"2025-09-08T11:04:15.000Z","size":23707,"stargazers_count":174,"open_issues_count":6,"forks_count":33,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-09-08T13:09:56.794Z","etag":null,"topics":["cmake","cpp","cpp17","genetic-algorithm","genetic-programming","machine-learning","mathematical-expressions","optimization-algorithms","python","python-bindings","symbolic-regression","vcpkg"],"latest_commit_sha":null,"homepage":"https://operongp.readthedocs.io","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/heal-research.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-09-10T20:19:07.000Z","updated_at":"2025-09-08T11:04:18.000Z","dependencies_parsed_at":"2024-06-24T18:24:44.755Z","dependency_job_id":"78d4cec7-bcfa-4977-a080-fd11cc45f12a","html_url":"https://github.com/heal-research/operon","commit_stats":{"total_commits":792,"total_committers":8,"mean_commits":99.0,"dds":"0.26641414141414144","last_synced_commit":"f0ac2228fdce14b4a5000377b9462a5b29aa6290"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/heal-research/operon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heal-research%2Foperon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heal-research%2Foperon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heal-research%2Foperon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heal-research%2Foperon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heal-research","download_url":"https://codeload.github.com/heal-research/operon/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heal-research%2Foperon/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281914557,"owners_count":26583083,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-30T02:00:06.501Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cmake","cpp","cpp17","genetic-algorithm","genetic-programming","machine-learning","mathematical-expressions","optimization-algorithms","python","python-bindings","symbolic-regression","vcpkg"],"created_at":"2025-10-31T01:56:28.727Z","updated_at":"2025-10-31T01:56:32.788Z","avatar_url":"https://github.com/heal-research.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./rtd/_static/logo_mini_dark.png\"\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"./rtd/_static/logo_mini_light.png\"\u003e\n    \u003cimg src=\"./rtd/_static/logo_mini.png\" height=\"80px\" /\u003e\n\u003c/picture\u003e\n\n\u003cbr/\u003e\n\n# Modern C++ framework for Symbolic Regression\n\n[![License](https://img.shields.io/github/license/heal-research/operon?style=flat)](https://github.com/heal-research/operon/blob/master/LICENSE)\n[![build-linux](https://github.com/heal-research/operon/actions/workflows/build-linux.yml/badge.svg)](https://github.com/heal-research/operon/actions/workflows/build-linux.yml)\n[![build-macos](https://github.com/heal-research/operon/actions/workflows/build-macos.yml/badge.svg)](https://github.com/heal-research/operon/actions/workflows/build-macos.yml)\n[![build-windows](https://github.com/heal-research/operon/actions/workflows/build-windows.yml/badge.svg)](https://github.com/heal-research/operon/actions/workflows/build-windows.yml)\n[![Documentation Status](https://readthedocs.org/projects/operongp/badge/?version=latest)](https://operongp.readthedocs.io/en/latest/?badge=latest)\n[![Matrix Channel](https://badges.gitter.im/operongp/gitter.png)](https://gitter.im/operongp/community)\n\n*Operon* is a modern C++ framework for [symbolic regression](https://en.wikipedia.org/wiki/Symbolic_regression) that uses [genetic programming](https://en.wikipedia.org/wiki/Genetic_programming) to explore a hypothesis space of possible mathematical expressions in order to find the best-fitting model for a given [regression target](https://en.wikipedia.org/wiki/Regression_analysis).\nIts main purpose is to help develop accurate and interpretable white-box models in the area of [system identification](https://en.wikipedia.org/wiki/System_identification). More in-depth documentation available at https://operongp.readthedocs.io/.\n\n## How does it work?\n\nBroadly speaking, genetic programming (GP) is said to evolve a population of \"computer programs\" ― [AST](https://en.wikipedia.org/wiki/Abstract_syntax_tree)-like structures encoding behavior for a given problem domain ― following the principles of [natural selection](https://en.wikipedia.org/wiki/Natural_selection). It repeatedly combines random program parts keeping only the best results ― the \"fittest\". Here, the biological concept of [fitness](https://en.wikipedia.org/wiki/Survival_of_the_fittest) is defined as a measure of a program's ability to solve a certain task.\n\nIn symbolic regression, the programs represent mathematical expressions typically encoded as [expression trees](https://en.wikipedia.org/wiki/Binary_expression_tree). Fitness is usually defined as [goodness of fit](https://en.wikipedia.org/wiki/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 is able to uncover patterns in the data:\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./rtd/_static/evo.gif\"  /\u003e\n\u003c/p\u003e\n\n## Build instructions\n\nThe project requires CMake and a compiler supporting C++20. The recommended way to build Operon is via either [nix](https://github.com/NixOS/nix) or [vcpkg](https://github.com/microsoft/vcpkg).\n\nCheck out [https://github.com/heal-research/operon/blob/master/BUILDING.md](BUILDING.md) for detailed build instructions and how to enable/disable certain features.\n\n### Nix\n\nFirst, you have to [install nix](https://nixos.org/download.html) and [enable flakes](https://nixos.wiki/wiki/Flakes).\nFor a portable install, see [nix-portable](https://github.com/DavHau/nix-portable).\n\nTo create a development shell:\n```\nnix develop github:heal-research/operon --no-write-lock-file\n```\n\nTo build Operon (a symlink to the nix store called `result` will be created).\n```\nnix build github:heal-research/operon --no-write-lock-file\n```\n\n\n### Vcpkg\n\nSelect the build generator appropriate for your system and point CMake to the `vcpkg.cmake` toolchain file\n\n```\ncmake -S . -B build -G \"Visual Studio 16 2019\" -A x64 \\\n-DCMAKE_TOOLCHAIN_FILE=..\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake \\\n-DVCPKG_OVERLAY_PORTS=.\\ports\n```\n\nThe 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](https://docs.microsoft.com/en-us/cpp/build/clang-support-cmake?view=msvc-170)).\n\n## Python wrapper\n\nPython bindings for the Operon library are available as a separate project: [PyOperon](https://github.com/heal-research/pyoperon), which also includes a [scikit-learn](https://scikit-learn.org/stable/index.html) compatible regressor.\n\n## Bibtex info\n\nIf you find _Operon_ useful you can cite our work as:\n```\n@inproceedings{10.1145/3377929.3398099,\n    author = {Burlacu, Bogdan and Kronberger, Gabriel and Kommenda, Michael},\n    title = {Operon C++: An Efficient Genetic Programming Framework for Symbolic Regression},\n    year = {2020},\n    isbn = {9781450371278},\n    publisher = {Association for Computing Machinery},\n    address = {New York, NY, USA},\n    url = {https://doi.org/10.1145/3377929.3398099},\n    doi = {10.1145/3377929.3398099},\n    booktitle = {Proceedings of the 2020 Genetic and Evolutionary Computation Conference Companion},\n    pages = {1562–1570},\n    numpages = {9},\n    keywords = {symbolic regression, genetic programming, C++},\n    location = {Canc\\'{u}n, Mexico},\n    series = {GECCO '20}\n}\n```\n\n_Operon_ was also featured in a recent survey of symbolic regression methods, where it showed good results:\n\n```\n@article{DBLP:journals/corr/abs-2107-14351,\n    author    = {William G. La Cava and\n                 Patryk Orzechowski and\n                 Bogdan Burlacu and\n                 Fabr{\\'{\\i}}cio Olivetti de Fran{\\c{c}}a and\n                 Marco Virgolin and\n                 Ying Jin and\n                 Michael Kommenda and\n                 Jason H. Moore},\n    title     = {Contemporary Symbolic Regression Methods and their Relative Performance},\n    journal   = {CoRR},\n    volume    = {abs/2107.14351},\n    year      = {2021},\n    url       = {https://arxiv.org/abs/2107.14351},\n    eprinttype = {arXiv},\n    eprint    = {2107.14351},\n    timestamp = {Tue, 03 Aug 2021 14:53:34 +0200},\n    biburl    = {https://dblp.org/rec/journals/corr/abs-2107-14351.bib},\n    bibsource = {dblp computer science bibliography, https://dblp.org}\n}\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheal-research%2Foperon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheal-research%2Foperon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheal-research%2Foperon/lists"}