{"id":13688765,"url":"https://github.com/icaros-usc/pyribs","last_synced_at":"2025-10-21T19:40:44.754Z","repository":{"id":37243399,"uuid":"294340368","full_name":"icaros-usc/pyribs","owner":"icaros-usc","description":"A bare-bones Python library for quality diversity optimization.","archived":false,"fork":false,"pushed_at":"2025-09-25T08:56:07.000Z","size":67729,"stargazers_count":241,"open_issues_count":14,"forks_count":45,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-09-29T07:24:35.523Z","etag":null,"topics":["artificial-intelligence","cma-es","deep-learning","evolutionary-algorithms","evolutionary-computation","llms","map-elites","openai-gym","optimization","python","quality-diversity"],"latest_commit_sha":null,"homepage":"https://pyribs.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/icaros-usc.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/supported-algorithms.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-09-10T07:47:17.000Z","updated_at":"2025-09-25T08:56:04.000Z","dependencies_parsed_at":"2023-09-21T21:37:00.644Z","dependency_job_id":"10909b03-4187-44db-9475-5658e2d76b1a","html_url":"https://github.com/icaros-usc/pyribs","commit_stats":{"total_commits":308,"total_committers":12,"mean_commits":"25.666666666666668","dds":"0.38961038961038963","last_synced_commit":"4385f0293a8e9c5fee3db3d7c6b1547c42dd2a7d"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/icaros-usc/pyribs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icaros-usc%2Fpyribs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icaros-usc%2Fpyribs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icaros-usc%2Fpyribs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icaros-usc%2Fpyribs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/icaros-usc","download_url":"https://codeload.github.com/icaros-usc/pyribs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icaros-usc%2Fpyribs/sbom","scorecard":{"id":64565,"data":{"date":"2025-08-04","repo":{"name":"github.com/icaros-usc/pyribs","commit":"b8cdd15dc5863ecefad2f41475562b641f23d8a0"},"scorecard":{"version":"v5.2.1-28-gc1d103a9","commit":"c1d103a9bb9f635ec7260bf9aa0699466fa4be0e"},"score":4.9,"checks":[{"name":"Code-Review","score":0,"reason":"Found 2/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 19 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/install.yml:1","Warn: no topLevel permission defined: .github/workflows/testing.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/install.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/install.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/testing.yml:99: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/testing.yml:100: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/testing.yml:129: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/testing.yml:130: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/testing.yml:157: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/testing.yml:185: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/testing.yml:186: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/testing.yml:207: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/testing.yml:208: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/testing.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/testing.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/testing.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/testing.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/testing.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/testing.yml:71: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/testing.yml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/testing.yml:112: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/testing.yml:113: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/testing.yml:144: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/testing.yml:145: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/testing.yml:171: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/testing.yml:172: update your workflow using https://app.stepsecurity.io/secureworkflow/icaros-usc/pyribs/testing.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:48","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:53","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:57","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:61","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:77","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:79","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:81","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:86","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:90","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:94","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:118","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:177","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:213","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:214","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:33","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:105","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:107","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:135","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:150","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:191","Info:   0 out of  11 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  12 third-party GitHubAction dependencies pinned","Info:   0 out of  20 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":6,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Warn: required approving review count is 1 on branch 'master'","Warn: codeowners review is not required on branch 'master'","Warn: no status checks found to merge onto branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-15T02:19:59.248Z","repository_id":37243399,"created_at":"2025-08-15T02:19:59.249Z","updated_at":"2025-08-15T02:19:59.249Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280325219,"owners_count":26311414,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["artificial-intelligence","cma-es","deep-learning","evolutionary-algorithms","evolutionary-computation","llms","map-elites","openai-gym","optimization","python","quality-diversity"],"created_at":"2024-08-02T15:01:22.094Z","updated_at":"2025-10-21T19:40:44.748Z","avatar_url":"https://github.com/icaros-usc.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# pyribs\n\n|                                                               Discord                                                               |                     Mailing List                     |                                                 X                                                  |\n| :---------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: | :------------------------------------------------------------------------------------------------: |\n| [![Discord Invite](https://dcbadge.limes.pink/api/server/QxhcJSqZ8G?compact=true\u0026style=flat-square)](https://discord.gg/QxhcJSqZ8G) | [Google Groups](https://groups.google.com/g/pyribs/) | [![X](https://img.shields.io/twitter/follow/pyribs?style=flat-square)](https://twitter.com/pyribs) |\n\n|             Website              |                     Source                     |                    Docs                    |                    Paper                     |\n| :------------------------------: | :--------------------------------------------: | :----------------------------------------: | :------------------------------------------: |\n| [pyribs.org](https://pyribs.org) | [GitHub](https://github.com/icaros-usc/pyribs) | [docs.pyribs.org](https://docs.pyribs.org) | [pyribs.org/paper](https://pyribs.org/paper) |\n\n|                                                       PyPI                                                        |                                                               Conda                                                                |                                                                                                      CI/CD                                                                                                       |                                                                   Docs Status                                                                    |\n| :---------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------: |\n| [![PyPI](https://img.shields.io/pypi/v/ribs.svg?style=flat-square\u0026color=blue)](https://pypi.python.org/pypi/ribs) | [![Conda Recipe](https://img.shields.io/badge/recipe-pyribs-green.svg?style=flat-square)](https://anaconda.org/conda-forge/pyribs) | [![Tests](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Ficaros-usc%2Fpyribs%2Fbadge\u0026style=flat-square)](https://github.com/icaros-usc/pyribs/actions?query=workflow%3A\"Tests\") | [![Documentation Status](https://readthedocs.org/projects/ribs/badge/?version=stable\u0026style=flat-square)](https://readthedocs.org/projects/ribs/) |\n\nA _bare-bones_ Python library for quality diversity (QD) optimization. Pyribs\nimplements the highly modular _Rapid Illumination of Behavior Space (RIBS)_\nframework for QD optimization. Pyribs is also the official implementation of\nCovariance Matrix Adaptation MAP-Elites (CMA-ME), Covariance Matrix Adaptation\nMAP-Elites via a Gradient Arborescence (CMA-MEGA), Covariance Matrix Adaptation\nMAP-Annealing (CMA-MAE), and scalable variants of CMA-MAE.\n\n## Community\n\n**Join the\n[Pyribs Announcements mailing list](https://groups.google.com/g/pyribs/)** for\ninfrequent updates (less than 1/month) on the status of the project and new\nreleases.\n\nNeed some help? Want to ask if pyribs is right for your project? Have a question\nthat is not quite a bug and not quite a feature request?\n\n**Join the [community Discord](https://discord.gg/QxhcJSqZ8G)!**\n\n## Overview\n\n![Types of Optimization](readme_assets/optimization_types.png)\n\n[Quality diversity (QD) optimization](https://arxiv.org/abs/2012.04322) is a\nsubfield of optimization where solutions generated cover every point in a\n_measure_ space while simultaneously maximizing (or minimizing) a single\n_objective_. QD algorithms within the MAP-Elites family of QD algorithms produce\nheatmaps (archives) as output where each cell contains the best discovered\nrepresentative of a region in measure space.\n\n\u003e In the QD literature, measure function outputs have also been referred to as\n\u003e \"behavioral characteristics,\" \"behavior descriptors,\" \"feature descriptors,\"\n\u003e and \"outcomes.\"\n\nRecent years have seen the advent of many QD algorithms. To represent these and\nfuture algorithms, we have developed the highly modular RIBS framework. RIBS\ndivides a QD algorithm into three components:\n\n- An **archive**, which saves generated solutions within measure space.\n- One or more **emitters**, where each emitter is an algorithm which generates\n  new candidate solutions and responds to feedback about how the solutions were\n  evaluated and how they were inserted into the archive.\n- A **scheduler** that controls the interaction of the **archive** and\n  **emitters**. The **scheduler** also provides an interface for requesting new\n  candidate solutions and telling the algorithm how candidates performed.\n\nInterchanging these components enables a user to compose a large number of QD\nalgorithms.\n\nPyribs is an implementation of the RIBS framework designed to support a wide\nrange of users, from beginners entering the field to experienced researchers\nseeking to develop new algorithms. Pyribs achieves these goals by embodying\nthree principles:\n\n- **Simple:** Centered _only_ on components that are absolutely necessary to run\n  a QD algorithm, allowing users to combine the framework with other software\n  frameworks.\n- **Flexible:** Capable of representing a wide range of current and future QD\n  algorithms, allowing users to easily create or modify components.\n- **Accessible:** Easy to install and learn, particularly for beginners with\n  limited computational resources.\n\nIn contrast to other QD libraries, pyribs is \"bare-bones.\" For example, like\n[pycma](https://pypi.org/project/cma/), pyribs focuses on optimizing\nfixed-dimensional continuous domains. Focusing on this one commonly-occurring\nproblem allows us to optimize the library for performance as well as ease of\nuse.\n\nFollowing the RIBS framework (shown in the figure below), a standard algorithm\nin pyribs operates as follows:\n\n1. The user calls the `ask()` method on the scheduler. The scheduler requests\n   solutions from each emitter by calling the emitter's `ask()` method.\n2. The user evaluates solutions to obtain the objective and measure values.\n3. The user passes the evaluations to the scheduler's `tell()` method. The\n   scheduler adds the solutions into the archive and receives feedback. The\n   scheduler passes this feedback along with the evaluated solutions to each\n   emitter's `tell()` method, and each emitter then updates its internal state.\n\n![The RIBS framework](readme_assets/ribs.png)\n\n## Installation\n\nPyribs supports Python 3.9 and above. The vast majority of users can install\npyribs by running:\n\n```bash\n# If you are on Mac, you may need to use quotations, e.g., pip install \"ribs[visualize]\"\npip install ribs[visualize]\n```\n\nThe command above includes the `visualize` extra. If you will not be using the\npyribs visualization tools, you can install the base version of pyribs with:\n\n```bash\npip install ribs\n```\n\nFor more specific installation commands (e.g., installing from Conda or\ninstalling from source), visit the\n[installation selector](https://pyribs.org/#installation) on our website.\n\nTo test your installation, import pyribs and print the version with this\ncommand:\n\n```bash\npython -c \"import ribs; print(ribs.__version__)\"\n```\n\nYou should see a version number in the output.\n\n## Usage\n\nHere we show an example application of CMA-ME in pyribs. To initialize the\nalgorithm, we first create:\n\n- A 2D **GridArchive** where each dimension contains 20 cells across the range\n  [-1, 1].\n- Three instances of **EvolutionStrategyEmitter**, all of which start from the\n  search point **0** in 10-dimensional space and a Gaussian sampling\n  distribution with standard deviation 0.1.\n- A **Scheduler** that combines the archive and emitters together.\n\nAfter initializing the components, we optimize (pyribs maximizes) the negative\n10-D Sphere function for 1000 iterations. Users of\n[pycma](https://pypi.org/project/cma/) will be familiar with the ask-tell\ninterface (which pyribs adopted). First, the user must `ask` the scheduler for\nnew candidate solutions. After evaluating the solution, they `tell` the\nscheduler the objectives and measures of each candidate solution. The algorithm\nthen populates the archive and makes decisions on where to sample solutions\nnext. Our toy example uses the first two parameters of the search space as\nmeasures.\n\n```python\nimport numpy as np\n\nfrom ribs.archives import GridArchive\nfrom ribs.emitters import EvolutionStrategyEmitter\nfrom ribs.schedulers import Scheduler\n\narchive = GridArchive(\n    solution_dim=10,\n    dims=[20, 20],\n    ranges=[(-1, 1), (-1, 1)],\n)\nemitters = [\n    EvolutionStrategyEmitter(\n        archive,\n        x0=[0.0] * 10,\n        sigma0=0.1,\n        batch_size=36,\n    ) for _ in range(3)\n]\nscheduler = Scheduler(archive, emitters)\n\nfor itr in range(1000):\n    solutions = scheduler.ask()\n\n    # Optimize the 10D negative Sphere function.\n    objectives = -np.sum(np.square(solutions), axis=1)\n\n    # Measures: first 2 coordinates of each 10D solution.\n    measures = solutions[:, :2]\n\n    scheduler.tell(objectives, measures)\n```\n\nTo visualize this archive with Matplotlib, we then use the\n`grid_archive_heatmap` function from `ribs.visualize`.\n\n```python\nimport matplotlib.pyplot as plt\nfrom ribs.visualize import grid_archive_heatmap\n\ngrid_archive_heatmap(archive)\nplt.show()\n```\n\n![Sphere heatmap](readme_assets/sphere_heatmap.png)\n\n## Documentation\n\n**The documentation is available online [here](https://docs.pyribs.org/). We\nsuggest that new users start with the\n[tutorials](https://docs.pyribs.org/en/stable/tutorials.html).**\n\n## Supported Algorithms\n\nBy implementing the RIBS framework, pyribs makes it possible to implement a wide\nvariety of QD algorithms by interchanging the individual components. For\nexamples of algorithms that can be implemented in pyribs, see\n[this list](https://docs.pyribs.org/en/stable/supported-algorithms.html).\n\n## Paper and Citation\n\nTwo years after the initial release of pyribs, we released a paper that\nelaborates on the RIBS framework and the design decisions behind pyribs. For\nmore information on this paper, see [here](https://pyribs.org/paper). If you use\npyribs in your research, please consider citing this paper as follows. Also\nconsider citing any algorithms you use as shown\n[below](#citing-algorithms-in-pyribs).\n\n```\n@inproceedings{10.1145/3583131.3590374,\n  author = {Tjanaka, Bryon and Fontaine, Matthew C and Lee, David H and Zhang, Yulun and Balam, Nivedit Reddy and Dennler, Nathaniel and Garlanka, Sujay S and Klapsis, Nikitas Dimitri and Nikolaidis, Stefanos},\n  title = {Pyribs: A Bare-Bones Python Library for Quality Diversity Optimization},\n  year = {2023},\n  isbn = {9798400701191},\n  publisher = {Association for Computing Machinery},\n  address = {New York, NY, USA},\n  url = {https://doi.org/10.1145/3583131.3590374},\n  doi = {10.1145/3583131.3590374},\n  abstract = {Recent years have seen a rise in the popularity of quality diversity (QD) optimization, a branch of optimization that seeks to find a collection of diverse, high-performing solutions to a given problem. To grow further, we believe the QD community faces two challenges: developing a framework to represent the field's growing array of algorithms, and implementing that framework in software that supports a range of researchers and practitioners. To address these challenges, we have developed pyribs, a library built on a highly modular conceptual QD framework. By replacing components in the conceptual framework, and hence in pyribs, users can compose algorithms from across the QD literature; equally important, they can identify unexplored algorithm variations. Furthermore, pyribs makes this framework simple, flexible, and accessible, with a user-friendly API supported by extensive documentation and tutorials. This paper overviews the creation of pyribs, focusing on the conceptual framework that it implements and the design principles that have guided the library's development. Pyribs is available at https://pyribs.org},\n  booktitle = {Proceedings of the Genetic and Evolutionary Computation Conference},\n  pages = {220–229},\n  numpages = {10},\n  keywords = {framework, quality diversity, software library},\n  location = {Lisbon, Portugal},\n  series = {GECCO '23}\n}\n```\n\n## Contributors\n\npyribs is developed and maintained by the [ICAROS Lab](http://icaros.usc.edu) at\nUSC. For information on contributing to the repo, see\n[CONTRIBUTING](./CONTRIBUTING.md).\n\n- [Bryon Tjanaka](https://btjanaka.net)\n- [Matthew C. Fontaine](https://scholar.google.com/citations?user=RqSvzikAAAAJ)\n- [David H. Lee](https://github.com/itsdawei)\n- [Yulun Zhang](https://github.com/lunjohnzhang)\n- [Nivedit Reddy Balam](https://www.linkedin.com/in/nivedit-reddy)\n- [Nathan Dennler](https://ndennler.github.io/)\n- [Sujay S. Garlanka](https://sujaygarlanka.com)\n- Nikitas Klapsis\n- [Robby Costales](https://robbycostales.com)\n- [Sam Sommerer](https://github.com/sam-sommerer)\n- [Vincent Vu](https://vuvincent.com/)\n- [Yutai Zhou](https://github.com/yutaizhou)\n- [Varun Bhatt](https://github.com/vbhatt-cs)\n- [Henry Chen](https://henrychen4.github.io)\n- [Steve Vott](https://github.com/svott03)\n- [Li Ding](https://liding.info)\n- [N. Piatte](https://github.com/Ennpeh)\n- [Tom Gresavage](https://github.com/gresavage)\n- [Shihan Zhao](https://szhaovas.github.io)\n- [Sid Srikanth](https://sidsrikanth.com)\n- [Saeed Hedayatian](https://conflictednerd.github.io)\n- [Andrew Dai](https://daia99.github.io/)\n- [Stefanos Nikolaidis](https://stefanosnikolaidis.net)\n\nWe thank [Amy K. Hoover](http://amykhoover.com/) and\n[Julian Togelius](http://julian.togelius.com/) for their contributions deriving\nthe CMA-ME algorithm.\n\n## Users\n\npyribs users include:\n\n\u003c!-- Alphabetical order --\u003e\n\n- [Adam Gaier (Autodesk Research)](https://scholar.google.com/citations?user=GGyARB8AAAAJ)\n- [Adaptive \u0026 Intelligent Robotics Lab (Imperial College London)](https://www.imperial.ac.uk/adaptive-intelligent-robotics)\n- [Chair of Statistical Learning and Data Science (LMU Munich)](https://www.slds.stat.uni-muenchen.de/)\n- [Game Innovation Lab (New York University)](https://game.engineering.nyu.edu)\n- [Giovanni Iacca (University of Trento)](https://sites.google.com/site/giovanniiacca/)\n- [Google DeepMind (Iris)](https://github.com/google-deepmind/iris)\n- [HUAWEI Noah's Ark Lab](https://github.com/huawei-noah)\n- [ICAROS Lab (University of Southern California)](http://icaros.usc.edu/)\n- [Jacob Schrum (Southwestern University)](https://github.com/schrum2/PyribsForGameGAN)\n- [Lenia Research](https://lenia.world)\n- [Paul Kent (The University of Warwick)](https://warwick.ac.uk/fac/sci/mathsys/people/students/2018intake/kent/)\n- [Various](https://github.com/ganyariya/mario_pytorch)\n  [researchers](https://direct.mit.edu/isal/proceedings/isal/33/112256) at the\n  University of Tsukuba\n\n### Publications\n\nFor the list of publications that use pyribs, refer to our\n[Google Scholar entry](https://scholar.google.com/scholar?cites=1780392371068190395).\n\n### Software\n\nSee the\n[GitHub dependency graph](https://github.com/icaros-usc/pyribs/network/dependents)\nfor the public GitHub repositories which depend on pyribs.\n\n## Citing Algorithms in pyribs\n\nIf you use the following algorithms, please consider citing their relevant\npapers:\n\n- **CMA-ME:** [Fontaine 2020](https://dl.acm.org/doi/10.1145/3377930.3390232)\n  ```\n  @inproceedings{10.1145/3377930.3390232,\n    author = {Fontaine, Matthew C. and Togelius, Julian and Nikolaidis, Stefanos and Hoover, Amy K.},\n    title = {Covariance Matrix Adaptation for the Rapid Illumination of Behavior Space},\n    year = {2020},\n    isbn = {9781450371285},\n    publisher = {Association for Computing Machinery},\n    address = {New York, NY, USA},\n    url = {https://doi.org/10.1145/3377930.3390232},\n    doi = {10.1145/3377930.3390232},\n    booktitle = {Proceedings of the 2020 Genetic and Evolutionary Computation Conference},\n    pages = {94–102},\n    numpages = {9},\n    location = {Canc\\'{u}n, Mexico},\n    series = {GECCO '20}\n  }\n  ```\n- **CMA-MEGA:**\n  [Fontaine 2021](https://proceedings.neurips.cc/paper/2021/hash/532923f11ac97d3e7cb0130315b067dc-Abstract.html)\n  ```\n  @inproceedings{NEURIPS2021_532923f1,\n   author = {Fontaine, Matthew and Nikolaidis, Stefanos},\n   booktitle = {Advances in Neural Information Processing Systems},\n   editor = {M. Ranzato and A. Beygelzimer and Y. Dauphin and P.S. Liang and J. Wortman Vaughan},\n   pages = {10040--10052},\n   publisher = {Curran Associates, Inc.},\n   title = {Differentiable Quality Diversity},\n   url = {https://proceedings.neurips.cc/paper/2021/file/532923f11ac97d3e7cb0130315b067dc-Paper.pdf},\n   volume = {34},\n   year = {2021}\n  }\n  ```\n- **CMA-MAE:** [Fontaine 2022](https://arxiv.org/abs/2205.10752)\n  ```\n  @misc{cmamae,\n    doi = {10.48550/ARXIV.2205.10752},\n    url = {https://arxiv.org/abs/2205.10752},\n    author = {Fontaine, Matthew C. and Nikolaidis, Stefanos},\n    keywords = {Machine Learning (cs.LG), Artificial Intelligence (cs.AI), FOS: Computer and information sciences, FOS: Computer and information sciences},\n    title = {Covariance Matrix Adaptation MAP-Annealing},\n    publisher = {arXiv},\n    year = {2022},\n    copyright = {arXiv.org perpetual, non-exclusive license}\n  }\n  ```\n- **Scalable CMA-MAE:** [Tjanaka 2023](https://arxiv.org/abs/2210.02622)\n  ```\n  @ARTICLE{10243102,\n    author={Tjanaka, Bryon and Fontaine, Matthew C. and Lee, David H. and Kalkar, Aniruddha and Nikolaidis, Stefanos},\n    journal={IEEE Robotics and Automation Letters},\n    title={Training Diverse High-Dimensional Controllers by Scaling Covariance Matrix Adaptation MAP-Annealing},\n    year={2023},\n    volume={8},\n    number={10},\n    pages={6771-6778},\n    keywords={Covariance matrices;Training;Neural networks;Legged locomotion;Reinforcement learning;Evolutionary robotics;Evolutionary robotics;reinforcement learning},\n    doi={10.1109/LRA.2023.3313012}\n  }\n  ```\n\n## Additional QD Libraries\n\n- [QDax](https://github.com/adaptive-intelligent-robotics/QDax): Implementations\n  of QD algorithms in JAX. QDax is suitable if you want to run entire QD\n  algorithms on hardware accelerators in a matter of minutes, and it is\n  particularly useful if you need to interface with Brax environments.\n- [qdpy](https://gitlab.com/leo.cazenille/qdpy/): Python implementations of a\n  wide variety of QD algorithms.\n- [sferes](https://github.com/sferes2/sferes2): Contains C++ implementations of\n  QD algorithms; can also handle discrete domains.\n\n## License\n\npyribs is released under the\n[MIT License](https://github.com/icaros-usc/pyribs/blob/master/LICENSE).\n\n## Credits\n\nThe pyribs package was initially created with\n[Cookiecutter](https://github.com/audreyr/cookiecutter) and the\n[audreyr/cookiecutter-pypackage](https://github.com/audreyr/cookiecutter-pypackage)\nproject template.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficaros-usc%2Fpyribs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ficaros-usc%2Fpyribs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficaros-usc%2Fpyribs/lists"}