Skip to content

Releases: adaptive-intelligent-robotics/QDax

v0.5.0

27 May 15:18
f06dda3

Choose a tag to compare

Link to Release PR - #238

πŸ› οΈ Core Framework Improvements

Custom Repertoire Integration (#222)

  • Allow MAPElites to be built with any repertoire by passing custom repertoire init functions
  • Default behavior maintained with MapElitesRepertoire.init
  • Enhanced flexibility for custom repertoire implementations

MAPElites Repertoire Enhancement (#211)

  • Enhanced MAPElitesRepertoire to store any kind of information through improved extra_scores handling
  • Standardized extra scores management across all repertoire classes with keys_extra_scores parameter
  • Added filter_extra_scores method to filter extra scores based on keys
  • Moved observations from dedicated fields to extra_scores storage

Ask/Tell Interface (#221)

  • New user-facing ask/tell interface for more flexible algorithm interaction
  • Added init_ask_tell function for initialization without scoring functions
  • Refactored update functions to use ask/tell internally, reducing code duplication

πŸ”„ Major Refactoring & Architecture Changes

Selector System Overhaul (#209)

  • New unified selection interface through the Selector abstraction for improved modularity and extensibility
  • Introduced UniformSelector and MOMEUniformSelector implementations
  • Selectors now return full sub-repertoires instead of just genotypes, eliminating the need for multiple sampling functions
  • Default selection behavior integrated into repertoire classes

Brax Environment Structure Reorganization (#236)

  • Complete restructuring of Brax-related code from /environments to /tasks/brax with proper versioning
  • Added Brax v2 support alongside existing Brax v1
  • Improved environment handling and version management

Code Organization (#200, #204)

  • Moved cmaes.py from core to baselines for better module organization

πŸ”§ Code Quality & Standards

Terminology Standardization (#190)

  • Unified descriptor naming from mixed "bd", "BD", "behavior_descriptor" to consistent "descriptor"
  • Stopped returning random keys following JAX best practices
  • Renamed all random_key parameters to key
  • Removed deprecated Brax scoring functions
  • Standardized unused parameter naming with underscore prefix

JIT Compilation Cleanup (#232)

  • Removed individual jax.jit decorators from internal functions for more user coding flexibility
  • Improved function signatures

JAX Modernization (#195)

  • Updated to new-style JAX random keys (jax.random.key instead of jax.random.PRNGKey)
  • Full compliance with JAX JEP 9263 typed keys specification

⚑ Performance & Memory Optimizations

VRAM Optimization (#224)

  • Significant memory improvements in PGA and DCRL algorithms
  • Off-spring PG mutations now share mini-batches, reducing memory usage
  • Step-by-step transition sampling in both "emit_pg" and "state_update"
  • Simplified function structure and combined training/update operations
  • New scan_actor_critic_training function for efficient Actor-Critic loops

πŸ” Quality Assurance

Automated Spell Checking (#194)

  • Added codespell pre-commit hook to catch typos automatically
  • Fixed existing typos throughout codebase
  • Updated pre-commit configuration with latest package versions

Updated example notebooks with better parameter handling for NSGA-II and SPEA2 (#231)

  • Fixed batch size parameters to use population_size by default for genetic algorithms

πŸ“Š Metrics & Analysis Features

Uncertainty Domain Support (#186)

  • New reevaluation functions in qdax/utils/uncertain_metrics.py
  • Compute corrected archives for uncertain domains
  • Comprehensive test coverage for uncertainty metrics

Enhanced Visualization (#233)

  • Custom x-axis labels in plot_map_elites_results
  • Defaults to "Environment steps" with backward compatibility

Metrics Initialization (#214)

  • Return metrics after repertoire initialization for better monitoring

🧹 Cleanup & Maintenance

Simplified Interface (#225)

  • Removed save and load methods from repertoire classes
  • Users can now use custom serialization methods like pickle or orbax
  • Reduced maintenance burden for new repertoire types

Package Configuration Modernization (#213)

  • Migrated from setup.py to pyproject.toml for modern Python packaging standards

Fixed indexing in UnstructuredRepertoire (#185)

  • better handling of NaN descriptors

Legacy spring support (#226)

  • Legacy spring support for Brax v1 with backward compatibility boolean flag

v0.4.1

04 Mar 11:46

Choose a tag to compare

Full Changelog: v0.4.0...v0.4.1

What's Changed

  • Fix #139: ensure MOME works for genotypes that are not arrays by @hannah-jan in #199
  • Hotfix: remove useless dependencies (including gym dependency) by @Lookatator in #210

Full Changelog: v0.4.0...v0.4.1

v0.4.0

09 Sep 15:26
f16b0da

Choose a tag to compare

Updates and New Functionalities

  • Add DCRL-ME algorithm - #167
  • Upgrade Library Versions and Python Version - #187

Bug Fixes

  • Fix the Pareto Dominance definition to account for solutions which have the same fitness values along one axis. - #174

Breaking Changes

  • qdax/types.py has been renamed to qdax/custom_types.py
  • Emitter.emit has a new output extra_info that is similar to the extra_scores of the scoring function, and that enables to pass information from the emit step to the state_update (necessary for DCRL-ME).
  • Emitter.init now also takes as input a repertoire, as well as fitnesses, descriptors and extra_scores.
  • init_genotypes have been replaced with genotypes in the arguments of Emitter.init

Documentation

  • Clarify contribution process - #171

Full Changelog: v0.3.0...v0.4.0

v0.3.0

26 Jan 08:33
a721221

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.2.3...v0.3.0

v0.2.3

17 May 13:22
b44969f

Choose a tag to compare

What's changed

  • Fix dependencies in notebook examples

v0.2.2

16 Mar 12:01
773e646

Choose a tag to compare

V0.2.2

What's Changed

  • minimal support for jumanji #136
  • PBT and PBT-ME #143
  • Humanoid Trap #143

Full Changelog: v0.2.1...v0.2.2

v0.2.1

07 Dec 11:56
45c4c2a

Choose a tag to compare

Small release to fix a dependency that was preventing the installation of qdax through pypi. The issue was related to scikit-learn installation. See #130

v0.2.0

01 Dec 11:55
fc0ad78

Choose a tag to compare

Moving to v0.2.0 with several new algorithms, fixes of current implementations, a whole new set of tasks, a more general API and some dependencies update to stay in phase with the Jax community πŸš€ ⏩ ⏩

  • fix(envs): order of wrappers to ensure update of state descriptor when using fixed init state (#128)
  • fix(doc): add colab links, missing doc, update version (#125)
  • feat!(repertoire): optional extra-scores for repertoire addition (#118)
  • fix(jit): avoid consecutive jits of same method in for loops (#122)
  • fix(docker): fix run-image docker stage (#121)
  • feat(algorithms): add MAP-Elites distributed on multiple devices (#117)
  • fix(test): inverse fitness and desc names in sampling test (#119)
  • feat(github): add GitHub template for PR (#120)
  • feat(algorithms): add QDPG emitter + refactor PGAME (#110)
  • feat(algorithms): add CMA-ME, fix CMA-ES and CMA-MEGA (#86)
  • fix(mees): add batch size property (#114)
  • feat(algorithms): Add Multi-Emitter (#90)
  • fix: reset_based scoring in brax_env default task (#109)
  • feat(algorithms): add ME-ES to QDax (#81)
  • fix(examples): brax version in colab examples (#108)
  • fix(docs): avoid using flax 0.6.2 in setup (#112)
  • feat(envs): wrapper for fixed initial state of environments (#92)
  • fix(style): mypy issue in controller training
  • fix: optimizer state reinitialization for PG variations (#104)
  • fix: add update policy delay in PG emitter
  • fix(pointmaze): scale after the clip of actions (#101)
  • hotfix(images): re-add deleted logos to the repo
  • docs: add caveats and logo (#99)
  • feat: Default Scoring Functions for Sphere, Rastrigin, Arm, Brax environments, Hypervolume functions and QD Suite (#73)
  • chore: Update jax, brax and flax versions (fixes the jax.tree_util warnings) (#76)
  • doc: Add remark for installing QDax with GPU support in README (#77)
  • fix the replay buffer overflow issue (#75)
  • fix: correct irrelevant factor 0.25 in td3 loss (#78)

We also welcome a new contributor: @maxencefaldor πŸ‘

Well done to all the team for this new release πŸŽ‰ πŸ‘©β€πŸ’» πŸ‘¨β€πŸ’» (@manon-but-yes @Lookatator @limbryan @ranzenTom @Aneoshun @Egiob @valentinmace @maxiallard @felixchalumeau)

v0.1.0

12 Jul 15:15
bf0df70

Choose a tag to compare

Finally moving to version 0.1.0 of QDax with several algorithms additions, new tools, enhanced documentation and several fixes πŸš€

  • Update notebooks to run on colab and update chex version (#61)
  • Pin brax version + remove autoreload (#60)”
  • Enhance the current documentation + gather baselines in separate folder (#57)
  • Add example notebook for NSGA2 and SPEA2 (#58)
  • Add API documentation, use README as home page (#56)
  • Add NSGA2 and SPEA2 to QDax (#33)
  • Add reset_based_scoring_function for stochastic environments (#31)
  • Issue with batch size 1 (#52)
  • Add colab badges to all example notebooks (#53)
  • Add codecov to QDax for test coverage reports (#39)
  • Update singularity pipeline and fix pre-commits (#45)
  • Add plot_multidimensional_map_elites_grid function (#47)
  • Extend functionality of compute_euclidean_centroids (#40)
  • Repertoire addition for 1d bd (map elites and mome) (#41)
  • Static argnames in _sample_in_masked_pareto_front (#49)
  • Update ci trigger rules (#48)
  • Use rngkey for centroids generation
  • Run workflow on pull requests
  • Use RNGKey for sampling CVT centroids and for KMeans
  • Fix mome emitter state update
  • Add MOME to QDax (#27)
  • Fix steps incrementation in pointmaze (#36)
  • Upgrade requirements for numpy and jax (#34)
  • Add CMA MEGA (#25) - (API change!)
  • Add SMERL (DIAYN+DADS) (#22)
  • Add DADS (#21)
  • Add OMG-MEGA (#24)
  • Add DIAYN (#20) and refactor SAC
  • Add SAC algorithm (#16)
  • Add TD3 algorithm (#14)
  • Fix issue in behavior descriptor evaluation (#13)