Skip to content

htrqw/evox_es

 
 

Repository files navigation

Logo EvoX
A Distributed GPU-accelerated Library towards Scalable Evolutionary Computation

Features

  • Single-objective and multi-objective algorithms.
  • GPU computing.
  • Easy to use distributed pipeline.
  • Support a wide range of problems.
  • Hierarchical state managing.

Index

Installation

pip install evox

Quick Start

To start with, import evox

import evox
from evox import algorithms, problems, pipelines

Then, create an algorithm and 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.classic.Ackley()

The algorithm and the problem are composed together using pipeline:

pipeline = pipelines.StdPipeline(pso, ackley)

To initialize the whole pipeline, call init on the pipeline object with a PRNGKey. Calling init will recursively initialize a tree of objects, meaning the algorithm pso and problem ackley are automatically initialize as well.

key = jax.random.PRNGKey(42)
state = pipeline.init(key)

To run the pipeline, call step on the pipeline.

# run the pipeline for 100 steps
for i in range(100):
    state = pipeline.step(state)

More Tutorial

Head to our tutorial page.

Example

The example folder has many examples on how to use EvoX.

About

A Distributed GPU-accelerated Library towards Scalable Evolutionary Computation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.3%
  • Nix 0.7%