- [2025-03-01] 发布 EvoX 1.1.0 - 全面支持
torch.compile
(TorchDynamo) [更新内容] - [2025-02-03] 发布 EvoRL:基于 JAX 的 GPU 加速 进化强化学习 框架![论文] [代码]
- [2025-01-30] 发布 EvoGP:基于 PyTorch & CUDA 的 GPU 加速 遗传编程 框架![论文] [代码]
- [2025-01-14] 发布 EvoX 1.0.0,全面兼容 PyTorch,全面接入
torch.compile
!使用 JAX 版本 的用户可在 v0.9.0 分支 获取。
EvoX 是一个分布式 GPU 加速的进化计算框架,兼容 PyTorch。提供易用的编程模型,包含 50+ 进化算法 (EAs) 和 100+ 基准问题/环境。详情请参阅我们的 论文 及 文档。
Note
需要使用 JAX 版本 的用户请安装 0.9.0或更早版本。
- 支持在CPU 和 GPU 等异构硬件上加速运行,实现100 倍以上加速。
- 集成分布式工作流,可无缝扩展至多个节点或设备。
- 内置50+ 种算法,全面支持单目标和多目标优化。
- 提供分层架构,适用于元学习、超参数优化和神经进化等复杂任务。
- 完全兼容 PyTorch 及其生态系统,借助定制化编程模型简化算法开发。
- 具备一键安装功能,让 Windows 用户轻松上手。
- 提供100+ 基准测试问题,涵盖单目标优化、多目标优化及现实工程挑战。
- 可无缝集成 Brax 等物理引擎,以及其他主流强化学习框架。
- 提供封装模块,支持用户自定义问题,并可无缝集成到现实应用和数据集。
- 内置多种可视化工具,支持不同任务的进化过程分析。
- 允许用户集成自定义可视化代码,提供灵活的展示方式。
- 采用定制的 .exv 格式,简化并加速实时数据流处理。
类别 | 子类别 | 主要算法 / 基准问题 |
---|---|---|
单目标优化 | 差分演化 | CoDE, JaDE, SaDE, SHADE, IMODE, ... |
演化策略 | CMA-ES, PGPE, OpenES, CR-FM-NES, xNES, ... | |
粒子群优化 | FIPS, CSO, CPSO, CLPSO, SL-PSO, ... | |
多目标优化 | 基于支配关系 | NSGA-II, NSGA-III, SPEA2, BiGE, KnEA, ... |
基于分解策略 | MOEA/D, RVEA, t-DEA, MOEAD-M2M, EAG-MOEAD, ... | |
基于指标 | IBEA, HypE, SRA, MaOEA-IGD, AR-MOEA, ... | |
基准问题 / 评测环境 | 数值优化问题 | DTLZ, LSMOP, MaF, ZDT, CEC'22, ... |
神经演化 / 强化学习 | Brax, TorchVision 数据集, ... |
如需完整的算法列表及详细描述,请访问 算法 API,基准问题及环境请参考 问题 API。
使用 pip
轻松安装 evox
:
pip install evox
从源代码安装最新版本以进行测试或开发:
git clone https://github.com/EMI-Group/evox.git
cd evox
pip install -e .
Tip
Windows 用户可使用 win-install.bat 脚本安装。
以下是一些示例,帮助你快速上手 EvoX:
使用 PSO 算法求解 Ackley 问题:
import torch
from evox.algorithms import PSO
from evox.problems.numerical import Ackley
from evox.workflows import StdWorkflow, EvalMonitor
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()
样例输出

使用 RVEA 算法求解 DTLZ2 问题:
import torch
from evox.algorithms import RVEA
from evox.metrics import igd
from evox.problems.numerical import DTLZ2
from evox.workflows import StdWorkflow, EvalMonitor
prob = DTLZ2(m=3)
pf = prob.pf()
algo = RVEA(
pop_size=100,
n_objs=3,
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()
样例输出

进化一个简单的 MLP 模型,求解 HalfCheetah 环境:
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
class SimpleMLP(nn.Module):
def __init__(self):
super().__init__()
# 观察空间维度为 17,动作空间维度为 6。
self.features = nn.Sequential(nn.Linear(17, 8), nn.Tanh(), nn.Linear(8, 6))
def forward(self, x):
return torch.tanh(self.features(x))
# 初始化 MLP 模型
model = SimpleMLP()
adapter = ParamsAndVector(dummy_model=model)
# 设置种群大小
POP_SIZE = 1024
# 获取 PSO 算法的边界
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)
# 初始化 PSO 算法,你也可以使用其他算法
algorithm = PSO(pop_size=POP_SIZE, lb=lb, ub=ub, device=device)
# 初始化 Brax 问题
problem = BraxProblem(
policy=model,
env_name="halfcheetah",
max_episode_length=1000,
num_episodes=3,
pop_size=POP_SIZE,
device=device,
)
# 设置监视器,可记录最佳 3 个适应度值
monitor = EvalMonitor(topk=3, device=device)
# 初始化工作流
workflow = StdWorkflow(
algorithm=algorithm,
problem=problem,
monitor=monitor,
opt_direction="max",
solution_transform=adapter,
device=device,
)
workflow.init_step()
for i in range(50):
workflow.step()
样例输出

Note
如需完整指南,请访问我们的文档,其中包含详细的安装步骤、教程、实践示例以及完整的API说明。
- EvoRL: 基于 GPU 加速的进化强化学习框架。查看详情:点击这里。
- EvoGP: 基于 GPU 加速的遗传编程框架。查看详情:点击这里。
- TensorNEAT: 用于 GPU 加速的张量化 NEAT(NeuroEvolution of Augmenting Topologies)框架。查看详情:点击这里。
- TensorRVEA: 用于 GPU 加速的张量化参考向量引导进化算法(RVEA)框架。查看详情:点击这里。
- TensorACO: 用于 GPU 加速的张量化蚁群优化算法(ACO)框架。查看详情:点击这里。
- EvoXBench: 一个用于解决各种优化问题(如神经架构搜索 NAS)的真实世界基准测试平台。该平台无需 GPU/PyTorch/TensorFlow 运行,并支持多种编程环境。查看详情:点击这里。
敬请期待——更多精彩内容即将推出!✨
- 在 GitHub 讨论区 参与讨论。
- 通过 Discord 或 QQ 群(ID: 297969717)联系交流。
- 访问 EvoX官网。
如果 EvoX 对您的研究有帮助,请引用:
@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}
}
EvoX 遵循 GNU 通用公共许可证 3.0 (GPL-3.0) 进行授权。完整的条款和条件请参阅 LICENSE 文件。