Skip to content

Releases: pkalivas/radiate

Speed & radiate-expr

26 Apr 22:20

Choose a tag to compare

Breaking changes:

  • Changed the checkpointing feature in python to use .pkl as a default extension instead of .json. It fits better within the python ecosystem.
  • Changed the metric names to use . as a separator instead of _. This allows for better organization and grouping of metrics. For example, scores.best instead of best_scores.

Other

Speed improvements centered around engine steps.

Additions

Added a new crate radiate-expr which includes expressions (think polars) to extend the metric and rating systems. This greatly improves the flexibility of of dynamic rates (mutation/crossover/species threasholds) and allows users to define their own rating systems. Along with the rate improvements, this extends into the engine itself by allowing users to define their own metrics and use them in the afforementioned dynamic rates - or simply just to track the engine.

Refactored radiate-ui to give much more insight into the engine and the metrics it produces. Included a new search bar and species panel to quickly find and visualize specific species and their members.

In python, radiate now supports optional features (check the user guide installation section for specific info). This lets users opt in to specific integrations within the python ecosystem (e.g. pandas, polars, matplotlib, torch, numpy) without needing to install a bunch of dependencies they may not need.

For checkpointing, new traits were added: CheckpointWriter & CheckpointReader to let users define their own ways of saving checkpoints.

Full Changelog: v1.2.21...v1.2.22

Generic Float Gene, refactor python api

22 Feb 21:55

Choose a tag to compare

Changed the FloatGene<T> to take a generic parameter to take either an f32 or f64 value.

  • The above is a breaking change. Just add the generic type to your FloatGene, FloatChromosome, or FloatCodec if needed.

old

let gene = FloatGene::from(1.0..2.0); // FloatGene

new

let gene = FloatGene::from(1.0_f64..2_f64); // typed now: FloatGene<f64>
  • Removing the smallvec feature in favor of just making it a hard dependency.

Massive expansion of python's api - check the docs for usage. We moved towards a builder pattern for the engine and added better type hinting. Also adding dtype to python api so you can choose which datatype to use during evolution.

Full Changelog: v1.2.20...v1.2.21

Radiate UI

22 Dec 00:23

Choose a tag to compare

Adding radiate-ui crate, bug fixes, & speed improvements.

I split up some functionality into a new crate radiate-utils and have added a new feature radiate-ui for a tui user interface through ratitui. Some small bug fixes, code simplifications, and some nice little speed improvements.

All examples in the /examples folder have been updated to the latest as well as python examples.

Full Changelog: v1.2.19...v1.2.20

PGM (Experimental) - Cleanup, bug fixes, Graph performance improvements

11 Nov 23:28

Choose a tag to compare

Adding support for experimental PGM or Probabilistic graphical models through the GP feature (crate).

Major cleanup or unused code and massive graph performance improvements through the use of smallvec as connections instead of BTreeSets.

Improving eventing system through cleaner code and removing redundant events.

Introducing radiate-error (RadiateError) into the core crates ad requiring its usage in certain traits (Problem mainly). We also use this error type in py-radiate and allow it to bubble up into python's type system too.

Brining metrics to the forefront in python.

Full Changelog: v1.2.18...v1.2.19

LSTM, GRU, Mesh graphs.

27 Sep 23:11

Choose a tag to compare

Fixing subtle bug in recurrent graphs where a random seed wasn't being respected, leading to non-deterministic behavior in some cases. This fix ensures that all random operations within recurrent graphs are consistent and reproducible when a seed is provided.

Added three new types of graphs:

  • LSTM (Long Short-Term Memory) Graphs: These are a type of recurrent neural network (RNN) that can learn long-term dependencies.
  • GRU (Gated Recurrent Unit) Graphs: Similar to LSTMs, GRUs are a type of RNN that are simpler and often more efficient.
  • Mesh Graphs: Graphs structured in a mesh topology.

Full Changelog: v1.2.17...v1.2.18

Fixing IntGene<T> arithmetic & adding JitterMutator

04 Sep 23:48

Choose a tag to compare

Fixing the arithmetic surrounding IntGene and FloatGene - ensuring their Allele's don't overflow and clamping their arithmetics around their bounds during add/sub/mul/div. This is in response to issue #23.

Adding new mutator - JitterMutator

Full Changelog: v1.2.16...v1.2.17

Adding batching fitness function, batch engine problem

20 Aug 00:07

Choose a tag to compare

Largely in response to issue #22.

  • Adding support for batch fitness functions and batch engine problems.
  • Small improvements to chromosome from operators.
  • Updates to docs.
  • Cleaning up combined fitness fn and novelty search fitness fn

Full Changelog: v1.2.15...v1.2.16

Adding NoveltySearch to Python

10 Aug 21:08

Choose a tag to compare

Improving fitness function speed and adding Novelty Search to python. Refactors to building an engine across the rust/python bridge.

Adding new crossover for permutation chromosomes: EdgeRecombinationCrossover
Adding new mutation for float genes: PolynomialMutator

Adding code path for dynamic mutation/crossover rates. This is in early stages of dev.

Full Changelog: v1.2.14...v1.2.15

Adding GP features to python

05 Jul 22:40

Choose a tag to compare

This release adds the GP functionality to python as well as novelty search to rust.

Lots of code cleanup and testing added.

Full Changelog: v1.2.13...v1.2.14

Updating python .whl and adding 'serde' feature

06 Jun 23:59

Choose a tag to compare

This is a smaller addition for rust and is mainly geared towards the python bindings.

Rust updates:

  1. Adding feature flag serde to enable serialization of the Ecosystem, including the Population, Species, Phenotypes, Genotypes, Chromosomes, and all Genes.
  2. Some small quality of life improvements mainly used in the python bindings

Python updates:

  1. Adding multi-objective optimization support
  2. Working bindings for all core rust selectors & alters
  3. Mirror rust Codecs (matrix, vector, & scalar) for most gene types.
  4. Materialized Generation return types from the engine including:
    • Metrics
    • Population
    • Index
    • Score if single objective otherwise ParetoFront

Installing rust:

radiate = { version = "1.2.11", features = ["gp", "serde"] }

python:

pip install radiate=0.0.3

Full Changelog: v1.2.11...v1.2.13