evox
Project description
🌟Distributed GPU-accelerated Framework for Scalable Evolutionary Computation🌟
Building upon JAX and Ray, EvoX offers a comprehensive suite of 50+ Evolutionary Algorithms (EAs) and a wide range of 100+ Benchmark Problems/Environments, all benefiting from distributed GPU-acceleration. It facilitates efficient exploration of complex optimization landscapes, effective tackling of black-box optimization challenges, and deep dives into neuroevolution with Brax. With a foundation in functional programming and hierarchical state management, EvoX offers a user-friendly and modular experience. For more details, please refer to our Paper and Documentation / 文档.
Key Features
-
🚀 Fast Performance:
- Experience GPU-Accelerated optimization, achieving speeds over 100x faster than traditional methods.
- Leverage the power of Distributed Workflows for even more rapid optimization.
-
🌐 Versatile Optimization Suite:
- Cater to all your needs with both Single-objective and Multi-objective optimization capabilities.
- Dive into a comprehensive library of Benchmark Problems/Environments, ensuring robust testing and evaluation.
- Explore the frontier of AI with extensive tools for Neuroevolution/RL tasks.
-
🛠️ Designed for Simplicity:
- Embrace the elegance of Functional Programming, simplifying complex algorithmic compositions.
- Benefit from Hierarchical State Management, ensuring modular and clean programming.
Main Contents
Evolutionary Algorithms for Single-objective Optimization
Category | Algorithms |
---|---|
Differential Evolution | CoDE, JaDE, SaDE, SHADE, IMODE, ... |
Evolution Strategy | CMA-ES, PGPE, OpenES, CR-FM-NES, xNES, ... |
Particle Swarm Optimization | FIPS, CSO, CPSO, CLPSO, SL-PSO, ... |
Evolutionary Algorithms for Multi-objective Optimization
Category | Algorithms |
---|---|
Dominance-based | NSGA-II, NSGA-III, SPEA2, BiGE, KnEA, ... |
Decomposition-based | MOEA/D, RVEA, t-DEA, MOEAD-M2M, EAG-MOEAD, ... |
Indicator-based | IBEA, HypE, SRA, MaOEA-IGD, AR-MOEA, ... |
For a comprehensive list and further details of all algorithms, please check the API Documentation.
Benchmark Problems/Environments
Category | Problems/Environments |
---|---|
Numerical | DTLZ, LSMOP, MaF, ZDT, CEC'22, ... |
Neuroevolution/RL | Brax, Gym, TorchVision Dataset, ... |
For a comprehensive list and further details of all benchmark problems/environments, please check the API Documentation.
Setting Up EvoX
Install evox
effortlessly via pip
:
pip install evox
Note: To setup EvoX with GPU acceleration capabilities, you will need to setup JAX first. For detials, please refer to our comprehensive Installation Guide. Additionally, you can watch our instructional videos:
🎥 EvoX Installation Guide (Linux)
🎥 EvoX Installation Guide (Windows)
Quick Start
Kickstart your journey with EvoX in just a few simple steps:
- Import necessary modules:
import evox
from evox import algorithms, problems, workflows
- Configure an algorithm and define a problem:
pso = algorithms.PSO(
lb=jnp.full(shape=(2,), fill_value=-32),
ub=jnp.full(shape=(2,), fill_value=32),
pop_size=100,
)
ackley = problems.numerical.Ackley()
- Compose and initialize the workflow:
workflow = workflows.StdWorkflow(pso, ackley)
key = jax.random.PRNGKey(42)
state = workflow.init(key)
- Run the workflow:
# Execute the workflow for 100 iterations
for i in range(100):
state = workflow.step(state)
Use-cases and Applications
Try out ready-to-play examples in your browser with Colab:
Example | Link |
---|---|
Basic Usage | |
Numerical Optimization | |
Neuroevolution with Gym | |
Neuroevolution with Brax | |
Custom Algorithm/Problem |
For more use-cases and applications, pleae check out Example Directory.
Community & Support
- Engage in discussions and share your experiences on GitHub Discussion Board.
- Join our QQ group (ID: 297969717).
- Help with the translation of the documentation on Weblate. We currently support translations in two languages, English / 中文.
- Official Website: https://evox.group/
Sister Projects
- TensorNEAT: Tensorized NeuroEvolution of Augmenting Topologies (NEAT) for GPU Acceleration. Check out here.
- TensorRVEA: Tensorized Reference Vector Guided Evolutionary Algorithm (RVEA) for GPU Acceleration. Check out here.
- TensorACO: Tensorized Ant Colony Optimization (ACO) for GPU Acceleration. Check out here.
- EvoXBench: A benchmark platform for Neural Architecutre Search (NAS) without the requirement of GPUs/PyTorch/Tensorflow, supporting various programming languages such as Java, Matlab, Python, ect. Check out here.
Citing EvoX
If you use EvoX in your research and want to cite it in your work, please use:
@article{evox,
title = {{EvoX}: {A} {Distributed} {GPU}-accelerated {Framework} for {Scalable} {Evolutionary} {Computation}},
author = {Huang, Beichen and Cheng, Ran and Li, Zhuozhao and Jin, Yaochu and Tan, Kay Chen},
journal = {IEEE Transactions on Evolutionary Computation},
year = 2024,
doi = {10.1109/TEVC.2024.3388550}
}
Star History
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file evox-0.9.0rc2.tar.gz
.
File metadata
- Download URL: evox-0.9.0rc2.tar.gz
- Upload date:
- Size: 321.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bb499890543b0e72164f3787f89310bf20b52c4d4074a259f562d5ef3052d93d |
|
MD5 | 096228934d14da4185da7c1abe599a90 |
|
BLAKE2b-256 | 076c2611637be66bb3e48739b3da4cafbfcf87b756c448544641ea61a436a51f |
File details
Details for the file evox-0.9.0rc2-py3-none-any.whl
.
File metadata
- Download URL: evox-0.9.0rc2-py3-none-any.whl
- Upload date:
- Size: 393.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa69ad2a2fb532ec5ac63fec9dc4af7a89314c39511d10adac62fb8df19fda22 |
|
MD5 | 36bbc9b0b448594f1fca6dcd7ce5b857 |
|
BLAKE2b-256 | a7d3981b68a6e7d1f325743a10d1093d1da5128b8f6385ba3c63725e5294b62e |