# History ## 0.5.0 To learn about this release, see our page on What's New in v0.5.0: https://docs.pyribs.org/en/stable/whats-new.html ### Changelog #### API - Schedulers warn if no solutions are inserted into archive (#320) - Implement `BanditScheduler` (#299) - **Backwards-incompatible:** Implement Scalable CMA-ES Optimizers (#274, #288) - Make ribs.emitters.opt public (#281) - Add normalized QD score to ArchiveStats (#276) - **Backwards-incompatible:** Make ArchiveStats a dataclass (#275) - **Backwards-incompatible:** Add shape checks to `tell()` and `tell_dqd()` methods (#269) - Add method for computing CQD score in archives (#252) - **Backwards-incompatible:** Deprecate positional arguments in constructors (#261) - **Backwards-incompatible:** Allow custom initialization in Gaussian and IsoLine emitters (#259, #265) - Implement CMA-MAE archive thresholds (#256, #260, #314) - Revive the old implementation of `add_single` removed in (#221) - Add separate tests for `add_single` and `add` with single solution - Fix all examples and tutorials (#253) - Add restart timer to `EvolutionStrategyEmitter` and `GradientArborescenceEmitter`(#255) - Rename fields and update documentation (#249, #250) - **Backwards-incompatible:** rename `Optimizer` to `Scheduler` - **Backwards-incompatible:** rename `objective_value` to `objective` - **Backwards-incompatible:** rename `behavior_value`/`bcs` to `measures` - **Backwards-incompatible:** `behavior_dim` in archives is now `measure_dim` - Rename `n_solutions` to `batch_size` in `Scheduler`. - Add `GradientArborescenceEmitter`, which is used to implement CMA-MEGA (#240, #263, #264, #282, #321) - Update emitter `tell()` docstrings to no longer say "Inserts entries into archive" (#247) - Expose `emitter.restarts` as a property (#248) - Specify that `x0` is 1D for all emitters (#244) - Add `best_elite` property for archives (#237) - Rename methods in ArchiveDataFrame and rename as_pandas behavior columns (#236) - Re-run CVTArchive benchmarks and update CVTArchive (#235) - **Backwards-incompatible:** `use_kd_tree` now defaults to True since the k-D tree is always faster than brute force in benchmarks. - Allow adding solutions one at a time in optimizer (#233) - Minimize numba usage (#232) - **Backwards-incompatible:** Implement batch addition in archives (#221, #242) - `add` now adds a batch of solutions to the archive - `add_single` adds a single solution - `emitter.tell` now takes in `status_batch` and `value_batch` (#227) - Make epsilon configurable in archives (#226) - **Backwards-incompatible:** Remove ribs.factory (#225, #228) - **Backwards-incompatible:** Replaced `ImprovementEmitter`, `RandomDirectionEmitter`, and `OptimizingEmitter` with `EvolutionStrategyEmitter` (#220, #223, #278) - Raise ValueError for incorrect array shapes in archive methods (#219) - Introduced the Ranker object, which is responsible for ranking the solutions based on different objectives (#209, #222, #245) - Add index_of_single method for getting index of measures for one solution (#214) - **Backwards-incompatible:** Replace elite_with_behavior with retrieve and retrieve_single in archives (#213, #215, #295) - **Backwards-incompatible:** Replace get_index with batched index_of method in archives (#208) - Also added `grid_to_int_index` and `int_to_grid_index` methods for `GridArchive` and `SlidingBoundariesArchive` - **Backwards-incompatible:** Made it such that each archive is initialized fully in its constructor instead of needing a separate .initialize(solution_dim) call (#200) - **Backwards-incompatible:** Add `sigma`, `sigma0` options to `gaussian_emitter` and `iso_line_emitter` (#199) - `gaussian_emitter` constructor requires `sigma`; `sigma0` is optional. - `iso_line_emitter` constructor takes in optional parameter `sigma0`. - **Backwards-incompatible:** Add `cbar`, `aspect` options for `cvt_archive_heatmap` (#197) - **Backwards-incompatible:** Add `aspect` option to `grid_archive_heatmap` + support for 1D heatmaps (#196) - `square` option no longer works - **Backwards-incompatible:** Add `cbar` option to `grid_archive_heatmap` (#193) - **Backwards-incompatible:** Replace `get_random_elite()` with batched `sample_elites()` method (#192) - **Backwards-incompatible:** Add EliteBatch and rename fields in Elite (#191) - **Backwards-incompatible:** Rename bins to cells for consistency with literature (#189) - Archive constructors now take in `cells` argument instead of `bins` - Archive now have a `cells` property rather than a `bins` property - **Backwards-incompatible:** Only use integer indices in archives (#185) - `ArchiveBase` - Replaced `storage_dims` (tuple of int) with `storage_dim` (int) - `_occupied_indices` is now a fixed-size array with `_num_occupied` indicating its current usage, and `_occupied_indices_cols` has been removed - `index_of` must now return an integer #### Bugs - Fix boundary lines in sliding boundaries archive heatmap (#271) - Fix negative eigenvalue in CMA-ES covariance matrix (#285) #### Documentation - Speed up lunar lander tutorial (#319) - Add DQDTutorial (#267) - Remove examples extra in favor of individual example deps (#306) - Facilitate linking to latest version of documentation (#300) - Update lunar lander tutorial with v0.5.0 features (#292) - Improve tutorial and example overviews (#291) - Move tutorials out of examples folder (#290) - Update lunar lander to use Gymnasium (#289) - Add CMA-MAE tutorial (#273, #284) - Update README (#279) - Add sphinx-codeautolink to docs (#206, #280) - Fix documentation rendering issues on ReadTheDocs (#205) - Fix typos and formatting in docstrings of `ribs/visualize.py` (#203) - Add in-comment type hint rich linking (#204) - Upgrade Sphinx dependencies (#202) #### Improvements - Move threadpoolctl from optimizer to CMA-ES (#241) - Remove unnecessary emitter benchmarks (#231) - Build docs during CI/CD workflow (#211) - Drop Python 3.6 and add Python 3.10 support (#181) - Add procedure for updating changelog (#182) - Add 'visualize' extra (#183, #184, #302) ## 0.4.0 (2021-07-19) To learn about this release, see our blog post: https://pyribs.org/blog/0-4-0 ### Changelog #### API - Add ribs.visualize.parallel_axes_plot for analyzing archives with high-dimensional BCs (#92) - **Backwards-incompatible:** Reduce attributes and parameters in EmitterBase to make it easier to extend (#101) - In Optimizer, support emitters that return any number of solutions in ask() (#101) - **Backwards-incompatible:** Store metadata in archives as described in #87 (#103, #114, #115, #119) - **Backwards-incompatible:** Rename "index" to "index_0" in CVTArchive.as_pandas for API consistency (#113) - **Backwards-incompatible:** Make index_of() public in archives to emphasize each index's meaning (#128) - **Backwards-incompatible:** Add index to get_random_elite() and elite_with_behavior() in archives (#129) - Add clear() method to archive (#140, #146) - Represent archive elites with an Elite namedtuple (#142) - Add len and iter methods to archives (#151, #152) - Add statistics to archives (#100, #157) - Improve manipulation of elites by modifying as_pandas (#123, #149, #153, #158, #168) - Add checks for optimizer array and list shapes (#166) #### Documentation - Add bibtex citations for tutorials (#122) - Remove network training from Fooling MNIST tutorial (#161) - Fix video display for lunar lander in Colab (#163) - Fix Colab links in stable docs (#164) #### Improvements - Add support for Python 3.9 (#84) - Test with pinned versions (#110) - Increase minimum required versions for scipy and numba (#110) - Refactor as_pandas tests (#114) - Expand CI/CD to test examples and tutorials (#117) - Tidy up existing tests (#120, #127) - Fix vocab in various areas (#138) - Fix dependency issues in tests (#139) - Remove tox from CI (#143) - Replace "entry" with "elite" in tests (#144) - Use new archive API in ribs.visualize implementation (#155) ## 0.3.1 (2021-03-05) This release features various bug fixes and improvements. In particular, we have added tests for SlidingBoundariesArchive and believe it is ready for more rigorous use. ### Changelog - Move SlidingBoundariesArchive out of experimental by adding tests and fixing bugs (#93) - Added nicer figures to the Sphere example with `grid_archive_heatmap` (#86) - Added testing for Windows and MacOS (#83) - Fixed package metadata e.g. description ## 0.3.0 (2021-02-05) pyribs is now in beta. Since our alpha release (0.2.0), we have polished the library and added new tutorials and examples to our documentation. ### Changelog - Added a Lunar Lander example that extends the lunar lander tutorial (#70) - Added New Tutorial: Illuminating the Latent Space of an MNIST GAN (#78) - GridArchive: Added a boundaries attribute with the upper and lower bounds of each dimension's bins (#76) - Fixed a bug where CMA-ME emitters do not work with float32 archives (#74) - Fixed a bug where Optimizer is able to take in non-unique emitter instances (#75) - Fixed a bug where GridArchive failed for float32 due to a small epsilon (#81) - Fix issues with bounds in the SlidingBoundaryArchive (#77) - Added clearer error messages for archives (#82) - Modified the Python requirements to allow any version above 3.6.0 (#68) - The wheel is now fixed so that it only supports py3 rather than py2 and py3 (#68) - Miscellaneous documentation fixes (#71) ## 0.2.0 (2021-01-29) - Alpha release ## 0.2.1 (2021-01-29) - Package metadata fixes (author, email, url) - Miscellaneous documentation improvements ## 0.1.1 (2021-01-29) - Test release (now removed) ## 0.1.0 (2020-09-11) - Test release (now removed) ## 0.0.0 (2020-09-11) - pyribs begins