- Single-objective and multi-objective algorithms.
- GPU computing.
- Easy to use distributed pipeline.
- Support a wide range of problems.
- Hierarchical state managing.
pip install evox
To start with, import evox
import evox
from evox import algorithms, problems, pipelinesThen, 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)Head to our tutorial page.
The example folder has many examples on how to use EvoX.