Helmholtz-AI-Energy / propulate

Propulate is an asynchronous population-based optimization algorithm and software package for global optimization and hyperparameter search on high-performance computers.
https://doi.org/10.1007/978-3-031-32041-5_6
BSD 3-Clause "New" or "Revised" License
31 stars 6 forks source link

Feature/nelder mead #125

Closed oskar-taubert closed 3 months ago

oskar-taubert commented 4 months ago

This PR adds parameter embedding to the Individual class so distance based propagators can work with categorical parameters. It also adds a Nelder-Mead simplex optimisation inspired propagator. Since propulate requires there to be only a single evaluation per worker at each generation, the operation is chosen based on the order of the vertices. E.g. if the last (youngest) vertex is the best one, It suggests an expansion. There probably is still some room for improvement on the algorithm side.

Also adds mypy and type checking to the pre-commit. Also modifies the islands interface: islands.evolve is now islands.propulate, which does not call summarize anymore. This can be done manually if so desired. Also replaces the encoding used for the gaussian process pruning surrogate with the Individual embedding.