PSO y DE

Lo siento, pero estos algoritmos ya están cogidos I

Empezamos la ronda de Técnicas Evolutivas con el algoritmo PSO y DE.


Algoritmo de Optimización por Enjambre de Partículas - PSO

El algoritmo PSO se basa en mover unas "partículas" o "agentes" (soluciones candidatas) por un espacio de búsqueda (variables a optimizar) según unas reglas matemáticas que tienen en cuenta la posición y la velocidad de las partículas. El movimiento de las partículas dependerá de su última mejor posición local y de las mejores posiciones globales de las otras partículas. De ese modo las partículas se "ayudan mutuamente".

GIF: descenso de gradiente.

Perdona ¿Cómo? Para entendernos mejor, supongamos que la pesca es el deporte de moda actual, y que estamos en época de pesca. Nos encontramos en un lago precioso, con nuestro bote, la caña de pescar, un bocata de tortilla, y muchas ganas de encontrar el mejor pescado del lago. Porque sabemos que existe UN mejor pescado en el lago, y no nos vamos a conformar con cualquier pescado bueno.

Pero, nos encontramos con un problema: el lago está abarrotado de otros botes.

No obstante, podemos aprovecharnos de este pequeño contratiempo. Si nos fijamos en los demás botes, en donde están y a donde se dirigen, podemos hacer lo mismo, pues todos tenemos el mismo objetivo. Y así, con suerte ser los que capturemos el mejor pescado.

Entonces... Como ya se estará imaginando, el bote/usted es un agente, el mejor pescado el objetivo, y el lago, el espacio de búsqueda.


Algoritmo Differential Evolution - DE

El algoritmo de Evolución Diferencial se basa en la comparación de una población de candidatos con la versión recombinada y mutada de esta. Los individuos que pasarán a la siguiente generación serán aquellos que más aptos sean.

Dicho de otra forma: es como si los Spidermans de diferentes dimensiones se fusionaran para crear un nuevo Spiderman, y este se peleara con el Spiderman original. Solo podría sobrevivir un Spiderman, el mejor.

Dicho de otra forma (mejor): con la población de agentes originales (los botes del lago), llamados X, se creará una población nueva. La población nueva, Y (botes mutados), se creará mezclando 3 agentes aleatorios de la población original (X). Esta fusión se hará una vez por cada agente de la población X.

Yi = Xa + F*(Xb - Xc)

Donde F es el rango de mutación y puede tomar cualquier valor de 0 a 2.

Después, cada agente de la población X e Y, se emparejará y tendrán un descendiente con las características de los dos. Las características se pueden escoger de forma aleatoria o siguiendo alguna fórmula. Para que se haga una idea: la población de botes descendientes T tendrán las características de los dos progenitores, consiguiendo barcos variopintos del color de un progenitor y el material del otro, o el mástil de un progenitor y la cubierta de otro, ...

Después de conseguir árbol genealógico un tanto especial, solo queda aplicar la ley de la jungla. Cada descendiente T se enfrentará a su progenitor original X. Los que sean más aptos sobrevivirán, y tendrán el derecho a tener descendientes. En otras palabras, se repetirá el proceso de mutación, combinación y selección.

GIF: árbol genealógico.

¿Hasta cuándo? Hasta que se llegue a una buena solución o la mejor solución no haya mejorado en unas cuantas generaciones o hasta que se llegue a la generación número N o ...


Para conocer otros algoritmos haga click aquí.

Comentarios

Entradas populares de este blog

Proyecto Estación Meteorológica 4: Visualización de Resultados Mediante HTML y D3.js

Diferentes técnicas de las redes neuronales

Proyecto Estación Meteorológica 3: Obtención y Envío de Datos Mediante Python