Está en la página 1de 28
Algoritmos Genéticos Algoritmos Heurísticos

Algoritmos Genéticos

Algoritmos Genéticos Algoritmos Heurísticos

Algoritmos Heurísticos

Algoritmos Heurísticos !   Se denomina heurística al arte de inventar. !   En programación
Algoritmos Heurísticos !   Se denomina heurística al arte de inventar. !   En programación

Algoritmos Heurísticos

!   Se denomina heurística al arte de inventar. !   En programación se dice
!   Se denomina heurística al arte de inventar.
!   En programación se dice que un algoritmo es
heurístico cuando la solución no se determina
en forma directa, sino mediante ensayos,
pruebas y reensayos.
Algoritmos Heurísticos !   El método consiste en generar candidatos de soluciones posibles de acuerdo
Algoritmos Heurísticos !   El método consiste en generar candidatos de soluciones posibles de acuerdo

Algoritmos Heurísticos

!   El método consiste en generar candidatos de soluciones posibles de acuerdo a un
!   El método consiste en generar candidatos de
soluciones posibles de acuerdo a un patrón
dado; luego los candidatos son sometidos a
pruebas de acuerdo a un criterio que
caracteriza a la solución.
Algoritmos Heurísticos !   Si un candidato no es aceptado, se genera otro; y los
Algoritmos Heurísticos !   Si un candidato no es aceptado, se genera otro; y los

Algoritmos Heurísticos

!   Si un candidato no es aceptado, se genera otro; y los pasos dados
!   Si un candidato no es aceptado, se genera otro;
y los pasos dados con el candidato anterior no
se consideran.

!   Es decir, existe inherentemente una vuelta atrás, para comenzar a generar un nuevo candidato; por esta razón, este tipo de algoritmo también se denomina "con vuelta atrás" (backtracking en inglés).

por esta razón, este tipo de algoritmo también se denomina "con vuelta atrás" (backtracking en inglés).
Algoritmos Genéticos !   ¿Qué son los algoritmos genéticos? !   ¿Cómo funcionan? !  
Algoritmos Genéticos !   ¿Qué son los algoritmos genéticos? !   ¿Cómo funcionan? !  

Algoritmos Genéticos

!   ¿Qué son los algoritmos genéticos? !   ¿Cómo funcionan? !   Implementación de
!
¿Qué son los algoritmos genéticos?
!
¿Cómo funcionan?
!
Implementación de los AG
!
Aplicaciones
!
Uso del paradigma funcional
!
Visión de futuro
!
Conclusiones
¿Qué es un AG? !   Los AG son métodos de resolución de problemas de
¿Qué es un AG? !   Los AG son métodos de resolución de problemas de

¿Qué es un AG?

!   Los AG son métodos de resolución de problemas de búsqueda y optimización. !
!   Los AG son métodos de resolución de
problemas de búsqueda y optimización.
!   Son una clase particular de algoritmos
evolutivos.
!   Su característica principal es que se basan en
técnicas inspiradas en la evolución biológica.
¿Qué es un AG? !   Se aplican sobre una población representada de forma abstracta
¿Qué es un AG? !   Se aplican sobre una población representada de forma abstracta

¿Qué es un AG?

!   Se aplican sobre una población representada de forma abstracta como cromosomas, que son
!   Se aplican sobre una población representada de
forma abstracta como cromosomas, que son la
codificación de soluciones candidatas a un
problema.
!   La evolución comienza desde una población
aleatoria.
!   En cada generación, la selección natural elegirá que
individuos son aptos, modificandolos y mutándolos
para la siguiente generación.
¿Qué es un AG? Robustez !   La robustez, balance entre eficiencia y eficacia necesario
¿Qué es un AG? Robustez !   La robustez, balance entre eficiencia y eficacia necesario

¿Qué es un AG? Robustez

!   La robustez, balance entre eficiencia y eficacia necesario para sobrevivir en muchos ambientes
!   La robustez, balance entre eficiencia y eficacia
necesario para sobrevivir en muchos ambientes
diferentes, es el tema central de investigación
en algoritmos genéticos.
¿Qué es un AG? Robustez !   Los AGs, teórica y prácticamente han probado que
¿Qué es un AG? Robustez !   Los AGs, teórica y prácticamente han probado que

¿Qué es un AG? Robustez

!   Los AGs, teórica y prácticamente han probado que proveen una búsqueda robusta en
!   Los AGs, teórica y prácticamente han probado
que proveen una búsqueda robusta en espacios
complejos. Son simples computacionalmente y
no están limitados por su-posiciones
restrictivas acerca del espacio de búsqueda
(suposiciones acerca de continuidad, existencia
de derivadas, unimodalidad y/u otras
cuestiones).
Robustez de métodos tradicionales de búsqueda ! Métodos basados en cálculo !   Son locales,
Robustez de métodos tradicionales de búsqueda ! Métodos basados en cálculo !   Son locales,

