ciren / cilib

Typesafe, purely functional Computational Intelligence
https://cilib.net
Apache License 2.0
124 stars 101 forks source link

Add Estimation of Distribution Algorithms (EDAs) #256

Closed DewaldDeJager closed 6 years ago

DewaldDeJager commented 6 years ago

Estimation of Distribution Algorithms are stochastic optimisation techniques that take a model-based approach in contract to a population-based approach of genetic algorithms. This is done by building probabilistic models of the most promising candidate solutions. This model is then sampled for more candidate solution and the model is updated/refined iteratively. The model represents the probability distribution of candidate solutions where the probabilities are proportional to the quality of the solution. For a great survey of these algorithms, see this paper.

I would like to merge the following two algorithms into CIlib:

UMDA uses a univariate model and discrete variables, specifically binary strings. SHCLVND is uses real-valued vectors and all variables are assumed to be independent.

Future algorithms to add:

I have some questions:

  1. Should the EDAs go in their own package, such as cilib.eda? They are relatively similar to GAs so I'm not sure whether to put them in the cilib.ga package.
  2. How should discrete problems be handled? The position of an Entity is declared as the Spire Numeric type so I am wondering how to support bit vectors, especially the scodec-bits library that @gpampara suggested I use

Thank you!

gpampara commented 6 years ago

Basic EDA structure has been added, together with the UDMAc implementation. This is still work in progress, but I think that it's a workable chunk of code. The current code is now available for feedback etc.

gpampara commented 6 years ago

I'm closing this for now - we can revisit as soon as there is interest in this set of algorithms.