Estrategias Evolutivas

EE-(1+1)

Programa de ejemplo
   Las estrategias evolutivas forman una de las corrientes de la computación evolutiva, la cual se utiliza para el problema particular de maximizar(o minimizar) una función real. Los operadores genéticos que se utilizan son los mismos que en los algoritmos genéticos, pero la importancia de cada uno de ellos varía. En las estrategias evolutivas el operador más importante es la mutación.

   En este programa de ejemplo muestro la estrategia denominada EE-(1+1), se trata de un caso particular de la estratecia EE-(M+L), donde M indica el número de padres que participan en la generación de los L hijos; la generación t+1 se forma con los m mejores individuos de la unión de la generación t con el conjunto de los L hijos generados a partir de ellos. Esto es, tanto los padres como los hijos participan en el proceso de selección. La función a maximizar está definida a partir de la linea 11 del archivo "UestrategiaEvolutiva.cpp" la aplicación grafica las C curvas de nivel de la función a lo largo de la región de búsqueda especificada. Por omisión la región de búsqueda es [-10,10]x[-10,10] y el número C de curvas de nivel es 10. La decisión de parada se da por homeostasis, cuando la aptitud de las nuevas generaciones mejora en una cantidad menor que la"tolerancia". En caso de entrar en un máximo local, se aplica otra condición de paro, que es el máximo número de iteraciones que estamos dispuestos a esperar en un bucle...

   La variable de control sigma evoluciona mediante la "regla 1/5" de Rechemberg.