Include Hill-Climbing functionality

Summary

Insert the existing hill-climbing algorithm in evoal-core as new optimisation algorithm

Component

core, optimisation

Expected Behavior

The hill-climbing algorithm starts at a random point (starting point should also be configurable), evaluates this point and moves onto a neighbour (neighbour choosing strategy should be configurable, differences between discrete and continuous search space have to be taken care of, and for continuous spaces, we need a step size parameter), and evaluates the neighbour. If the objective value improved (w.r.t. to the objective goal), switch to neighbour, otherwise evaluate next neighbour. If no neighbour improves the objective value, terminate. Otherwise, terminate after pre-determined number of evaluations.

Use Case

User should be able to use this as a different optimisation algorithm that solely builds on function evaluations.

Possible approach

Have a look at MY's repo.

Contact Person

(Link a person/ people, that can answer questions about this issue, e.g. yourself)

/cc @berber

Edited by Christina Sophie Viola Plump