Discordia | Lista de correo | Gorjeo |
---|---|---|
Grupos de Google |
Sitio web | Fuente | Documentos | Papel |
---|---|---|---|
piribs.org | GitHub | docs.pyribs.org | pyribs.org/papel |
PyPI | conda | CI/CD | Estado de los documentos |
---|---|---|---|
Una biblioteca Python básica para la optimización de la diversidad de calidad (QD). Pyribs implementa el marco altamente modular de Iluminación Rápida del Espacio de Comportamiento (RIBS) para la optimización de QD. Pyribs también es la implementación oficial de Covariance Matrix Adaptation MAP-Elites (CMA-ME), Covariance Matrix Adaptation MAP-Elites mediante una arborescencia de gradiente (CMA-MEGA), Covariance Matrix Adaptation MAP-Annealing (CMA-MAE) y variantes escalables. de CMA-MAE.
Únase a la lista de correo de Anuncios de Pyribs para recibir actualizaciones poco frecuentes (menos de 1 por mes) sobre el estado del proyecto y los nuevos lanzamientos.
¿Necesitas ayuda? ¿Quiere preguntar si pyribs es adecuado para su proyecto? ¿Tiene alguna pregunta que no sea un error ni una solicitud de función?
¡Únete a la comunidad Discord!
La optimización de la diversidad de calidad (QD) es un subcampo de optimización donde las soluciones generadas cubren cada punto en un espacio de medida y al mismo tiempo maximizan (o minimizan) un único objetivo . Los algoritmos QD dentro de la familia MAP-Elites de algoritmos QD producen mapas de calor (archivos) como salida donde cada celda contiene el mejor representante descubierto de una región en el espacio de medición.
En la literatura sobre QD, los resultados de las funciones de medida también se denominan "características de comportamiento", "descriptores de comportamiento" o "descriptores de características".
En los últimos años se ha visto el desarrollo de una gran cantidad de algoritmos QD. Para representar estos y futuros algoritmos, hemos desarrollado el marco RIBS altamente modular. RIBS divide un algoritmo QD en tres componentes:
Al intercambiar estos componentes, un usuario puede componer una gran cantidad de algoritmos QD.
Pyribs es una implementación del marco RIBS diseñada para admitir una amplia gama de usuarios, desde principiantes que ingresan al campo hasta investigadores experimentados que buscan desarrollar nuevos algoritmos. Pyribs logra estos objetivos incorporando tres principios:
A diferencia de otras bibliotecas QD, pyribs es "básica". Por ejemplo, al igual que pycma, pyribs se centra únicamente en optimizar dominios continuos de dimensiones fijas. Centrarse en este problema común nos permite optimizar la biblioteca para el rendimiento y la facilidad de uso. Consulte la lista de bibliotecas QD adicionales a continuación si necesita manejar casos de uso adicionales.
Siguiendo el marco RIBS (que se muestra en la figura siguiente), un algoritmo estándar en pyribs funciona de la siguiente manera:
ask()
en el programador. El programador solicita soluciones de cada emisor llamando al método ask()
del emisor.tell()
del programador. El planificador agrega las soluciones al archivo y recibe comentarios. El programador pasa esta retroalimentación junto con las soluciones evaluadas al método tell()
de cada emisor, y luego cada emisor actualiza su estado interno. pyribs es compatible con Python 3.8 y superiores. La gran mayoría de usuarios pueden instalar pyribs ejecutando:
# If you are on Mac, you may need to use quotations, e.g., pip install "ribs[visualize]"
pip install ribs[visualize]
El comando anterior incluye el extra visualize
. Si no va a utilizar las herramientas de visualización de pyribs, puede instalar la versión base de pyribs con:
pip install ribs
Para comandos de instalación más específicos (por ejemplo, instalar desde Conda o instalar desde la fuente), visite el selector de instalación en nuestro sitio web.
Para probar su instalación, importe pyribs e imprima la versión con este comando:
python -c " import ribs; print(ribs.__version__) "
Debería ver un número de versión en el resultado.
Aquí mostramos un ejemplo de aplicación de CMA-ME en piribs. Para inicializar el algoritmo, primero creamos:
Después de inicializar los componentes, optimizamos (pyribs maximiza) la función de esfera 10-D negativa para 1000 iteraciones. Los usuarios de pycma estarán familiarizados con la interfaz preguntar-decir (qué pyribs adoptaron). Primero, el usuario debe ask
al planificador nuevas soluciones candidatas. Después de evaluar la solución, tell
al planificador los objetivos y medidas de cada solución candidata. Luego, el algoritmo llena el archivo y toma decisiones sobre dónde probar las soluciones a continuación. Nuestro ejemplo de juguete utiliza los dos primeros parámetros del espacio de búsqueda como medidas.
import numpy as np
from ribs . archives import GridArchive
from ribs . emitters import EvolutionStrategyEmitter
from ribs . schedulers import Scheduler
archive = GridArchive (
solution_dim = 10 ,
dims = [ 20 , 20 ],
ranges = [( - 1 , 1 ), ( - 1 , 1 )],
)
emitters = [
EvolutionStrategyEmitter (
archive ,
x0 = [ 0.0 ] * 10 ,
sigma0 = 0.1 ,
) for _ in range ( 3 )
]
scheduler = Scheduler ( archive , emitters )
for itr in range ( 1000 ):
solutions = scheduler . ask ()
# Optimize the 10D negative Sphere function.
objective_batch = - np . sum ( np . square ( solutions ), axis = 1 )
# Measures: first 2 coordinates of each 10D solution.
measures_batch = solutions [:, : 2 ]
scheduler . tell ( objective_batch , measures_batch )
Para visualizar este archivo con Matplotlib, usamos la función grid_archive_heatmap
de ribs.visualize
.
import matplotlib . pyplot as plt
from ribs . visualize import grid_archive_heatmap
grid_archive_heatmap ( archive )
plt . show ()
La documentación está disponible en línea aquí. Sugerimos que los nuevos usuarios comiencen con los tutoriales.
Dos años después del lanzamiento inicial de pyribs, publicamos un documento que detalla el marco RIBS y las decisiones de diseño detrás de pyribs. Para obtener más información sobre este documento, consulte aquí. Si utiliza piribs en su investigación, considere citar este artículo de la siguiente manera. También considere citar cualquier algoritmo que utilice como se muestra a continuación.
@inproceedings{10.1145/3583131.3590374,
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},
title = {Pyribs: A Bare-Bones Python Library for Quality Diversity Optimization},
year = {2023},
isbn = {9798400701191},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3583131.3590374},
doi = {10.1145/3583131.3590374},
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},
booktitle = {Proceedings of the Genetic and Evolutionary Computation Conference},
pages = {220–229},
numpages = {10},
keywords = {framework, quality diversity, software library},
location = {Lisbon, Portugal},
series = {GECCO '23}
}
pyribs es desarrollado y mantenido por el laboratorio ICAROS de la USC. Para obtener información sobre cómo contribuir al repositorio, consulte CONTRIBUCIÓN.
Agradecemos a Amy K. Hoover y Julian Togelius por sus contribuciones para derivar el algoritmo CMA-ME.
Los usuarios de piribs incluyen:
Para obtener la lista de publicaciones que utilizan pyribs, consulte nuestra entrada de Google Scholar.
Consulte el gráfico de dependencia de GitHub para conocer los repositorios públicos de GitHub que dependen de pyribs.
Si utiliza los siguientes algoritmos, considere citar sus artículos relevantes:
@inproceedings{10.1145/3377930.3390232,
author = {Fontaine, Matthew C. and Togelius, Julian and Nikolaidis, Stefanos and Hoover, Amy K.},
title = {Covariance Matrix Adaptation for the Rapid Illumination of Behavior Space},
year = {2020},
isbn = {9781450371285},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3377930.3390232},
doi = {10.1145/3377930.3390232},
booktitle = {Proceedings of the 2020 Genetic and Evolutionary Computation Conference},
pages = {94–102},
numpages = {9},
location = {Canc'{u}n, Mexico},
series = {GECCO '20}
}
@inproceedings{NEURIPS2021_532923f1,
author = {Fontaine, Matthew and Nikolaidis, Stefanos},
booktitle = {Advances in Neural Information Processing Systems},
editor = {M. Ranzato and A. Beygelzimer and Y. Dauphin and P.S. Liang and J. Wortman Vaughan},
pages = {10040--10052},
publisher = {Curran Associates, Inc.},
title = {Differentiable Quality Diversity},
url = {https://proceedings.neurips.cc/paper/2021/file/532923f11ac97d3e7cb0130315b067dc-Paper.pdf},
volume = {34},
year = {2021}
}
@misc{cmamae,
doi = {10.48550/ARXIV.2205.10752},
url = {https://arxiv.org/abs/2205.10752},
author = {Fontaine, Matthew C. and Nikolaidis, Stefanos},
keywords = {Machine Learning (cs.LG), Artificial Intelligence (cs.AI), FOS: Computer and information sciences, FOS: Computer and information sciences},
title = {Covariance Matrix Adaptation MAP-Annealing},
publisher = {arXiv},
year = {2022},
copyright = {arXiv.org perpetual, non-exclusive license}
}
@ARTICLE{10243102,
author={Tjanaka, Bryon and Fontaine, Matthew C. and Lee, David H. and Kalkar, Aniruddha and Nikolaidis, Stefanos},
journal={IEEE Robotics and Automation Letters},
title={Training Diverse High-Dimensional Controllers by Scaling Covariance Matrix Adaptation MAP-Annealing},
year={2023},
volume={8},
number={10},
pages={6771-6778},
keywords={Covariance matrices;Training;Neural networks;Legged locomotion;Reinforcement learning;Evolutionary robotics;Evolutionary robotics;reinforcement learning},
doi={10.1109/LRA.2023.3313012}
}
pyribs se publica bajo la licencia MIT.
El paquete pyribs se creó inicialmente con Cookiecutter y la plantilla de proyecto audreyr/cookiecutter-pypackage.