Robustez de métodos tradicionales de búsqueda

! Métodos basados en cálculo !   Son locales, en área de influencia. Además dependen
! Métodos basados en cálculo
!   Son locales, en área de influencia. Además dependen
de la existencia de derivadas. Pero
!   El mundo real de búsqueda está lleno de
discontinuidades, multimodalidad y espacios de
búsqueda con ruidos.
! Métodos enumerativos
!   Buscan valores de la función objetivo en cada punto en
el espacio, uno por vez. Su principal falla es la falta de
eficiencia.
Diferencias entre AGs y los métodos tradicionales de búsqueda !   Trabajan con la codificación
Diferencias entre AGs y los métodos tradicionales de búsqueda !   Trabajan con la codificación

Diferencias entre AGs y los métodos tradicionales de búsqueda

!   Trabajan con la codificación del conjunto de parámetros, no con los parámetros. !
!   Trabajan con la codificación del conjunto de
parámetros, no con los parámetros.
!   Buscan a partir de una población de puntos, no un
punto único.
!   Usan información de una función objetivo (o más), no
derivadas u otro conocimiento adicional.
!   Usan reglas de transición probabilísticas, no reglas
determinísticas.
¿Cómo funcionan? !   Para resolver un problema usando AG necesitamos: !   Representar soluciones.
¿Cómo funcionan? !   Para resolver un problema usando AG necesitamos: !   Representar soluciones.

¿Cómo funcionan?

!   Para resolver un problema usando AG necesitamos: !   Representar soluciones. !  
!   Para resolver un problema usando AG
necesitamos:
!   Representar soluciones.
!   Tradicionalmente una cadena de bits.
!   Medir la calidad de cada solución con respecto al
problema a resolver.
!   Se usa una función de selección.
¿Cómo funcionan? !   Esquema de funcionamiento de un AG: !   Se crea una
¿Cómo funcionan? !   Esquema de funcionamiento de un AG: !   Se crea una

¿Cómo funcionan?

!   Esquema de funcionamiento de un AG: !   Se crea una población inicial
!   Esquema de funcionamiento de un AG:
!   Se crea una población inicial generando individuos
aleatoriamente.
!   Repetimos hasta que se alcance el individuo óptimo o el
número máximo de generaciones:
!   Asignar un valor de supervivencia a cada miembro de la
población.
!   Seleccionar a un conjunto de individuos que actuarán como
padres usando como criterio su probabilidad de supervivencia.
!   Emparejar un grupo de padres para crear desdendencia.
!   Combinar la descendencia con la población actual para crear
nueva población.
Implementación de los AG !   Los AG se adaptan específicamente a los problemas que
Implementación de los AG !   Los AG se adaptan específicamente a los problemas que

Implementación de los AG

!   Los AG se adaptan específicamente a los problemas que van a resolver. !
!   Los AG se adaptan específicamente a los problemas
que van a resolver.
!   No hay un marco teórico genérico para aplicarlo a
todos los problemas.
!   Es difícil establecer dicho marco.
!   Si es muy genérico, resulta trivial.
!   Si es muy específico, no se puede adaptar a todos los
problemas.
Aplicaciones !   Optimización de una función simple. !   Los cromosomas son vectores numéricos
Aplicaciones !   Optimización de una función simple. !   Los cromosomas son vectores numéricos

Aplicaciones

!   Optimización de una función simple. !   Los cromosomas son vectores numéricos que
!   Optimización de una función simple.
!   Los cromosomas son vectores numéricos que
representan el rango de variación.
!   La función de selección es el propio valor de f(x).
!   El resultado se muta con una probabilidad dada.
Aplicaciones !   Problema del viajante. !   Cada cromosoma es un vector con una
Aplicaciones !   Problema del viajante. !   Cada cromosoma es un vector con una

Aplicaciones

!   Problema del viajante. !   Cada cromosoma es un vector con una permutación
!   Problema del viajante.
!   Cada cromosoma es un vector con una
permutación de todas las ciudades, lo cual
representa un camino para visitarlas todas.
!   La función de selección depende de los pesos de
los distintos arcos del grafo.
!   Se muta el vector (se intercambian algunos de sus
elementos) con una probabilidad dada.
Uso del paradigma funcional !   Ventajas !   La definición de AG se adapta
Uso del paradigma funcional !   Ventajas !   La definición de AG se adapta

Uso del paradigma funcional

!   Ventajas !   La definición de AG se adapta naturalmente al paradigma funcional.
!   Ventajas
!   La definición de AG se adapta naturalmente al
paradigma funcional.
!   Las acciones que definen un AG (seleccionar,
emparejar y combinar) son funciones a definir.
!   El AG mismo es una función que toma una población
inicial y una semilla aleatoria, devolviendo un
conjunto de poblaciones sucesivas que representan
las distintas generaciones.
Uso del paradigma funcional !   Un lenguaje funcional como Haskell permite el uso de
Uso del paradigma funcional !   Un lenguaje funcional como Haskell permite el uso de

