2 Bios MEL YAEL

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 19

Instituto Politécnico Nacional

Escuela Superior de Cómputo

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

October 10, 2024


Contents
1 Introducción. 1

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

2.1 Objetivos especı́ficos


• Incorporar la regla de oro derivada para autoadaptar el parámetro sigma.
• Probar con diferentes versiones del algoritmo tales como el tipo de selección y ver el efecto
en la convergencia al óptimo global.
• Aplicar una metodologı́a experimental para comparar el desempeño del algoritmo con
diferentes valores de parámetros.

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 ] )

La función evaluar poblacion evalúa cada individuo de la población utilizando la función


objetivo especificada. Devuelve un arreglo con los valores de aptitud (fitness) de cada
individuo.
1 # Mutaci n gaussiana
2 def m u t a c i o n g a u s s i a n a ( i n d i v i d u o , s i g m a ) :
3 r e t u r n i n d i v i d u o + np . random . n o r m a l ( 0 , sigma , s i z e=i n d i v i d u o . s h a p e )

La función mutacion gaussiana aplica una mutación gaussiana a un individuo, añadiendo


ruido normal con desviación estándar sigma. Esta operación introduce variabilidad en la
población, permitiendo la exploración de nuevas regiones en el espacio de búsqueda.
1 # S e l e c c i n por reemplazo
2 def s e l e c c i o n r e e m p l a z o ( p o b l a c i o n , f i t n e s s , mu ) :
3 i n d i c e s m e j o r e s = np . a r g s o r t ( f i t n e s s ) [ : mu ]
4 return poblacion [ i n d i c e s m e j o r e s , : ] , f i t n e s s [ i n d i c e s m e j o r e s ]

La función seleccion reemplazo selecciona los mejores individuos de la población basándose


en los valores de aptitud. Utiliza np.argsort para ordenar los individuos por su fitness
y selecciona los mejores mu individuos para ser conservados en la siguiente generación.
1 # A l g o r i t m o de E s t r a t e g i a s E v o l u t i v a s
2 def e s t r a t e g i a s e v o l u t i v a s ( v e r s i o n , f u n c i o n o b j e t i v o , D, rango , mu , lamb , s i g m
3 si gm a = s i g m a i n i c i a l
4 p o b l a c i o n = g e n e r a r p o b l a c i o n (mu , D, r a n g o )
5 f i t n e s s = evaluar poblacion ( poblacion , f u n c i o n o b j e t i v o )
6 iteraciones = 0
7 mejores fitness = []

La función principal estrategias evolutivas implementa las diferentes versiones del


algoritmo de EE. Recibe varios parámetros como la versión del algoritmo (e.g., (1 + 1),
(µ, λ)), la función objetivo, el número de dimensiones D, el rango de valores, y otros.
Inicializa la población y evalúa su fitness al inicio, además de un contador de iteraciones
y una lista para registrar el mejor fitness en cada iteración.
1 for i n range ( m a x i t e r ) :
2 i f v e r s i o n == ’ 1+1 ’ :
3 h i j o = 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 [ 0 ] , sigma )
4 fitness hijo = funcion objetivo ( hijo )
5 if fitness hijo < fitness [0]:
6 poblacion [0] = hijo
7 fitness [0] = fitness hijo

Este bloque implementa la versión (1 + 1) de EE. Se genera un hijo mediante mutación


gaussiana y se evalúa su fitness. Si el hijo es mejor que el padre, lo reemplaza.
1 e l i f v e r s i o n == ’ 1 , 1 ’ :
2 h i j o = 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 [ 0 ] , sigma )

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

El código sigue actualizando el número de iteraciones y guarda el mejor fitness de cada


generación. Si el valor de fitness es suficientemente cercano al óptimo (definido como
menor o igual a 0.001), el algoritmo se detiene.
1 r e t u r n p o b l a c i o n [ np . a r g m i n ( f i t n e s s ) ] , i t e r a c i o n e s , m e j o r e s f i t n e s s

Al final, se devuelve el mejor individuo, el número de iteraciones realizadas y la lista de


