랭킹으로 돌아가기

EMI-Group/evox

Python

Distributed GPU-Accelerated Framework for Evolutionary Computation. Comprehensive Library of Evolutionary Algorithms & Benchmark Problems.

evolutionary-algorithmsneuroevolutiongpu-accelerationraybraxderivative-free-optimizationevolutionary-optimizationevolutionary-reinforcement-leariniggradient-free-optimizationjaxmetaheuristicsmulti-objective-optimization
스타 성장
스타
2.5k
포크
347
주간 성장
이슈
2
1k2k
2023년 1월2024년 3월2025년 5월2026년 7월
아티팩트PyPIpip install evox
README

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🌟


Table of Contents

  1. Overview
  2. Key Features
  3. Main Contents
  4. Installation Guide
  5. Quick Start
  6. Sister Projects
  7. 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 50+ Evolutionary Algorithms (EAs) and a wide range of 100+ Benchmark Problems/Environments. For more details, please refer to our Paper and Documentation / 文档.

[!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 50+ algorithms for a wide range of use cases, fully supporting single- and multi-objective optimization.
  • 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 100+ benchmark problems spanning single-objective optimization, multi-objective optimization, and real-world engineering challenges.

🎮 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 .

[!TIP] Windows users can use the 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:

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

[!NOTE] For comprehensive guidance, please visit our Documentation, 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.
  • 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.
  • 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.

Stay tuned - more exciting developments are on the way! ✨

Community & Support

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.

관련 저장소
algorithmicsuperintelligence/openevolve

Open-source implementation of AlphaEvolve

PythonPyPIApache License 2.0alphacodecoding-agent
6.8k1.1k
rh12503/triangula

Generate high-quality triangulated and polygonal art from images.

GoGo ModulesMIT Licensetriangulatriangles
3.9k120
astroautomata/PySR

High-Performance Symbolic Regression in Python and Julia

PythonPyPIApache License 2.0symbolic-regressionmachine-learning
ai.damtp.cam.ac.uk/pysr
3.6k339
MilesCranmer/PySR

High-Performance Symbolic Regression in Python and Julia

PythonPyPIApache License 2.0symbolic-regressionmachine-learning
ai.damtp.cam.ac.uk/pysr
2.7k232
ahmedfgad/GeneticAlgorithmPython

Source code of PyGAD, a Python 3 library for building the genetic algorithm and training machine learning algorithms (Keras & PyTorch).

PythonPyPIBSD 3-Clause "New" or "Revised" Licensepythongenetic-algorithm
pygad.readthedocs.io
2.2k499
BIMK/PlatEMO

Evolutionary multi-objective optimization platform

MATLABevolutionary-algorithmsmulti-objective-optimization
2.2k529
geatpy-dev/geatpy

Evolutionary algorithm toolbox and framework with high performance for Python

PythonPyPIGNU Lesser General Public License v3.0geatpyga
geatpy.com
2.1k729
google/vizier

Python-based research interface for blackbox and hyperparameter optimization, based on the internal Google Vizier Service.

PythonPyPIApache License 2.0vizierhyperparameter-optimization
oss-vizier.readthedocs.io
1.7k112
ArztSamuel/Applying_EANNs

A 2D Unity simulation in which cars learn to navigate themselves through different courses. The cars are steered by a feedforward neural network. The weights of the network are trained using a modified genetic algorithm.

ASPMIT Licenseartificial-neural-networksneural-networks
1.6k367
evo-hq/evo

turns your codebase into an autoresearch loop — discovers what to measure, instruments the benchmark, then runs tree search with parallel subagents.

PythonPyPIApache License 2.0agent-skillsautonomous-agents
evo-hq.com
1.3k100
nnaisense/evotorch

Advanced evolutionary computation library built directly on top of PyTorch, created at NNAISENSE.

PythonPyPIApache License 2.0artificial-intelligenceevolutionary-computation
evotorch.ai
1.1k79
shyamsaktawat/OpenAlpha_Evolve

OpenAlpha_Evolve is an open-source Python framework inspired by the groundbreaking research on autonomous coding agents like DeepMind's AlphaEvolve.

PythonPyPIMIT Licensealphafoldevolutionary-algorithms
1k154