import numpy as np

Los algoritmos genéticos#

Estos algoritmos emulan los procesos que ocurren en la Naturaleza que dan lugar a la evolución por selección natural.

Suponen que la Evolución optimiza algunos de los atributos que distinguen a las especies.

Es notable el caso del cangrejo Heikegani o Heike, también conocido como cangrejo samurai:

Cálculo#

_images/ga_opt_function.png

Fig. 40 Función a optimizar#

El cálculo infinitesimal ha encontrado condiciones de extremo cuando la función es diferenciable.

Note

Si \(f\) es una función diferenciable en un intervalo, los extremos de \(f\) verifican \(Df(x)=0\)

Existen ocasiones en las que no se conoce la forma explícita de la función

_images/ga_nofuncion.png

Cuando la función rige la dinámica del sistema, el interés reside en conocer los estados que visitará el sistema y, sobre todo, hacia donde tiende.

Espacios de soluciones#

La Fuerza Bruta puede ayudar a rastrear el espacio de soluciones y, por comparación, encontrar aquellas en las que la función toma el máximo valor.

Ejemplo: cadenas binarias formadas por \(\nu\) elementos. El número de posibles secuencias es \(S=2^\nu\).

Asociado a cada secuencia tenemos el valor que toma la función \(f\).

Si \(\nu=100\) entonces \(S\approx 10^{31}\)

_images/ga_solution_space.png

Algoritmos inteligentes de búsqueda#

  • La derivada: si \(f\) es diferenciable, calculando la derivada reducimos un espacio infinito (un intervalo) a un conjunto de puntos, en principio, finito en los que la derivada se anula

  • Algoritmos de rastreo: que no sea necesario evaluar \(f\) en todos los puntos del espacio solución

  • Los algoritmos genéticos aprovechan las ideas de la evolución (caminos evolutivos) que siguen las poblaciones de especies autorreplicativas para encontrar candidatos a extremos (absolutos) evitando evaluar todas las posibilidades

  • Son métodos heurísticos

    • Funcionan mejor que métodos matemáticos cuando la complejidad del problema sobrepasa unos límites de tratabilidad

Aplicaciones#