jenetics  by jenetics

Java library for genetic algorithms, genetic programming, and multi-objective optimization

created 11 years ago
870 stars

Top 42.3% on SourcePulse

GitHubView on GitHub
Project Summary

Jenetics is a comprehensive Java library for implementing various evolutionary algorithms, including Genetic Algorithms, Genetic Programming, Grammatical Evolution, and Multi-objective Optimization. It's designed for researchers and developers needing a robust, flexible, and modern Java-based framework for complex optimization tasks, offering seamless integration with the Java Stream API.

How It Works

Jenetics employs a clear separation of evolutionary concepts (Gene, Chromosome, Genotype, Population, fitness Function) and utilizes an "EvolutionStream" for executing evolution steps. This stream-based approach, leveraging the Java Stream API, allows for functional-style programming and efficient parallelization of evolutionary processes. The library is highly configurable, enabling fine-tuning of evolutionary operators, selection mechanisms, and execution environments.

Quick Start & Requirements

  • Install: Clone the repository and build with Gradle (./gradlew jar).
  • Requirements: Java 21 or higher.
  • Documentation: Javadoc and a User Manual.
  • Example: The README provides a "Hello World" example for counting ones in a bit string and an image evolution example.

Highlighted Details

  • Supports Genetic Algorithms, Genetic Programming, Grammatical Evolution, and Multi-objective Optimization.
  • Integrates with Java Stream API via EvolutionStream.
  • Offers experimental .NET Core and Scala wrappers (Jenetics.Net, Helisa).
  • Includes modules for XML marshalling (jenetics.xml) and extended GA operations (jenetics.ext).
  • Recent improvements include Java 21 support, virtual threads for fitness evaluation, CSV data parsing, and new genetic operators.

Maintenance & Community

The project is actively maintained by Franz Wilhelmstötter, with numerous academic citations and integrations into various research projects and benchmarks (e.g., SPEAR, Renaissance Suite, APP4MC).

Licensing & Compatibility

Licensed under the Apache License, Version 2.0. This permissive license allows for commercial use and integration into closed-source projects.

Limitations & Caveats

While powerful, the library requires a solid understanding of evolutionary algorithms and Java 21+. The "experimental" .NET port may have limitations.

Health Check
Last commit

4 days ago

Responsiveness

1 day

Pull Requests (30d)
2
Issues (30d)
2
Star History
7 stars in the last 90 days

Explore Similar Projects

Feedback? Help us improve.