los mejores fitness obtenidos en cada iteración.
1 # F u n c i n para e j e c u t a r pruebas
2 def e j e c u t a r p r u e b a s ( f u n c i o n o b j e t i v o , rango , v e r s i o n e s , mu , lamb , s i g m a i n i c i
3 r e s u l t a d o s = {}
4 c o n v e r g e n c i a s = {}
5 for version in v e r s i o n e s :
6 resultados [ version ] = []
7 convergencias [ version ] = [ ]
8 f o r e j e c u c i o n i n range ( e j e c u c i o n e s ) :
9 np . random . s e e d ( e j e c u c i o n )
10 mejor solucion , iteraciones , convergencia = e s t r a t e g i a s e v o l u t i v a s
11 r e s u l t a d o s [ v e r s i o n ] . append ( i t e r a c i o n e s )
12 c o n v e r g e n c i a s [ v e r s i o n ] . append ( c o n v e r g e n c i a )
13 return r e s u l t a d o s , convergencias

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 ( )

La función graficar convergencia genera un gráfico de la convergencia del fitness a lo


largo de las iteraciones, lo cual permite visualizar cómo el algoritmo mejora la solución.

5 Resultados

5.1 Discusión de resultados.


Como pudimos observar, cuando la estrategia evolutiva utiliza un reemplazo extintivo,
tiende a experimentar empeoramientos durante las iteraciones. Esto es beneficioso para
evitar estancarse en óptimos locales. Por otro lado, el reemplazo elitista se aproxima
rápidamente al óptimo, pero no siempre logra alcanzarlo.
El tamaño de las poblaciones influye en la velocidad del progreso, ya que contar con más
individuos permite una mayor diversidad de opciones para la selección.
En el caso de la función Drop-Wave, la diferencia entre las estrategias 1+1 y + es muy
significativa. En la primera, se alcanza el óptimo después de aproximadamente 400 itera-
ciones, mientras que con + se logra mucho antes, en menos de 100 iteraciones.
A continuación se presentan los resultados obtenidos de la funcion de Drop Wave

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 µ + λ

Ahora, se presentaran los resultados obtenidos de la funcion de Rosenbrock

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.

• ¿Hubo diferencias en el desempeño de las versiones de EE para cada problema?


Sı́, cada algoritmo muestra un comportamiento diferente en términos de convergencia, lo
cual es esperado debido a las distintas formas de generar descendencia y seleccionar a
los sobrevivientes. Las diferencias en el mecanismo de reemplazo y en la cantidad de
padres e hijos utilizados influyen en el tiempo que tardan en alcanzar soluciones óptimas.
Algoritmos con mayor diversidad, como el EE(µ+λ) y EE(µ, λ), suelen ser más efectivos
al evitar caer en mı́nimos locales, mientras que los que trabajan con un solo padre e
hijo, como el EE(1+1) y EE(1,1), tienen más dificultades para explorar el espacio de
búsqueda de manera eficiente.

• ¿Qué estrategia de selección de sobrevivientes considera que es mejor y por


qué?
La estrategia EE(µ + λ) parece ser la mejor. No solo converge más rápido, sino que
también fomenta la diversidad dentro de la población al permitir que tanto los padres

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.

• ¿Alguna de las versiones de EE no llegó al óptimo global en un tiempo com-


putacional considerable (por ejemplo 100,000 iteraciones)?
Sı́, los algoritmos EE(1,1) y EE(1+1) tuvieron un comportamiento menos eficiente.
Ambos se basan en una estrategia en la que solo se maneja un padre y un hijo en cada gen-
eración, lo que limita la capacidad de explorar diversas regiones del espacio de búsqueda.
Como resultado, es más probable que estos algoritmos se estanquen en mı́nimos locales, y
no lograron alcanzar el óptimo global en un número elevado de iteraciones. Este compor-
tamiento es esperado, ya que su baja diversidad y exploración limitada hacen más difı́cil
que encuentren mejores soluciones en problemas complejos.

7 Conclusiones

7.1 Melissa Dominguez


En esta práctica, se realizaron pruebas con las distintas versiones del algoritmo de Es-
trategias Evolutivas (EE) demostraron que la estrategia EE(µ + λ) es la más eficiente en
términos de convergencia, superando a otras variantes en la mayorı́a de los casos. Este
algoritmo, al combinar la población de padres e hijos y seleccionar a los mejores indi-
viduos, permite mantener un balance entre la exploración y la explotación del espacio
de búsqueda, lo que resulta en una mayor diversidad y una mejora continua del fitness.
Las versiones con menor número de padres e hijos, como EE(1+1) y EE(1,1), mostraron
un rendimiento inferior, evidenciando que una población pequeña limita la capacidad de
búsqueda y aumenta el riesgo de estancarse en mı́nimos locales.
Por otro lado, los resultados también reflejan que la efectividad de cada versión de EE
depende del tipo de problema a resolver. Las funciones objetivo más complejas y multi-
modales favorecieron a las estrategias con mayor número de individuos y un reemplazo
más flexible, mientras que los algoritmos con un solo padre e hijo lucharon por alcanzar
el óptimo global en un número considerable de iteraciones. Esto resalta la importancia
de seleccionar la estrategia adecuada para el problema en cuestión, ası́ como la necesidad
de mantener una diversidad genética en la población

7.2 Yael Jesus Caballero Chavez


A lo largo de esta práctica, se ha evidenciado que las estrategias evolutivas más com-
plejas y con mayores tamaños de población, como , y +, tienden a ser más eficientes
en la búsqueda de soluciones óptimas. Estas estrategias ofrecen un equilibrio adecuado
entre la explotación de las mejores soluciones encontradas y la exploración del espacio de
búsqueda, lo que les permite escapar de los óptimos locales y llegar al óptimo global de
manera más rápida.
Por otro lado, las estrategias basadas en un solo individuo, como 1,1 y 1+1, aunque más
simples y menos costosas en términos computacionales, presentan mayores dificultades
para evitar los óptimos locales y requieren un mayor número de iteraciones para converger.

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

También podría gustarte