A genetic programming library for Clojure that evolves programs using mutation, reproduction, and fitness functions.
fungp is a genetic programming library for Clojure that automatically evolves computer programs using processes inspired by biological evolution, such as mutation and reproduction. It solves problems like symbolic regression by generating trees of Clojure code and evaluating them with fitness functions to produce correct outputs.
Clojure developers and researchers interested in evolutionary computation, genetic programming, or automated program synthesis for tasks like symbolic regression or algorithmic discovery.
Developers choose fungp for its native Clojure implementation, functional programming design, and configurable evolutionary parameters, providing a flexible and accessible tool for experimenting with genetic programming in a REPL-driven environment.
A genetic programming library for Clojure
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Built specifically for Clojure, it leverages the REPL for interactive development and functional programming style, as emphasized in the setup and tutorial examples.
Offers extensive tuning options like iterations, migrations, mutation probability, and ADFs, allowing precise control over the GP process for diverse problems.
Implements multiple populations with migrations to maintain genetic diversity, potentially improving solution quality by avoiding local optima, as described in the features.
Includes thorough documentation, a tutorial, and sample code in the source, making it practical for learning genetic programming concepts in a functional context.
As a student project at version 0.3.2, it may lack the stability, frequent updates, and community support of more mature libraries, which could lead to bugs or abandoned development.
Requires familiarity with Clojure and setup with Leiningen, as outlined in the installation steps, creating a steep learning curve for developers outside the Clojure ecosystem.
Evolved programs can become verbose and hard to understand, as shown in the sample output, making debugging and practical application challenging for non-experts.