EvoX Logo

PSO Result      RVEA Result      HalfCheetah 200

arXiv Documentation PyPI Version Python Version Discord Server QQ Group

English README ไธญๆ–‡ README

---

๐ŸŒŸDistributed GPU-accelerated Framework for Scalable Evolutionary Computation๐ŸŒŸ

--- ## ๐Ÿ”ฅ News - [2026-09-09] Released **EvoX 1.4.0** - ๐Ÿš€ A maintenance release with various fixes and improvements! [[Release Notes](https://github.com/EMI-Group/evox/releases/tag/v1.4.0)] ## Table of Contents 1. [Overview](#Overview) 2. [Key Features](#key-features) 3. [Main Contents](#main-contents) 4. [Installation Guide](#installation-guide) 5. [Quick Start](#quick-start) 6. [Sister Projects](#sister-projects) 7. [Community & Support](#community--support) ## Overview EvoX is a distributed GPU-accelerated evolutionary computation framework compatible with **PyTorch**. With a user-friendly programming model, it offers a comprehensive suite of **140+ Evolutionary Algorithms (EAs)** and **240+ Benchmark Problems/Environments** across the EvoX ecosystem โ€” **30+ algorithms** and **30+ benchmark problems/environments** built into this package, plus its sister libraries. For more details, please refer to our [Paper](https://arxiv.org/abs/2301.12457) and [Documentation](https://evox.readthedocs.io/en/latest/index.html) / [ๆ–‡ๆกฃ](https://evox.readthedocs.io/zh_CN/latest/index.html). > [!NOTE] > Users of the previous **JAX-based version** can access it on the **v0.9.0 branch**. ## Key Features ### ๐Ÿ’ป High-Performance Computing #### ๐Ÿš€ Ultra Performance - Supports acceleration on heterogeneous hardware, including both **CPUs** and **GPUs**, achieving over **100x speedups**. - Integrates **distributed workflows** that scale seamlessly across multiple nodes or devices. #### ๐ŸŒ All-in-One Solution - Includes **30+ algorithms** for a wide range of use cases, fully supporting **single- and multi-objective optimization**, with **140+ algorithms** available across the EvoX ecosystem. - Provides a **hierarchical architecture** for complex tasks such as **meta learning**, **hyperparameter optimization**, and **neuroevolution**. #### ๐Ÿ› ๏ธ Easy-to-Use Design - Fully compatible with **PyTorch** and its ecosystem, simplifying algorithmic development with a **tailored programming model**. - Ensures effortless setup with **one-click installation** for Windows users. ### ๐Ÿ“Š Versatile Benchmarking #### ๐Ÿ“š Extensive Benchmark Suites - Features **30+ benchmark problems** spanning single-objective optimization, multi-objective optimization, and real-world engineering challenges, with **240+ benchmark problems/environments** across the EvoX ecosystem. #### ๐ŸŽฎ Support for Physics Engines - Integrates seamlessly with physics engines like **Brax** and other popular frameworks for reinforcement learning. #### โš™๏ธ Customizable Problems - Provides an **encapsulated module** for defining and evaluating custom problems tailored to user needs, with seamless integration into real-world applications and datasets. ### ๐Ÿ“ˆ Flexible Visualization #### ๐Ÿ” Ready-to-Use Tools - Offers a comprehensive set of **visualization tools** for analyzing evolutionary processes across various tasks. #### ๐Ÿ› ๏ธ Customizable Modules - Enables users to integrate their own **visualization code**, allowing for tailored and flexible visualizations. #### ๐Ÿ“‚ Real-Time Data Streaming - Leverages the tailored **.exv format** to simplify and accelerate real-time data streaming. ## Main Contents
Category Subcategory Notable Algorithms / Benchmark Problems
Single-objective Optimization 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, ...
Multi-objective Optimization 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, ...
Benchmark Problems / Environments Numerical DTLZ, LSMOP, MaF, ZDT, CEC'22, ...
Neuroevolution / RL Brax, TorchVision Dataset, ...
For a comprehensive list and detailed descriptions of all algorithms, please check the [Algorithms API](https://evox.readthedocs.io/en/latest/apidocs/evox/evox.algorithms.html), and for benchmark problems/environments, refer to the [Problems API](https://evox.readthedocs.io/en/latest/apidocs/evox/evox.problems.html). ## Installation Guide Install `evox` with default feature sets via `pip`: ```bash pip install "evox[default]" ``` Install the latest version from the source code for testing or development: ```bash git clone https://github.com/EMI-Group/evox.git cd evox pip install -e . ``` > [!TIP] > Windows users can use the [win-install.bat](https://evox.readthedocs.io/en/latest/_downloads/796714545d73f0b52e921d885369323d/win-install.bat) script for installation. ## Quick Start Here are some examples to get you started with EvoX: ### Single-objective Optimization Solve the Ackley problem using the PSO algorithm: ```python import torch from evox.algorithms import PSO from evox.problems.numerical import Ackley from evox.workflows import StdWorkflow, EvalMonitor # torch.set_default_device("cuda") # Uncomment this line if you want to use GPU by default algorithm = PSO(pop_size=100, lb=-32 * torch.ones(10), ub=32 * torch.ones(10)) problem = Ackley() monitor = EvalMonitor() workflow = StdWorkflow(algorithm, problem, monitor) workflow.init_step() for i in range(100): workflow.step() monitor.plot() # or monitor.plot().show() if you are using headless mode ```
Example Output
### Multi-objective Optimization Solve the DTLZ2 problem using the RVEA algorithm: ```python import torch from evox.algorithms import RVEA from evox.problems.numerical import DTLZ2 from evox.workflows import StdWorkflow, EvalMonitor # torch.set_default_device("cuda") # Uncomment this line if you want to use GPU by default prob = DTLZ2(m=2) pf = prob.pf() algo = RVEA( pop_size=100, n_objs=2, lb=-torch.zeros(12), ub=torch.ones(12) ) monitor = EvalMonitor() workflow = StdWorkflow(algo, prob, monitor) workflow.init_step() for i in range(100): workflow.step() monitor.plot() # or monitor.plot().show() if you are using headless mode ```
Example Output
### Neuroevolution Evolving a simple MLP model to solve the Brax HalfCheetah environment: ```python import torch import torch.nn as nn from evox.algorithms import PSO from evox.problems.neuroevolution.brax import BraxProblem from evox.utils import ParamsAndVector from evox.workflows import EvalMonitor, StdWorkflow # torch.set_default_device("cuda") # Uncomment this line if you want to use GPU by default class SimpleMLP(nn.Module): def __init__(self): super().__init__() # observation space is 17-dim, action space is 6-dim. self.features = nn.Sequential(nn.Linear(17, 8), nn.Tanh(), nn.Linear(8, 6)) def forward(self, x): return torch.tanh(self.features(x)) # Initialize the MLP model model = SimpleMLP() adapter = ParamsAndVector(dummy_model=model) # Set the population size POP_SIZE = 1024 # Get the bound of the PSO algorithm model_params = dict(model.named_parameters()) pop_center = adapter.to_vector(model_params) lb = torch.full_like(pop_center, -5) ub = torch.full_like(pop_center, 5) # Initialize the PSO, and you can also use any other algorithms algorithm = PSO(pop_size=POP_SIZE, lb=lb, ub=ub) # Initialize the Brax problem problem = BraxProblem( policy=model, env_name="halfcheetah", max_episode_length=1000, num_episodes=3, pop_size=POP_SIZE, ) # set an monitor, and it can record the top 3 best fitnesses monitor = EvalMonitor(topk=3) # Initiate an workflow workflow = StdWorkflow( algorithm=algorithm, problem=problem, monitor=monitor, opt_direction="max", solution_transform=adapter, ) workflow.init_step() for i in range(50): workflow.step() monitor.plot() # or monitor.plot().show() if you are using headless mode ```
Example Output
> [!NOTE] > For comprehensive guidance, please visit our [Documentation](https://evox.readthedocs.io/en/latest/), where you'll find detailed installation steps, tutorials, practical examples, and complete API references. ## Sister Projects - **EvoRL**: GPU-accelerated framework for Evolutionary Reinforcement Learning. Check out [here](https://github.com/EMI-Group/evorl). - **EvoGP**: GPU-accelerated framework for Genetic Programming. Check out [here](https://github.com/EMI-Group/evogp). - **EvoMO**: GPU-accelerated library for Evolutionary Multiobjective Optimization (EMO). Check out [here](https://github.com/EMI-Group/evomo). - **TensorNEAT**: Tensorized NeuroEvolution of Augmenting Topologies (NEAT) for GPU Acceleration. Check out [here](https://github.com/EMI-Group/tensorneat). - **TensorRVEA**: Tensorized Reference Vector Guided Evolutionary Algorithm (RVEA) for GPU Acceleration. Check out [here](https://github.com/EMI-Group/tensorrvea). - **TensorACO**: Tensorized Ant Colony Optimization (ACO) for GPU Acceleration. Check out [here](https://github.com/EMI-Group/tensoraco). - **EvoXBench**: A real-world benchmark platform for solving various optimization problems, such as Neural Architecture Search (NAS). It operates without the need for GPUs/PyTorch/TensorFlow and supports multiple programming environments. Check out [here](https://github.com/EMI-Group/evoxbench). Together with EvoX, these and the other EvoX-related libraries published by the [EMI-Group](https://github.com/EMI-Group) form an ecosystem providing **140+ algorithms** and **240+ benchmark problems/environments**. Stay tuned - more exciting developments are on the way! โœจ ## Community & Support - Join discussions on the [GitHub Discussion Board](https://github.com/EMI-Group/evox/discussions). - Connect via [Discord](https://discord.gg/Vbtgcpy7G4) or QQ group (ID: 297969717). - Visit [Offical Website](https://evox.group/). ## Citing EvoX If EvoX contributes to your research, please cite it: ```bibtex @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} } ``` ## License Notice EvoX is licensed under the **GNU General Public License v3.0 (GPL-3.0)**. For full terms and conditions, please refer to the [LICENSE](./LICENSE) file.