Releases: adaptive-intelligent-robotics/QDax
Releases Β· adaptive-intelligent-robotics/QDax
v0.5.0
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
MAPElitesRepertoireto store any kind of information through improvedextra_scoreshandling - Standardized extra scores management across all repertoire classes with
keys_extra_scoresparameter - Added
filter_extra_scoresmethod to filter extra scores based on keys - Moved
observationsfrom dedicated fields toextra_scoresstorage
Ask/Tell Interface (#221)
- New user-facing ask/tell interface for more flexible algorithm interaction
- Added
init_ask_tellfunction 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
Selectorabstraction for improved modularity and extensibility - Introduced
UniformSelectorandMOMEUniformSelectorimplementations - 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
/environmentsto/tasks/braxwith proper versioning - Added Brax v2 support alongside existing Brax v1
- Improved environment handling and version management
Code Organization (#200, #204)
- Moved
cmaes.pyfromcoretobaselinesfor 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_keyparameters tokey - Removed deprecated Brax scoring functions
- Standardized unused parameter naming with underscore prefix
JIT Compilation Cleanup (#232)
- Removed individual
jax.jitdecorators from internal functions for more user coding flexibility - Improved function signatures
JAX Modernization (#195)
- Updated to new-style JAX random keys (
jax.random.keyinstead ofjax.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_trainingfunction 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_sizeby 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
saveandloadmethods from repertoire classes - Users can now use custom serialization methods like
pickleororbax - Reduced maintenance burden for new repertoire types
Package Configuration Modernization (#213)
- Migrated from
setup.pytopyproject.tomlfor 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
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
Updates and New Functionalities
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.pyhas been renamed toqdax/custom_types.pyEmitter.emithas a new outputextra_infothat 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.initnow also takes as input arepertoire, as well asfitnesses,descriptorsandextra_scores.init_genotypeshave been replaced withgenotypesin the arguments ofEmitter.init
Documentation
- Clarify contribution process - #171
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's Changed
- Uniform sac network sizes, by @limbryan in #145
- Remove singularity tools and update haiku version, by @limbryan in #147
- Add MAP-Elites Low-Spread, by @btjanaka in #152
- Add MAP-Elites Low-Spread (#152), by @Lookatator in #154
- Fix spelling errors, by @btjanaka in #150
- Use brax.v1 and update requirements, by @DBraun in #156
- Add sampling extractors, by @manon-but-yes in #158
- Update the paper to cite, by @felixchalumeau in #161
- Fix dependencies in requirements.txt and setup.py, by @Lookatator in #165
- Fix imports jumpy and formatting issues, by @Lookatator in #163
- Add AURORA and PGA-AURORA, by @felixchalumeau in #144
- Fixing colab link in CMA-ME notebook, by @felixchalumeau in #172
New Contributors
Full Changelog: v0.2.3...v0.3.0
v0.2.3
What's changed
- Fix dependencies in notebook examples
v0.2.2
v0.2.1
v0.2.0
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
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)