Initial algorithm

This algorithm is working but it still needs a bit of paramenter tunning depending on the use case.

It may also need to add new diversification strategies in case it converges too early.