EMI-Group / evox

Distributed GPU-Accelerated Framework for Evolutionary Computation. Comprehensive Library of Evolutionary Algorithms & Benchmark Problems.
BSD 3-Clause "New" or "Revised" License
188 stars 34 forks source link
black-box-optimization brax derivative-free-optimization evolutionary-algorithms evolutionary-computation evolutionary-optimization evolutionary-reinforcement-learinig evolutionary-strategies gpu-acceleration gradient-free-optimization gym jax metaheuristics multi-objective-optimization neuroevolution population-based-optimization ray

EvoX Logo

arXiv Documentation PyPI-Version Python-Version Discord Server QQ Group GitHub User's Stars


🌟Distributed GPU-accelerated Framework for Scalable Evolutionary Computation🌟


Building upon JAX and Ray, EvoX offers a comprehensive suite of 50+ Evolutionary Algorithms (EAs) and a wide range of 100+ Benchmark Problems/Environments, all benefiting from distributed GPU-acceleration. It facilitates efficient exploration of complex optimization landscapes, effective tackling of black-box optimization challenges, and deep dives into neuroevolution with Brax. With a foundation in functional programming and hierarchical state management, EvoX offers a user-friendly and modular experience. For more details, please refer to our Paper and Documentation / 文档.

Key Features

Main Contents

Evolutionary Algorithms for Single-objective Optimization

Category Algorithms
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, ...

Evolutionary Algorithms for Multi-objective Optimization

Category Algorithms
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, ...

For a comprehensive list and further details of all algorithms, please check the API Documentation.

Benchmark Problems/Environments

Category Problems/Environments
Numerical DTLZ, LSMOP, MaF, ZDT, CEC'22, ...
Neuroevolution/RL Brax, Gym, TorchVision Dataset, ...

For a comprehensive list and further details of all benchmark problems/environments, please check the API Documentation.

Setting Up EvoX

Install evox effortlessly via pip:

pip install evox

Note: To setup EvoX with GPU acceleration capabilities, you will need to setup JAX first. For detials, please refer to our comprehensive Installation Guide. Additionally, you can watch our instructional videos:

🎥 EvoX Installation Guide (Linux)

🎥 EvoX Installation Guide (Windows)

🎥 EvoX 安装指南 (Linux)

🎥 EvoX 安装指南 (Windows)

Quick Start

Kickstart your journey with EvoX in just a few simple steps:

  1. Import necessary modules:
    import evox
    from evox import algorithms, problems, workflows
  2. Configure an algorithm and define a problem:
    pso = algorithms.PSO(
    lb=jnp.full(shape=(2,), fill_value=-32),
    ub=jnp.full(shape=(2,), fill_value=32),
    pop_size=100,
    )
    ackley = problems.numerical.Ackley()
  3. Compose and initialize the workflow:
    workflow = workflows.StdWorkflow(pso, ackley)
    key = jax.random.PRNGKey(42)
    state = workflow.init(key)
  4. Run the workflow:
    # Execute the workflow for 100 iterations
    for i in range(100):
    state = workflow.step(state)

Use-cases and Applications

Try out ready-to-play examples in your browser with Colab:

Example Link
Basic Usage Open in Colab
Numerical Optimization Open in Colab
Neuroevolution with Gym Open in Colab
Neuroevolution with Brax Open in Colab
Custom Algorithm/Problem Open in Colab

For more use-cases and applications, pleae check out Example Directory.

Community & Support

Sister Projects

Citing EvoX

If you use EvoX in your research and want to cite it in your work, please use:

@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}
}

Star History

Star History Chart