Releases: pkalivas/radiate
Radiate UI
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
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.
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
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
Largely in response to issue #22.
- Adding support for batch fitness functions and batch engine problems.
- Small improvements to chromosome
fromoperators. - 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
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
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
This is a smaller addition for rust and is mainly geared towards the python bindings.
Rust updates:
- Adding feature flag
serdeto enable serialization of theEcosystem, including the Population, Species, Phenotypes, Genotypes, Chromosomes, and all Genes. - Some small quality of life improvements mainly used in the python bindings
Python updates:
- Adding multi-objective optimization support
- Working bindings for all core rust selectors & alters
- Mirror rust Codecs (matrix, vector, & scalar) for most gene types.
- 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.3Full Changelog: v1.2.11...v1.2.13
Splitting crates into Workspace, starting python wrapper, speciation
Woo! Big release. I've split the core two crates (radiate & radiate-gp) into several crates within a single workspace. This makes this project much more modular and much easier to begin wrapping the rust lib into a python wheel. Because of this, the radiate-gp functionality has been moved from a functionally independent crate, to a feature. For the same genetic programming functionality just add the feature flag gp to your dependancies.
radiate = { version = "1.2.11", features = ["gp"] }The split goes as follows:
radiate-core: (Internal) The core functionality and traits for extending the libraryradiate-engines: (Internal) The core engine implementation including theGeneticEngine,EngineIterator,GeneticEngineBuilder, and the steps used during evolution.radiate-alters: (Internal) The crossover and mutation structs.radiate-selectors: (Internal) Selection strategies for the core and engine.radiate-gp: (Internal) The genetic programming implementation - now behind aradiatefeature flag.radiate: (External) The root of the project, contains links to the needed sub-crates.radiate-python: (Internal) The rust-python (pyo3) wrapper.
Note: The only necessary crate to add to your cargo.toml is radiate
Alone with splitting the crate into a workspace - I've added opt-in speciation. This is a common concept in evolutionary algorithms where populations evolve within their own 'niche' or 'species'. I am still working on the docs for this.
Adding replacement strategy
1.) Adding trait for replacement strategy. Every time a Phenotype is deemed invalid or reaches an age limit, it needs to be replaced. This replacement strategy allows the user to define how the replacement is done.
2.) Adding different variants of codex for float, int, and char. Define if you want a matrix, vector, or scalar as the input to the fitness fn.
Full Changelog: v1.2.9...v1.2.10