Uso del paradigma funcional

!   Un lenguaje funcional como Haskell permite el uso de estructuras infinitas. !  
!   Un lenguaje funcional como Haskell permite el uso
de estructuras infinitas.
!   El AG puede generar una lista indefinida de
descendientes y la función de recombinación sólo
usará aquellos descendientes necesarios para
construir la nueva población.
Uso del paradigma funcional !   Ejemplo de función de generación de población procrear ::
Uso del paradigma funcional !   Ejemplo de función de generación de población procrear ::

Uso del paradigma funcional

!   Ejemplo de función de generación de población procrear :: Población -> Prob Población
!
Ejemplo de función de generación de
población
procrear :: Población -> Prob Población
procrear pob = do
padres <- seleccionar pob
hijos <- emparejar padres
combinar pob hijos
Uso del paradigma funcional !   Se usa la mónada Prob para tener control preciso
Uso del paradigma funcional !   Se usa la mónada Prob para tener control preciso

Uso del paradigma funcional

!   Se usa la mónada Prob para tener control preciso sobre la generación de
!   Se usa la mónada Prob para tener control
preciso sobre la generación de números
aleatorios.
!   Prob mantiene varias listas infinitas de números
aleatorios asociados con cada proceso
estocástico, manteniéndolas ocultas al usuario.
!   Esto permite gran control sobre los factores que
determinan el resultado de las ejecuciones del AG.
Visión de futuro !   Desarrollar una marco de trabajo para AG, de manera que
Visión de futuro !   Desarrollar una marco de trabajo para AG, de manera que

Visión de futuro

!   Desarrollar una marco de trabajo para AG, de manera que una misma estructura
!   Desarrollar una marco de trabajo para AG, de
manera que una misma estructura se pueda
instanciar a distintos tipos de problemas.
!   Proporcionar operadores genéticos como
funciones predefinidas y permitir su selección y
utilización mediante un interfaz de usuario.
Visión de futuro !   Realización de una implementación más eficiente que sea capaz de
Visión de futuro !   Realización de una implementación más eficiente que sea capaz de

Visión de futuro

!   Realización de una implementación más eficiente que sea capaz de manejar problemas de
!   Realización de una implementación más
eficiente que sea capaz de manejar problemas
de gran tamaño y complejidad.
!   Una posibilidad sería usar mónadas de estado
(State Monads) para reutilizar el espacio.
!   Explotar el paralelismo inherente a los AG
adaptando el marco a arquitecturas distribuidas.
Conclusiones !   Ventajas del uso de los AG !   Es poco sensible a
Conclusiones !   Ventajas del uso de los AG !   Es poco sensible a

Conclusiones

!   Ventajas del uso de los AG !   Es poco sensible a los
!   Ventajas del uso de los AG
!   Es poco sensible a los mínimos locales, lo cual le
confiere robustez, en contraste con las redes
neuronales clásicas.
!   Asimismo, no depende de las condiciones
iniciales, debido a que se usa búsqueda
estocástica y ésta hace al principio un gran
número de intentos aleatorios.
Conclusiones !   El tiempo de convergencia de los AG es predecible por la naturaleza
Conclusiones !   El tiempo de convergencia de los AG es predecible por la naturaleza

Conclusiones

!   El tiempo de convergencia de los AG es predecible por la naturaleza paralela
!   El tiempo de convergencia de los AG es predecible
por la naturaleza paralela de la búsqueda
estocástica.
!   Funciona de forma paralela, por lo que pueden
usarse en sistemas distribuidos para mejorar más
la velocidad de búsqueda.
Conclusiones !   Inconvenientes del uso de los AG !   No hay un marco
Conclusiones !   Inconvenientes del uso de los AG !   No hay un marco

Conclusiones

!   Inconvenientes del uso de los AG !   No hay un marco teórico
!   Inconvenientes del uso de los AG
!   No hay un marco teórico genérico establecido.
!   Si la población inicial es cercana a la solución
óptima, los GA tardarán más que las técnicas de
resolución tradicionales.
!   El GA perderá mucho tiempo comprobando
soluciones sub-óptimas.
Conclusiones !   Hacen buenas estimaciones de la solución óptima, pero no la calculan exactamente.
Conclusiones !   Hacen buenas estimaciones de la solución óptima, pero no la calculan exactamente.

Conclusiones

!   Hacen buenas estimaciones de la solución óptima, pero no la calculan exactamente. !
!   Hacen buenas estimaciones de la solución óptima,
pero no la calculan exactamente.
!   El usuario debe determinar cómo de cerca está la
solución estimada de la solución real.
!   La proximidad a la solución real dependerá de la
aplicación en concreto.
!   Continuará…
!   Continuará…
!   Continuará…
!   Continuará…