🌟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]
Table of Contents
- Overview
- Key Features
- Main Contents
- Installation Guide
- Quick Start
- Sister Projects
- 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 and Documentation / 文档.
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, and for benchmark problems/environments, refer to the Problems API.
Installation Guide
Install evox with default feature sets via pip:
pip install "evox[default]"
Install the latest version from the source code for testing or development:
git clone https://github.com/EMI-Group/evox.git
cd evox
pip install -e .
Quick Start
Here are some examples to get you started with EvoX:
Single-objective Optimization
Solve the Ackley problem using the PSO algorithm:
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:
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:
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
Sister Projects
- EvoRL: GPU-accelerated framework for Evolutionary Reinforcement Learning. Check out here.
- EvoGP: GPU-accelerated framework for Genetic Programming. Check out here.
- EvoMO: GPU-accelerated library for Evolutionary Multiobjective Optimization (EMO). Check out here.
- 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 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.
Together with EvoX, these and the other EvoX-related libraries published by the 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.
- Connect via Discord or QQ group (ID: 297969717).
- Visit Offical Website.
Citing EvoX
If EvoX contributes to your research, please cite it:
@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 file.
Metadata
Release files for evox 1.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| evox-1.4.1.tar.gz | 320.5 kB | With provenance | Details for evox-1.4.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| evox-1.4.1-py3-none-any.whl | Python 3 | none | any | Details for evox-1.4.1-py3-none-any.whl |
Total release size: 707.5 kB
Release files / evox-1.4.1.tar.gz
| Download URL | evox-1.4.1.tar.gz |
|---|---|
| Size | 320.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
010484dc99b51cac9d19eedaf7267447a02f522cb3546b2f0b2dd8fa018131cd
|
|
BLAKE2b-256 checksum How to use checksums |
b7ba80fe061d68b029313c76b70f06e473947cb926389823e3dc5eab26ccc557
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logRelease files / evox-1.4.1-py3-none-any.whl
| Download URL | evox-1.4.1-py3-none-any.whl |
|---|---|
| Size | 387.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1dbc5026e1cbde2ae7eb8764c9ffecb0595313616a254c94dc30af57d63b713e
|
|
BLAKE2b-256 checksum How to use checksums |
fe0b43bbb8183d78d9921b7579eeb043e4f02265e8c8fec5b5d5fab80dc4304a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logSecurity for evox 1.4.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for evox-1.4.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.