History¶
0.10.0¶
Changelog¶
API¶
Improvements¶
Fix various docs errors (#688)
Add back pylint and remove ty (#687)
Fix pandas dtype in test for CategoricalArchive (#686)
0.9.0¶
To learn about this release, see our page on What’s New in v0.9.0: https://docs.pyribs.org/en/stable/whats-new.html
Changelog¶
API¶
Add
replaceparameter to sample_elites in archives (#682)Require numpy to be at least 2.0.0 (#681)
Allow specifying
centroidswith filenames in CVTArchive (#679)Add
kdtree_query_kwargsparameter to CVTArchive (#677)Backwards-incompatible: Replace
ckdtree_kwargswithkdtree_kwargsin CVTArchive and ProximityArchive (#676)Add
sklearn_nnas an option fornearest_neighborsin CVTArchive (#675)Backwards-incompatible: Replace
use_kd_treewithnearest_neighborsin CVTArchive (#674)Drop Python 3.9 support and add 3.14 support (#672)
Separate centroid generation from init in CVTArchive (#663)
Backwards-incompatible: Replace the
cellsandcustom_centroidsparameters with a newcentroidsparameter in CVTArchiveBackwards-incompatible: Remove the
samplesproperty from CVTArchiveBackwards-incompatible: Remove
plot_samplesfromcvt_archive_heatmapandcvt_archive_3d_plot
Add
k_means_centroidsfunction (#665)Backwards-incompatible: Remove
centroid_methodfromCVTArchive(#662)Support multi-dimensional solutions in GaussianEmitter and IsoLineEmitter (#650)
Allow specifying emitter bounds with
lower_boundsandupper_bounds(#649, #657)Backwards-incompatible: Deprecate dict
dtypein archives and instead usesolution_dtype,objective_dtype, andmeasures_dtype(#639, #643, #661)Raise
KeyErrorinArchiveDataFrame.get_fieldwhen field not found (#626)Support array backends in ArrayStore via Python array API Standard (#570, #645)
Backwards-incompatible: Remove raw_dict methods from ArrayStore (#575)
Improvements¶
Use dtypes when calling asarray in archive methods (#673)
Replace cKDTree usage with KDTree (#669)
Support ProximityArchive in parallel_axes_plot (#647)
Cast dtype when validating arguments (#646)
Add type annotations and use ty for type checking (#624)
Migrate from pylint to ruff for linting (#605, #607, #612, #619, #666)
Replace isort with ruff import check (#603)
Documentation¶
Add tutorial on centroid specification for
CVTArchive(#662, #680)Update DQD and QDHF tutorials (#659)
0.8.3¶
Small bugfix release.
Changelog¶
Bugs¶
Add best_elite back to SlidingBoundariesArchive (#623)
Correct types of ArchiveStats obj_max and obj_mean (#617)
Fix bug in ribs.visualize args tests (#615)
0.8.2¶
This release focuses on improving documentation for pyribs, particularly by adding the QDAIF tutorial.
Changelog¶
Documentation¶
Migrate docs to sphinx-immaterial theme (#596)
Make all metrics start from values in archive stats (#586)
Update dependencies for lunar lander (#585)
Improvements¶
0.8.1¶
This release makes some minor updates to 0.8.0.
Changelog¶
API¶
Backwards-incompatible: Remove convenience extras ribs[pymoo] and ribs[pycma] (#567)
Documentation¶
Update Discord and X links in README (#566)
0.8.0¶
To learn about this release, see our page on What’s New in v0.8.0: https://docs.pyribs.org/en/stable/whats-new/v0.8.0.html
Changelog¶
API¶
Implement BOP-Elites by adding BayesianOptimizationEmitter and BayesianOptimizationScheduler; add BOP-Elites demo (#496)
Allow result_archive to be positional arg in schedulers (#557)
Backwards-incompatible: Make
num_activea keyword-only arg in BanditScheduler (#557)Add CategoricalArchive (#549)
Support solutions with non-1D shapes (#550)
Backwards-incompatible: Move cqd_score into a separate function (#537)
Backwards-incompatible: Make archive field_list and dtypes props include index (#532)
Backwards-incompatible: Remove thresholds from SlidingBoundariesArchive (#527)
Backwards-incompatible: Remove transforms from archive add operations (#525)
Add retessellate method to GridArchive (#516)
Backwards-incompatible: Tidy up operator implementation (#507, #510)
Drop Python 3.8 support and remove pinned requirements {#497)
Backwards-incompatible: BanditScheduler: Add emitter_pool and active attr; remove emitters attr (#494)
Add DensityArchive and DensityRanker for Density Descent Search (#483, #504, #487, #543, #546)
Add NoveltyRanker for novelty search (#477)
Add proximity_archive_plot for visualizing ProximityArchive (#476, #480, #523)
Support novelty search with local competition in ProximityArchive (#481)
Add ProximityArchive for novelty search (#472, #479, #484, #521, #527)
Support diversity optimization in Scheduler.tell (#473)
Allow specifying separate dtypes for solution, objective, and measures (#471)
Replace archive.dtype with archive.dtypes dict that holds dtype of every field (#470)
Bugs¶
Make emitter bounds dtype match solution dtype (#519)
Fix
BanditSchedulerbehaviour: the number of active emitters remains stable (#489)
Documentation¶
Add Novelty Search with Kheperax tutorial (#552)
Add Supported Algorithms page (#559)
Add cqd_score example (#537)
Update sphere example for consistency (#505)
Add version selector to docs (#495)
Update gymnasium and lunar lander version (#493)
Add tutorial page on Optuna integration (#492)
Switch from std to var in arm tutorial (#486)
Fix documentation conf for readthedocs deprecations (#485)
Add novelty search with CMA-ES to sphere example (#478, #482)
Clarify errors in scheduler docstrings (#488)
Improvements¶
Remove
np_scalarutil by making archive dtypes be numpy scalar types (#534)Refactor archives into single-file implementations (#518, #521, #526, #528, #529, #530, #533, #535)
Make ArrayStore.data return ArchiveDataFrame instead of DataFrame (#522)
Migrate to pyproject.toml (#514)
Set vmin and vmax to None if archive is empty in ribs.visualize (#513, #523)
Remove operators from GaussianEmitter and IsoLineEmitter (#508)
Update QDax visualizations to match QDax 0.5.0 (#502)
Skip qdax tests if qdax not installed (#491)
Move yapf after isort in pre-commit (#490)
Remove
_cellsattribute from ArchiveBase (#475)Upgrade setup-miniconda to v3 due to deprecation (#464)
0.7.1¶
This release introduces the QDHF tutorial! It also makes a couple of minor usability improvements, such as better error checking.
Changelog¶
API¶
Support Python 3.12 (#390)
Improvements¶
Add qd score to lunar lander example (#458)
Raise error if
result_archiveandarchivehave different fields (#461)Warn user if resampling for bounds takes too long in ESs (#462)
Documentation¶
Add QDHF tutorial (#459)
Bugs¶
Fix solution retrieval in lunar lander eval (#457)
0.7.0¶
To learn about this release, see our page on What’s New in v0.7.0: https://docs.pyribs.org/en/stable/whats-new/v0.7.0.html
Changelog¶
API¶
Add GeneticAlgorithmEmitter with Internal Operator Support ({pr}
427)Support alternative centroid generation methods in CVTArchive (#417, #437)
Add PyCMAEvolutionStrategy for using pycma in ES emitters (#434)
Backwards-incompatible: Add ranking values to evolution strategy tell method (#438)
Backwards-incompatible: Move evolution strategy bounds to init (#436)
Backwards-incompatible: Use seed instead of rng in ranker (#432)
Backwards-incompatible: Replace status and value with add_info (#430)
Support custom data fields in archive, emitters, and scheduler (#421, #429)
Backwards-incompatible: Remove
_batchfrom parameter names (#422, #424, #425, #426, #428)Add Gaussian, IsoLine Operators and Refactor GaussianEmitter/IsoLineEmitter (#418)
Backwards-incompatible: Remove metadata in favor of custom fields (#420)
Add Base Operator Interface and Emitter Operator Retrieval (#416)
Backwards-incompatible: Return occupied booleans in retrieve (#414)
Backwards-incompatible: Deprecate
as_pandasin favor ofdata(return_type="pandas")(#408)Backwards-incompatible: Replace ArchiveDataFrame batch methods with
get_field(#413)Add field_list and data methods to archives (#412)
Include threshold in
archive.best_elite(#409)Backwards-incompatible: Replace Elite and EliteBatch with dicts (#397)
Backwards-incompatible: Rename
measure_*columns tomeasures_*inas_pandas(#396)Add ArrayStore data structure (#395, #398, #400, #402, #403, #404, #406, #407, #411)
Add GradientOperatorEmitter to support OMG-MEGA and OG-MAP-Elites (#348)
Improvements¶
Raise error when threshold_min is set but learning_rate is not (#453)
Fix interval_size in CVTArchive and SlidingBoundariesArchive (#452)
Allow overriding ES in sphere example (#439)
Use numbers types when checking arguments (#419)
Reimplement ArchiveBase using ArrayStore (#399)
Use chunk computation in CVT brute force calculation to reduce memory usage (#394)
Test pyribs installation in tutorials (#384)
Fix broken cross-refs in docs (#393)
Documentation¶
Tidy up LSI MNIST notebook (#444)
0.6.4¶
Small release that adds the scalable CMA-MAE tutorial.
Changelog¶
Documentation¶
0.6.3¶
Small patch release due to deprecation issues.
Changelog¶
Improvements¶
Replace np.product with np.prod due to deprecation (#385)
0.6.2¶
Small patch release due to installation issues in our tutorials.
Changelog¶
API¶
Import ribs[visualize] in tutorials that need it (#379)
Improvements¶
Switch to a branch-based release model (#382)
0.6.1¶
(This release was removed)
0.6.0¶
Changelog¶
API¶
Drop Python 3.7 support and upgrade dependencies (#350)
Add visualization of QDax repertoires (#353)
Improve cvt_archive_heatmap flexibility (#354)
Clip Voronoi regions in cvt_archive_heatmap (#356)
Backwards-incompatible: Allow using kwargs for colorbar in parallel_axes_plot (#358)
Removes cbar_orientaton and cbar_pad args for parallel_axes_plot
Add
rasterizedarg for heatmaps (#359)Support 1D cvt_archive_heatmap (#362)
Add 3D plots for CVTArchive (#371)
Add visualization of 3D QDax repertoires (#373)
Enable plotting custom data in visualizations (#374)
Documentation¶
Use dask instead of multiprocessing for lunar lander tutorial (#346)
pip install swig before gymnasium[box2d] in lunar lander tutorial (#346)
Simplify DQD tutorial imports (#369)
Improve visualization docs examples (#372)
Improvements¶
Speed up 2D cvt_archive_heatmap by order of magnitude (#355)
Refactor visualize module into multiple files (#357)
Refactor visualize tests into multiple files (#370)
Add GitHub link roles in documentation (#361)
Refactor argument validation utilities (#365)
Use Conda envs in all CI jobs (#368)
Split tutorial CI into multiple jobs (#375)
0.5.2¶
This release contains miscellaneous edits to our documentation from v0.5.1. Furthermore, the library is updated to support Python 3.11, removed deprecated options, and strengthened with more robust checks and error messages in the schedulers.
Changelog¶
API¶
Support Python 3.11 (#342)
Check that emitters passed in are lists/iterables in scheduler (#341)
Fix Matplotlib
get_cmapdeprecation (#340)Backwards-incompatible: Default
plot_centroidsto False when plotting (#339)Raise error messages when
askis called withoutask_dqd(#338)
Documentation¶
Add BibTex citation for GECCO 2023 (#337)
Improvements¶
Update distribution dependencies (#344)
0.5.1¶
This release contains miscellaneous edits to our documentation from v0.5.0. There were no changes to library functionality in this release.
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/v0.5.0.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()andtell_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_singleremoved in (#221)Add separate tests for
add_singleandaddwith single solution
Fix all examples and tutorials (#253)
Add restart timer to
EvolutionStrategyEmitterandGradientArborescenceEmitter(#255)Rename fields and update documentation (#249, #250)
Backwards-incompatible: rename
OptimizertoSchedulerBackwards-incompatible: rename
objective_valuetoobjectiveBackwards-incompatible: rename
behavior_value/bcstomeasuresBackwards-incompatible:
behavior_dimin archives is nowmeasure_dimRename
n_solutionstobatch_sizeinScheduler.
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.restartsas a property (#248)Specify that
x0is 1D for all emitters (#244)Add
best_eliteproperty for archives (#237)Rename methods in ArchiveDataFrame and rename as_pandas behavior columns (#236)
Re-run CVTArchive benchmarks and update CVTArchive (#235, #329)
Backwards-incompatible:
use_kd_treenow 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)
addnow adds a batch of solutions to the archiveadd_singleadds a single solution
emitter.tellnow takes instatus_batchandvalue_batch(#227)Make epsilon configurable in archives (#226)
Backwards-incompatible: Replaced
ImprovementEmitter,RandomDirectionEmitter, andOptimizingEmitterwithEvolutionStrategyEmitter(#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_indexandint_to_grid_indexmethods forGridArchiveandSlidingBoundariesArchive
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,sigma0options togaussian_emitterandiso_line_emitter(#199)gaussian_emitterconstructor requiressigma;sigma0is optional.iso_line_emitterconstructor takes in optional parametersigma0.
Backwards-incompatible: Add
cbar,aspectoptions forcvt_archive_heatmap(#197)Backwards-incompatible: Add
aspectoption togrid_archive_heatmap+ support for 1D heatmaps (#196)squareoption no longer works
Backwards-incompatible: Add
cbaroption togrid_archive_heatmap(#193)Backwards-incompatible: Replace
get_random_elite()with batchedsample_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
cellsargument instead ofbinsArchive now have a
cellsproperty rather than abinsproperty
Backwards-incompatible: Only use integer indices in archives (#185)
ArchiveBaseReplaced
storage_dims(tuple of int) withstorage_dim(int)_occupied_indicesis now a fixed-size array with_num_occupiedindicating its current usage, and_occupied_indices_colshas been removedindex_ofmust 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)
Update README (#279)
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)
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)
Represent archive elites with an Elite namedtuple (#142)
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)
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