EvoX Logo

PSO 结果      RVEA 结果      HalfCheetah 200

arXiv 文档 PyPI 版本 Python 版本 Discord 服务器 QQ 群

English README 中文 README

---

🌟分布式 GPU 加速的通用演化计算框架🌟

--- ## 🔥 新闻 - [2026-09-09] 发布 **EvoX 1.4.0** - 🚀 维护版本更新,包含多项修复与改进! [[发布说明](https://github.com/EMI-Group/evox/releases/tag/v1.4.0)] - [2025-05-13] 发布 **EvoX 1.2.2** - 🚀 EvoX v1.2.2 发布,新增 Mujoco Playground 及官方教程! [[更新内容](https://evox.group/index.php?m=home&c=View&a=index&aid=151)] - [2025-02-03] 发布 **EvoRL**:基于 **JAX** 的 GPU 加速 **进化强化学习** 框架![[论文](https://arxiv.org/abs/2501.15129)] [[代码](https://github.com/EMI-Group/evorl)] - [2025-01-30] 发布 **EvoGP**:基于 **PyTorch** & **CUDA** 的 GPU 加速 **遗传编程** 框架![[论文](http://arxiv.org/abs/2501.17168)] [[代码](https://github.com/EMI-Group/evogp)] - [2025-01-14] 发布 **EvoX 1.0.0**,全面兼容 **PyTorch**,全面接入`torch.compile`!使用 **JAX 版本** 的用户可在 **v0.9.0 分支** 获取。 ## 目录 1. [概述](#概述) 2. [主要特性](#主要特性) 3. [主要内容](#主要内容) 4. [安装指南](#安装指南) 5. [快速开始](#快速开始) 6. [相关项目](#相关项目) 7. [社区支持](#社区支持) ## 概述 EvoX 是一个分布式 GPU 加速的进化计算框架,兼容 **PyTorch**。提供易用的编程模型,EvoX 生态包含 **140+ 进化算法 (EAs)** 和 **240+ 基准问题/环境** —— 其中本包内置 **30+ 种算法** 和 **30+ 基准问题/环境**,其余来自姊妹项目。详情请参阅我们的 [论文](https://arxiv.org/abs/2301.12457) 及 [文档](https://evox.readthedocs.io/zh/latest/)。 > [!NOTE] > 需要使用 **JAX 版本** 的用户请安装 **0.9.0**或更早版本。 ## 主要特性 ### 💻 高性能计算 #### 🚀 超高性能 - 支持在**CPU** 和 **GPU** 等异构硬件上加速运行,实现**100 倍以上加速**。 - 集成**分布式工作流**,可无缝扩展至多个节点或设备。 #### 🌐 一体化解决方案 - 内置**30+ 种算法**,全面支持**单目标和多目标优化**,EvoX 生态更提供 **140+ 种算法**。 - 提供**分层架构**,适用于**元学习**、**超参数优化**和**神经进化**等复杂任务。 #### 🛠️ 易用设计 - **完全兼容 PyTorch** 及其生态系统,借助**定制化编程模型**简化算法开发。 - 具备**一键安装**功能,让 Windows 用户轻松上手。 ### 📊 多功能基准测试 #### 📚 丰富的基准测试套件 - 提供**30+ 基准测试问题**,涵盖单目标优化、多目标优化及现实工程挑战,EvoX 生态更提供 **240+ 基准问题/环境**。 #### 🎮 支持物理引擎 - 可无缝集成 **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](https://evox.readthedocs.io/en/latest/apidocs/evox/evox.algorithms.html),基准问题及环境请参考 [问题 API](https://evox.readthedocs.io/en/latest/apidocs/evox/evox.problems.html)。 ## 安装指南 使用 `pip` 轻松安装包含基础功能的 `evox`: ```bash pip install "evox[default]" ``` 从源代码安装最新版本以进行测试或开发: ```bash git clone https://github.com/EMI-Group/evox.git cd evox pip install -e . ``` > [!TIP] > Windows 用户可使用 [win-install.bat](https://evox.readthedocs.io/en/latest/_downloads/796714545d73f0b52e921d885369323d/win-install.bat) 脚本安装。 ## 快速开始 以下是一些示例,帮助你快速上手 EvoX: ### 单目标优化 使用 PSO 算法求解 Ackley 问题: ```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") # 如果您希望默认使用 GPU,请取消注释此行 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() # 或者在终端模式下调用 monitor.plot().show() ```
样例输出
### 多目标优化 使用 RVEA 算法求解 DTLZ2 问题: ```python import torch from evox.algorithms import RVEA from evox.metrics import igd from evox.problems.numerical import DTLZ2 from evox.workflows import StdWorkflow, EvalMonitor # torch.set_default_device("cuda") # 如果您希望默认使用 GPU,请取消注释此行 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() # 或者在终端模式下调用 monitor.plot().show() ```
样例输出
### 神经演化 进化一个简单的 MLP 模型,求解 HalfCheetah 环境: ```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") # 如果您希望默认使用 GPU,请取消注释此行 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) # 初始化 Brax 问题 problem = BraxProblem( policy=model, env_name="halfcheetah", max_episode_length=1000, num_episodes=3, pop_size=POP_SIZE, ) # 设置监视器,可记录最佳 3 个适应度值 monitor = EvalMonitor(topk=3) # 初始化工作流 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() # 或者在终端模式下调用 monitor.plot().show() ```
样例输出
> [!NOTE] > 如需完整指南,请访问我们的[文档](https://evox.readthedocs.io/zh/latest/),其中包含详细的安装步骤、教程、实践示例以及完整的API说明。 ## 相关项目 - **EvoRL**: 基于 GPU 加速的进化强化学习框架。查看详情:点击这里。 - **EvoGP**: 基于 GPU 加速的遗传编程框架。查看详情:点击这里。 - **EvoMO**: 基于 GPU 加速的进化多目标优化(EMO)库。查看详情:点击这里。 - **TensorNEAT**: 用于 GPU 加速的张量化 NEAT(NeuroEvolution of Augmenting Topologies)框架。查看详情:点击这里。 - **TensorRVEA**: 用于 GPU 加速的张量化参考向量引导进化算法(RVEA)框架。查看详情:点击这里。 - **TensorACO**: 用于 GPU 加速的张量化蚁群优化算法(ACO)框架。查看详情:点击这里。 - **EvoXBench**: 一个用于解决各种优化问题(如神经架构搜索 NAS)的真实世界基准测试平台。该平台无需 GPU/PyTorch/TensorFlow 运行,并支持多种编程环境。查看详情:点击这里。 EvoX 与这些项目以及其他由 [EMI-Group](https://github.com/EMI-Group) 发布的 EvoX 相关库共同构成了一个提供 **140+ 种算法** 和 **240+ 基准问题/环境** 的生态。 敬请期待——更多精彩内容即将推出!✨ ## 社区支持 - 在 [GitHub 讨论区](https://github.com/EMI-Group/evox/discussions) 参与讨论。 - 通过 [Discord](https://discord.gg/Vbtgcpy7G4) 或 QQ 群(ID: 297969717)联系交流。 - 访问 [EvoX官网](https://evox.group/)。 ## 引用 EvoX 如果 EvoX 对您的研究有帮助,请引用: ```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} } ``` ## 许可证声明 EvoX 遵循 **GNU 通用公共许可证 3.0 (GPL-3.0)** 进行授权。完整的条款和条件请参阅 [LICENSE](./LICENSE) 文件。