A modern C++ framework for evolutionary computation

Build high-performance evolutionary algorithms in modern C++ without fighting the framework

Ultra is an open-source evolutionary computation library for developers and researchers who need speed, scalability and architectural control. It supports genetic programming, genetic algorithms and differential evolution, with a strong focus on concurrency, type safety and long-term maintainability.

 

Why Ultra

Why Ultra C++ Genetic Computation Framework

Most evolutionary frameworks prioritise ease of experimentation at the cost of performance or structure.

Ultra takes a different approach: it is built for production-quality C++, where performance, correctness and composability matter.

With Ultra you can:

  • scale experiments efficiently across multiple cores;
  • express complex evolutionary systems with strong typing;
  • integrate evolutionary computation into larger C++ codebases;
  • maintain full control over representation, evaluation and execution.

 

What Ultra provides

 



Evolutionary algorithms

Genetic programming
Genetic algorithms
Differential evolution
Heterogeneous and hybrid approaches


Modern C++ design

Written in ISO C++23
Strong separation of concerns
Extensive use of generic programming and concepts


Performance and scalability

Built-in support for concurrency and parallel evaluation
Designed to minimise runtime overhead
Deterministic behaviour where required


Flexible representations

Linear representation based on Straight Line Programs (SLP)
Strongly typed individuals
Stable abstractions designed for long-term projects


Research and production friendly

Suitable for academic research and experimentation
Easy integration with other systems
Designed for both prototyping and production use


Comes with batteries

Highly customisable
Fast experimentation with detailed run-log
...and much more →

 

Who Ultra is for

Who Ultra is for

Ultra is aimed at:

  • researchers working on evolutionary computation and symbolic regression;
  • C++ developers who need fine-grained control over performance;
  • engineers integrating evolutionary algorithms into production systems;
  • advanced users who want to extend or customise evolutionary operators.

Ultra provides sensible defaults and automatic parameter tuning, while always allowing full access to internal mechanisms when deeper customisation is required.

 

Get started quickly

Start your Evolution

If you encounter compilation issues, see the build guide.

Developers can explore the general architecture of the library by reading the ULTRA anatomy document.

Ultra is designed to be learned progressively: you can start simple and adopt more advanced components only when needed.

 

Open source

Ultra is released under the Mozilla Public License 2.0, allowing both open-source and commercial use while protecting contributions.

Contributions, feedback and discussion are welcome.

 

Sponsors

We extend our gratitude to our sponsors:

EOS

who are helping to ensure ongoing development and sustainability of the project.