2 Bios MEL YAEL
2 Bios MEL YAEL
2 Bios MEL YAEL
Algoritmos Bioinspirados
Práctica 2:Algoritmos
evolutivos: Estrategias
evolutivas
Profesora:
Dra. Miriam Pescador Rojas
Alumnos:
Domı́nguez Rendón Melissa
Caballero Chavez Yael Jesus
GRUPO 5BM2
2 Objetivo. 1
2.1 Objetivos especı́ficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3 Consignas 2
4 Codigo 3
5 Resultados 6
5.1 Discusión de resultados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
6 Análisis 14
7 Conclusiones 15
7.1 Melissa Dominguez . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
7.2 Yael Jesus Caballero Chavez . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1
List of Figures
1 Función Rosenbrock. El óptimo se encuentra en x∗ = (0, 0, ..., 0) y f (x∗) = 1.0 . 2
2 Función Drop-Wave. El óptimo de la función se encuentra en x∗ = (0, 0, ..., 0) y
f (x∗) = 0.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3 Gráfica de convergencia de Drop-Wave usando la estrategia evolutiva de 1,1 . . . 7
4 Gráfica de convergencia de Drop-Wave usando la estrategia evolutiva de 1+1 . . 8
5 Gráfica de convergencia de Drop-Wave usando la estrategia evolutiva de µ, λ . . 9
6 Gráfica de convergencia de Drop-Wave usando la estrategia evolutiva de µ + λ . 10
7 Gráfica de convergencia de Rosenbrock usando la estrategia evolutiva de 1,1 . . 11
8 Gráfica de convergencia de Rosenbrock usando la estrategia evolutiva de 1+1 . . 12
9 Gráfica de convergencia de Rosenbrock usando la estrategia evolutiva de µ, λ . . 13
10 Gráfica de convergencia de Rosenbrock usando la estrategia evolutiva de µ + λ . 14
2
1 Introducción.
Las estrategias evolutivas en el cómputo evolutivo son algoritmos que imitan mecanismos nat-
urales, como la selección natural, la mutación y la recombinación genética, para encontrar
soluciones eficientes a problemas difı́ciles.
Entre los conceptos que usa, se tienen los siguientes:
• Selección, se refiere a que los individuos mejor adaptados (soluciones con mejores resulta-
dos) tienen más probabilidades de ser seleccionados para crear nuevas generaciones. Este
proceso es similar a la selección natural en biologı́a.
• Recombinación o cruce (crossover). Este procedimiento se refiere a combinar partes de
dos o más soluciones (padres), para generar nuevas soluciones (hijos). La recombinación
busca encontrar combinaciones de caracterı́sticas que puedan mejorar la calidad de las
soluciones.
• Mutación. Es un proceso que introduce cambios aleatorios en las soluciones para mantener
la diversidad y evitar la convergencia prematura a soluciones subóptimas. Esto es similar
a las mutaciones genéticas en la evolución biológica.
• Reemplazo y supervivencia. Después de la recombinación y mutación, las nuevas solu-
ciones (descendencia) pueden reemplazar las soluciones más antiguas o menos aptas. Este
proceso imita la supervivencia del más apto, donde las soluciones menos eficientes son
eliminadas y las mejores son retenidas para futuras iteraciones.
Las estrategias evolutivas son un tipo especı́fico de algoritmo dentro del cómputo evolu-
tivo, introducido en la década de 1960 por Ingo Rechenberg y Hans-Paul Schwefel. Algunas
caracterı́sticas clave incluyen:
Representación de la solución: Las soluciones se representan mediante vectores reales, no
necesariamente en formato binario como en los algoritmos genéticos. Mutación gaussiana: La
principal fuerza de variación es la mutación, aplicada mediante la adición de ruido gaussiano
(normal) a los vectores de soluciones. Control de parámetros adaptativo: Se utilizan técnicas
that permiten ajustar dinámicamente los parámetros evolutivos (como la tasa de mutación)
durante la evolución, optimizando la bsqueda.
Algoritmo
• Generación inicial: Se crea una población inicial de soluciones posibles.
• Mutación y recombinación: Las soluciones se modifican ligeramente y se combinan para
generar nuevas soluciones.
• Evaluación: Cada individuo es evaluado según su calidad (fitness) en función del valor de
la función que queremos optimizar.
• Selección: En la selección extintiva se eligen las mejores soluciones para formar la nueva
generación.
• Iteración: El proceso se repite hasta que se encuentra una solución aceptable.
2 Objetivo.
El objetivo de esta práctica es que el alumno entienda el funcionamiento de la técnica cono-
cida como estrategias evolutivas como uno de los paradigmas de algoritmos evolutivos más
importantes en el área.
1
Figure 1: Función Rosenbrock. El óptimo se encuentra en x∗ = (0, 0, ..., 0) y f (x∗) = 1.0
3 Consignas
• Implementar el algoritmo de estrategias evolutivas en sus versiones:
– EE(1 + 1)
– EE(1, 1)
– EE(µ, λ)
– EE(µ + λ)
sea µ = 50 y λ = 70
• Resuelva los siguientes problemas de optimización Drop-Wave definida en el intervalo
de xi ϵ[−5.12, 5.12], para toda i = 1, 2, ..., d y Rosenbrock con xi ϵ[−5, 10] para toda i =
1, . . . , d, con 6 variables de decisión, D = 6.
• El criterio de paro del algoritmo es llegar al valor óptimo de la función con un error menor
igual a 0.001, es decir |f (x∗) − f (x)| ≤ 0.001
• Realice un script de pruebas con 20 ejecuciones independientes (con diferente semilla
para generación de aleatorios) por cada versión de algoritmo y cada problema, indique el
promedio y desviación estándar del número de iteraciones que fueron necesarias en cada
versión.
2
Figure 2: Función Drop-Wave. El óptimo de la función se encuentra en x∗ = (0, 0, ..., 0) y
f (x∗) = 0.0
• Reporte las gráficas de convergencia para el caso de la prueba que represente la mediana
de las ejecuciones. En total 8, una por cada problema y versión del algoritmo.
4 Codigo
El siguiente código implementa varias versiones del algoritmo de Estrategias Evolutivas
(EE) utilizando funciones objetivo como drop wave y rosenbrock. El objetivo es opti-
mizar estas funciones a través de diferentes variantes de EE. A continuación, se explica
el código en partes, detallando cada función y su propósito dentro del algoritmo.
1 import numpy a s np
2 import m a t p l o t l i b . p y p l o t a s p l t
En primer lugar, se importan las bibliotecas necesarias: numpy para el manejo de arreglos
y operaciones matemáticas, y matplotlib para la generación de gráficos de convergencia.
1 # Funciones o b j e t i v o
2 def d r o p w a v e ( x ) :
3 num = 1 + np . c o s ( 1 2 ∗ np . s q r t ( np . sum( x ∗ ∗ 2 ) ) )
4 den = 0 . 5 ∗ np . sum( x ∗ ∗ 2 ) + 2
5 r e s u l t = 1−(num / den )
6 return r e s u l t
7
8 def r o s e n b r o c k ( x ) :
9 r e t u r n sum( 1 0 0 ∗ ( x [ 1 : ] − x [ : − 1 ] ∗ ∗ 2 ) ∗ ∗ 2 + ( x [ : − 1 ] − 1 ) ∗ ∗ 2 )
Aquı́ se definen dos funciones objetivo: drop wave y rosenbrock. Estas funciones serán
minimizadas por el algoritmo de EE. La función drop wave es una función no lineal uti-
lizada frecuentemente para pruebas de optimización global, mientras que rosenbrock es
una función estándar utilizada para evaluar el rendimiento de algoritmos de optimización.
1 # G e n e r a c i n de l a p o b l a c i n i n i c i a l
2 def g e n e r a r p o b l a c i o n ( tamano , D, r a n g o ) :
3 r e t u r n np . random . u n i f o r m ( r a n g o [ 0 ] , r a n g o [ 1 ] , ( tamano , D) )
Esta función genera una población inicial de individuos de tamaño tamano y dimensión
D, con valores aleatorios dentro del rango especificado. La función utiliza la distribución
3
uniforme para crear los individuos, lo que asegura que estén distribuidos de manera ho-
mogénea en el espacio de búsqueda.
1 # E v a l u a c i n de l a p o b l a c i n
2 def e v a l u a r p o b l a c i o n ( p o b l a c i o n , f u n c i o n o b j e t i v o ) :
3 r e t u r n np . a r r a y ( [ f u n c i o n o b j e t i v o ( i n d i v i d u o ) f o r i n d i v i d u o i n p o b l a c i o n ] )
4
3 fitness hijo = funcion objetivo ( hijo )
4 poblacion [0] = hijo
5 fitness [0] = fitness hijo
Aquı́ se implementa la versión (1, 1), donde siempre se reemplaza al padre por el hijo,
independientemente de su fitness.
1 e l i f v e r s i o n == ’ + ’ :
2 d e s c e n d e n c i a = [ m u t a c i o n g a u s s i a n a ( p o b l a c i o n [ i ] , sigma ) f o r i in r
3 f i t n e s s d e s c e n d e n c i a = evaluar poblacion ( descendencia , f u n c i o n o b j
4 d e s c e n d e n c i a = np . a r r a y ( d e s c e n d e n c i a )
5 p o b l a c i o n , f i t n e s s = s e l e c c i o n r e e m p l a z o ( np . c o n c a t e n a t e ( [ p o b l a c i o n
6 np . c o n c a t e n a t e ( [ f i t n e s s ,
Este bloque implementa la versión (µ + λ), donde se genera descendencia a partir de los
padres, y luego se realiza una selección por reemplazo que considera tanto a la población
actual como a la descendencia.
1 e l i f v e r s i o n == ’ , ’:
2 d e s c e n d e n c i a = [ m u t a c i o n g a u s s i a n a ( p o b l a c i o n [ np . random . r a n d i n t (mu )
3 f i t n e s s d e s c e n d e n c i a = evaluar poblacion ( descendencia , f u n c i o n o b j
4 d e s c e n d e n c i a = np . a r r a y ( d e s c e n d e n c i a )
5 poblacion , f i t n e s s = seleccion reemplazo ( descendencia , fitness desc
En esta sección se implementa la versión (µ, λ), donde se generan lamb descendientes
a partir de una selección aleatoria de padres, y luego se realiza una selección entre los
descendientes.
1 i t e r a c i o n e s += 1
2 m i n f i t n e s s = np . min ( f i t n e s s )
3 m e j o r e s f i t n e s s . append ( m i n f i t n e s s )
4 i f m i n f i t n e s s <= 0 . 0 0 1 :
5 break
5
Esta función ejecuta varias pruebas para diferentes versiones del algoritmo, y para cada
prueba registra el número de iteraciones necesarias para encontrar la mejor solución.
También almacena las curvas de convergencia para análisis posterior.
1 # Graficar convergencia
2 def g r a f i c a r c o n v e r g e n c i a ( m e j o r e s f i t n e s s , t i t u l o ) :
3 p l t . f i g u r e ( f i g s i z e =(8 , 6 ) )
4 p l t . p l o t ( m e j o r e s f i t n e s s , l a b e l=” Mejor f i t n e s s p o r i t e r a c i n ” )
5 plt . xlabel ( ’ Iteraciones ’)
6 plt . ylabel ( ’ Fitness ’ )
7 plt . t i t l e ( titulo )
8 plt . legend ()
9 p l t . g r i d ( True )
10 p l t . show ( )
5 Resultados
6
Figure 3: Gráfica de convergencia de Drop-Wave usando la estrategia evolutiva de 1,1
7
Figure 4: Gráfica de convergencia de Drop-Wave usando la estrategia evolutiva de 1+1
8
Figure 5: Gráfica de convergencia de Drop-Wave usando la estrategia evolutiva de µ, λ
9
Figure 6: Gráfica de convergencia de Drop-Wave usando la estrategia evolutiva de µ + λ
10
Figure 7: Gráfica de convergencia de Rosenbrock usando la estrategia evolutiva de 1,1
11
Figure 8: Gráfica de convergencia de Rosenbrock usando la estrategia evolutiva de 1+1
12
Figure 9: Gráfica de convergencia de Rosenbrock usando la estrategia evolutiva de µ, λ
13
Figure 10: Gráfica de convergencia de Rosenbrock usando la estrategia evolutiva de µ + λ
6 Análisis
• ¿Cuál es el algoritmo que converge más rápido (respecto a su valor de media)?
De acuerdo a los resultados obtenidos, el algoritmo que presenta el mejor desempeño, ya
que converge en menos iteraciones, es la versión EE(µ + λ). Este algoritmo logra reducir
el valor de fitness más rápido en comparación con los otros, gracias a la estrategia de
mantener tanto a los padres como a los hijos en la población, lo que favorece una mejora
constante en cada iteración.
14
como los hijos puedan ser parte de la siguiente generación. Esto aumenta las probabil-
idades de encontrar soluciones mejores al no depender exclusivamente de una población
de descendencia. Además, el hecho de que el reemplazo se base en si el hijo supera al
padre garantiza una mejora continua en el fitness de la población, lo que la convierte en
una estrategia robusta.
7 Conclusiones
15
Sin embargo, la estrategia 1+1 demostró ser más efectiva que 1,1 debido a su enfoque
elitista.
En cuanto al impacto del tamaño de la población, se observó que estrategias con pobla-
ciones más grandes, como , y +, tienen una ventaja clara en la eficiencia de la búsqueda,
ya que un mayor número de individuos permite explorar más puntos en el espacio de
soluciones. Esto resulta en una convergencia más rápida y en una mayor capacidad de
evitar el estancamiento en óptimos locales.
En resumen, las estrategias + y , se destacaron como las más efectivas en esta práctica,
logrando convergencias rápidas y eficientes hacia el óptimo global, con + sobresaliendo
por su capacidad de explotar lo mejor de la población actual y de la descendencia. Las
estrategias 1,1 y 1+1 son adecuadas en casos donde los recursos computacionales son
limitados, pero sacrifican la velocidad de convergencia y la capacidad de evitar óptimos
locales. Esta práctica deja claro que la selección de la estrategia evolutiva adecuada
depende del equilibrio entre los recursos disponibles y los objetivos de optimización, siendo
+ la opción más completa en la mayorı́a de los casos.
16