- 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
6CEF
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.numerical.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.
- For general discussion, please head to Github's discussion
- For Chinese speakers, please consider to join the QQ group to discuss. (Group number: 297969717).