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 ({pr}`320`)
- Implement `BanditScheduler` ({pr}`299`)
- **Backwards-incompatible:** Implement Scalable CMA-ES Optimizers ({pr}`274`,
{pr}`288`)
- Make ribs.emitters.opt public ({pr}`281`)
- Add normalized QD score to ArchiveStats ({pr}`276`)
- **Backwards-incompatible:** Make ArchiveStats a dataclass ({pr}`275`)
- **Backwards-incompatible:** Add shape checks to `tell()` and `tell_dqd()`
methods ({pr}`269`)
- Add method for computing CQD score in archives ({pr}`252`)
- **Backwards-incompatible:** Deprecate positional arguments in constructors
({pr}`261`)
- **Backwards-incompatible:** Allow custom initialization in Gaussian and
IsoLine emitters ({pr}`259`, {pr}`265`)
- Implement CMA-MAE archive thresholds ({pr}`256`, {pr}`260`, {pr}`314`)
- Revive the old implementation of `add_single` removed in ({pr}`221`)
- Add separate tests for `add_single` and `add` with single solution
- Fix all examples and tutorials ({pr}`253`)
- Add restart timer to `EvolutionStrategyEmitter` and
`GradientArborescenceEmitter`({pr}`255`)
- Rename fields and update documentation ({pr}`249`, {pr}`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
({pr}`240`, {pr}`263`, {pr}`264`, {pr}`282`, {pr}`321`)
- Update emitter `tell()` docstrings to no longer say "Inserts entries into
archive" ({pr}`247`)
- Expose `emitter.restarts` as a property ({pr}`248`)
- Specify that `x0` is 1D for all emitters ({pr}`244`)
- Add `best_elite` property for archives ({pr}`237`)
- Rename methods in ArchiveDataFrame and rename as_pandas behavior columns
({pr}`236`)
- Re-run CVTArchive benchmarks and update CVTArchive ({pr}`235`, {pr}`329`)
- **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 ({pr}`233`)
- Minimize numba usage ({pr}`232`)
- **Backwards-incompatible:** Implement batch addition in archives ({pr}`221`,
{pr}`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` ({pr}`227`)
- Make epsilon configurable in archives ({pr}`226`)
- **Backwards-incompatible:** Remove ribs.factory ({pr}`225`, {pr}`228`)
- **Backwards-incompatible:** Replaced `ImprovementEmitter`,
`RandomDirectionEmitter`, and `OptimizingEmitter` with
`EvolutionStrategyEmitter` ({pr}`220`, {pr}`223`, {pr}`278`)
- Raise ValueError for incorrect array shapes in archive methods ({pr}`219`)
- Introduced the Ranker object, which is responsible for ranking the solutions
based on different objectives ({pr}`209`, {pr}`222`, {pr}`245`)
- Add index_of_single method for getting index of measures for one solution
({pr}`214`)
- **Backwards-incompatible:** Replace elite_with_behavior with retrieve and
retrieve_single in archives ({pr}`213`, {pr}`215`, {pr}`295`)
- **Backwards-incompatible:** Replace get_index with batched index_of method in
archives ({pr}`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 ({pr}`200`)
- **Backwards-incompatible:** Add `sigma`, `sigma0` options to
`gaussian_emitter` and `iso_line_emitter` ({pr}`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` ({pr}`197`)
- **Backwards-incompatible:** Add `aspect` option to `grid_archive_heatmap` +
support for 1D heatmaps ({pr}`196`)
- `square` option no longer works
- **Backwards-incompatible:** Add `cbar` option to `grid_archive_heatmap`
({pr}`193`)
- **Backwards-incompatible:** Replace `get_random_elite()` with batched
`sample_elites()` method ({pr}`192`)
- **Backwards-incompatible:** Add EliteBatch and rename fields in Elite
({pr}`191`)
- **Backwards-incompatible:** Rename bins to cells for consistency with
literature ({pr}`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 ({pr}`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 ({pr}`271`)
- Fix negative eigenvalue in CMA-ES covariance matrix ({pr}`285`)
Documentation
- Speed up lunar lander tutorial ({pr}`319`)
- Add DQDTutorial ({pr}`267`)
- Remove examples extra in favor of individual example deps ({pr}`306`)
- Facilitate linking to latest version of documentation ({pr}`300`)
- Update lunar lander tutorial with v0.5.0 features ({pr}`292`)
- Improve tutorial and example overviews ({pr}`291`)
- Move tutorials out of examples folder ({pr}`290`)
- Update lunar lander to use Gymnasium ({pr}`289`)
- Add CMA-MAE tutorial ({pr}`273`, {pr}`284`)
- Update README ({pr}`279`)
- Add sphinx-codeautolink to docs ({pr}`206`, {pr}`280`)
- Fix documentation rendering issues on ReadTheDocs ({pr}`205`)
- Fix typos and formatting in docstrings of `ribs/visualize.py` ({pr}`203`)
- Add in-comment type hint rich linking ({pr}`204`)
- Upgrade Sphinx dependencies ({pr}`202`)
Improvements
- Move threadpoolctl from optimizer to CMA-ES ({pr}`241`)
- Remove unnecessary emitter benchmarks ({pr}`231`)
- Build docs during CI/CD workflow ({pr}`211`)
- Drop Python 3.6 and add Python 3.10 support ({pr}`181`)
- Add procedure for updating changelog ({pr}`182`)
- Add 'visualize' extra ({pr}`183`, {pr}`184`, {pr}`302`)