Está en la página 1de 112

Centro de Cálculo, Instituto de Computación

Facultad de Ingeniería, Universidad de la República, Uruguay.

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


Centro de Cálculo, Instituto de Computación
Facultad de Ingeniería, Universidad de la República, Uruguay

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


Algoritmos evolutivos
SOBRE EL CURSO
Sobre el curso

• OBJETIVOS
1. Introducir las técnicas de computación evolutiva
2. Presentar los Algoritmos Evolutivos
3. Explorar el formalismo de los Algoritmos Genéticos como herramienta para
la resolución de problemas de optimización, búsqueda y aprendizaje

• METODOLOGÍA
1. Modalidad semi-presencial
2. Exposiciones teóricas, estudio guiado, reuniones virtuales
3. Resolución de ejercicios prácticos por los estudiantes
4. Realización de un mini proyecto durante el curso
• Grupos de 2 estudiantes

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


Algoritmos evolutivos
SOBRE EL CURSO
Sobre el curso

• HORARIO
• Martes 17:00 hs. Salón A12 (Aulario Massera)
• Jueves 17:00 hs. Salón A12 (Aulario Massera)

• OTROS DETALLES
• 9 créditos
• Sin cupo
• Conocimientos previos exigidos y recomendados:
• Fundamentos de Probabilidad y Estadística
• Fundamentos de Investigación Operativa
• Fundamentos de Programación

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


Algoritmos evolutivos
SOBRE
TEMARIO
EL CURSO
Temario

1. Introducción. Computación Evolutiva


2. Algoritmos Evolutivos: resolución de problemas y modelos
3. Implementación de Algoritmos Evolutivos
4. Fundamentos matemáticos de los Algoritmos Evolutivos
5. Técnicas Avanzadas
6. Otros Algoritmos Evolutivos
7. Algoritmos Evolutivos para Optimización Multiobjetivo
8. Algoritmos Evolutivos y procesamiento paralelo-distribuido
9. Evaluación Experimental de Algoritmos Evolutivos

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


Algoritmos evolutivos
SOBRE EL CURSO
Bibliografía
• General:
• Genetic Algorithms in Search, Optimization and Machine Learning, David
Goldberg, Addison-Wesley Pub. Co , 1989.
• A Genetic Algorithm Tutorial, Darrell Whitley, Technical Report CS-93-103,
Colorado State University.
• An Introduction to Genetic Algorithms (Complex Adaptive Systems), Melanie
Mitchell, The MIT Press, 1996.
• Específica:
• Evolutionary algorithms : the role of mutation and recombination, William
Spears, Springer, Berlin, 2000.
• Multi-objective optimization using evolutionary algorithms, Kalyanmoy Deb,
Wiley, Chichester, 2001.
• Parallelism and Evolutionary Algorithms, E. Alba, M. Tomassini , IEEE
Transactions on Evolutionary Computation, IEEE Press, 6(5):443-462, 2002.
• Efficient and Accurate Parallel Genetic Algorithms, E. Cantú-Paz. Kluwer
Academic Press, 2000.
INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017
Algoritmos evolutivos
PROYECTOS
SOBRE (años
EL CURSO
anteriores)
Proyectos de años anteriores

• Los Algoritmos Evolutivos son técnicas para resolver problemas de


optimización, búsqueda y aprendizaje
• Problemas de optimización en el ámbito de las telecomunicaciones
• Asignación de frecuencias y control de energía en redes inalámbricas
• Diseño de redes de comunicaciones
• Planificación de tareas en entornos de computación heterogéneos
• Enfoque multiobjetivo, entornos dínámicos, entornos no dedicados
• Selección de variables para métodos de clasificación
• Planificación de recorridos de taxis
• Optimización de calendarios deportivos
• Planificación de horarios de clases, consultas de médicos

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


Algoritmos evolutivos
PROYECTOS
SOBRE (años
EL CURSO
anteriores)
Proyectos de años anteriores

• Análisis empírico de técnicas en AEs


• Estudio empírico de operadores de cruzamiento
• Análisis del impacto del paralelismo en la diversidad de las soluciones
• AE y redes neuronales:
• Entrenamiento y evolución de redes para predicción de series temporales
• Bioinformática
• Graph motion planning y caminata de robot bípedo
• Planificación de semáforos
• Predicción de series temporales y planificación de inversiones
• Algoritmos de computación gráfica: raytracing, evolución de autos
• Juegos: Sokoban evolutivo, estrategias para poker, mastermind,
pinball, etc.

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


Algoritmos evolutivos
PROYECTOS
SOBRE
CONTACTOS
EL CURSO
(años anteriores)
Contactos
• Sitio EVA del curso:
• https://eva.fing.edu.uy/course/view.php?id=1049
• Página web del curso:
• http://www.fing.edu.uy/inco/cursos/ae
• E-mail:
• Sergio Nesmachnow (sergion@fing.edu.uy)
• Renzo Massobrio (renzom@fing.edu.uy)
• Santiago Iturriaga (siturria@fing.edu.uy)

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017
1 - Introducción
PROYECTOS
SOBRE
CONTACTOS
EL CURSO
(años anteriores)
Contenido

1. Problemas computacionales y complejidad algorítmica


2. Problemas de optimización
3. Técnicas heurísticas
4. Metaheurísticas

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


1 - Introducción
PROYECTOS
SOBRE
CONTACTOS
EL CURSO
(años anteriores)
Problemas computacionales

• Problemas “sencillos” y problemas “difíciles”


• Sencillos: Ordenamiento de valores, multiplicación de matrices
• Difíciles: problemas combinatorios
• ¿ Cómo evaluar la complejidad computacional ?
• Comportamiento en caso promedio y peor caso.
• Independiente de la arquitectura y lenguaje de programación (a priori)
• Se analiza el orden de magnitud del número de instrucciones de un
algoritmo, en función del tamaño de la entrada
• Un algoritmo de complejidad O(g(n)) ejecutado con datos de tamaño n,
tendrá un tiempo de ejecución menor a |g(n)|

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


1 - Introducción
PROYECTOS
SOBRE
CONTACTOS
EL CURSO
(años anteriores)
Complejidad algorítmica

EXPONENCIAL

HARD
CÚBICO

CUADRÁTICO
} POLINÓMICO
O(np)
INSTRUCCIONES
INSTRUCTIONS

EASY
LINEAR

LOGARITHMIC

TAMAÑO de ENTRADA

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


1 - Introducción
PROYECTOS
SOBRE
CONTACTOS
EL CURSO
(años anteriores)
Clases de complejidad

• Clase P
• Un problema pertenece a la clase P si puede ser resuelto en tiempo
polinomial en una computadora determinística
• Ejemplos: Ordenamiento, búsqueda binaria, multiplicación matricial

• Clase NP
• Un problema pertenece a la clase NP si puede ser resuelto en tiempo
polinomial, pero usando una computadora no determinística
• Fácil de verificar una solución, pero difícil hallarla

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


1 - Introducción
PROYECTOS
SOBREP(años
y NP
CONTACTOS
EL CURSO
anteriores)
Clases P y NP

• La clase P contiene problemas que pueden resolverse de modo


eficiente (rápidamente)
• La clase NP contiene problemas cuya solución puede verificarse de
modo eficiente
• En 1971 se planteó la pregunta: ¿Es P = NP?
• Desde entonces, sigue siendo una pregunta abierta para los teóricos
(es la principal conjetura de la teoría de la computación)
• Se cree que P ≠ NP, pero no ha podido ser demostrado

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


1 - Introducción
PROBLEMAS
PROYECTOS
SOBRE
CONTACTOS
EL CURSO
(años NP
anteriores)
Problemas NP
• Es la clase de los problemas difíciles de resolver
• Ejemplos: TSP, ciclo hamiltoniano, SAT
• TSP (Travelling Salesman Problem)

“Encontrar una permutación que


represente el recorrido de una serie
de ciudades de tal forma que todas
sean visitadas (sólo una vez),
minimizando la distancia total
viajada”

Ejemplo: TSP para doce ciudades de Alemania

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


1 - Introducción
PROYECTOS
SOBRE
CONTACTOS
EL CURSO
(años anteriores)
TSP
• ¿ Es realmente difícil de resolver ?
 Considerando n ciudades (tamaño de la entrada = n), la dimensión del
espacio de búsqueda (permutaciones) es: (n-1)!/2
• Para n=10, hay 181.440 permutaciones posibles
• Para n=12 (caso del ejemplo para Alemania) hay 19.958.400
permutaciones posibles
• Para n=20 hay 60.822.550.204.416.000 permutaciones posibles
• Explorando 1.000 permutaciones por segundo, una búsqueda exhaustiva
demandaría un tiempo estimado de:
 n=10  3 m SE NECESITAN
 n=12  5h 30 m ALGORITMOS
 n=20  1.928.670 años ! MÁS EFICIENTES

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


1 - Introducción
Resolviendo problemas NP-difíciles

Hallar métodos
inteligentes para
su resolución
INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017
1 - Introducción
PROYECTOS
SOBRE
CONTACTOS
EL CURSO
(años anteriores)
Problemas NP

• Es necesario utilizar algoritmos de resolución más eficientes que la


búsqueda exhaustiva, a medida que se incrementa el tamaño del
problema
• La complejidad del algoritmo de resolución del problema se
incrementa de manera superpolinomial con el tamaño de la entrada.
Ejemplo: TSP O(n2*2n)
• Una clase particular de problemas NP son los problemas de
optimización
• Objetivo: hallar la(s) solucione(s) óptima(s) de un problema (de
acuerdo a una función objetivo determinada)

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017
2 - Optimización
PROBLEMAS
PROYECTOS
SOBRE de
EL OPTIMIZACIÓN
CONTACTOS
CURSO
(años anteriores)
Problemas de optimización

• Optimización numérica


Min / Max f ( x )
sujeto a

g i ( x )  0 i  1,..., p

h j ( x )  0 j  1,... , r
 
x son las variables de decisión del problema, x  ( x1 ,..., xk )
 
gi (x ) y h j (x ) son las restricciones (de desigualdad y de igualdad,
respectivamente)

f (x ) es la función a optimizar

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


2 - Optimización
PROBLEMAS
PROYECTOS
SOBRE de
EL OPTIMIZACIÓN
CONTACTOS
CURSO
(años anteriores)
Problemas de optimización

• Optimización combinatoria
• Variables de decisión discretas (dominio discreto)
• Soluciones se representan como permutaciones o combinaciones
• Ejemplo: TSP
• Problemas de búsqueda
• Encontrar un elemento que cumple un conjunto de propiedades, entre un
conjunto finito de elementos
• Pueden formularse como problemas de optimización (minimizar la distancia
al elemento buscado)

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


2 - Optimización
PROBLEMAS
PROYECTOS
SOBRE de
EL OPTIMIZACIÓN
CONTACTOS
CURSO
(años anteriores)
Técnicas de resolución

• Técnicas analíticas
• Aplicables a un número muy reducido de problemas

• Métodos exactos
• Utilizan técnicas de enumeración total o parcial:
• Backtracking
• Programación dinámica
• Branch & Bound
• Basados en Programación Matemática:
• Método Simplex
• Método del punto interior
• Únicos errores: redondeo (y eventualmente truncamiento)

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


2 - Optimización
PROBLEMAS
PROYECTOS
SOBRE de
EL OPTIMIZACIÓN
CONTACTOS
CURSO
(años anteriores)
Técnicas de resolución

• Métodos de aproximación
• Encuentran una solución con error conocido a priori
• Error fijo o derivado de un compromiso con el esfuerzo computacional
requerido (mayor esfuerzo computacional, menor error)
• Ejemplos: métodos markovianos, inferencia probabilística

• Métodos aleatorios
• Con cierta probabilidad, encuentran una solución aproximada al problema,
con un error máximo dado
• Ejemplos: método Monte Carlo, método Las Vegas

• Heurísticas y metaheurísticas
-

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017
3 - Heurísticas
PROBLEMAS
PROYECTOS
SOBRE de
EL OPTIMIZACIÓN
CONTACTOS
CURSO
(años anteriores)
Conceptos

• Métodos de resolución basados en procedimientos conceptualmente


simples para encontrar soluciones de buena calidad (no
necesariamente hallan la solución óptima) a problemas difíciles, de un
modo sencillo y eficiente
• Los procedimientos de búsqueda a menudo están basados en el
sentido común o emulación de fenómenos bien conocidos
• “Heurística” deriva del griego heuriskein (υρισκειν), que significa
“encontrar” o “descubrir”

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 - Heurísticas
PROBLEMAS
PROYECTOS
SOBRE de
EL OPTIMIZACIÓN
CONTACTOS
CURSO
(años anteriores)
Heurísticas constructivas

• Agregan iterativamente elementos para construir una solución


• Hasta que se completa una solución o se llega a algún criterio de
parada
• El criterio de construcción es clave !
• Ejemplo: métodos greedy

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 - Heurísticas
PROBLEMAS
PROYECTOS
SOBRE de
EL OPTIMIZACIÓN
CONTACTOS
CURSO
(años anteriores)
Heurísticas constructivas: método greedy

• greedy = “ávido” o “goloso”


• Idea: tratar de construir una solución seleccionando iterativamente
elementos componentes de menor costo
• Para algunos problemas con estructura particular, la solución
construida es una solución óptima (en general, NO es el caso)

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 - Heurísticas
PROBLEMAS
PROYECTOS
SOBRE de
EL OPTIMIZACIÓN
CONTACTOS
CURSO
(años anteriores)
Ejemplo: greedy para el TSP

• Método greedy para la instancia del TSP definida por el grafo:

7
3
5
10

3 5
2
3
7
o
Origen del ciclo

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 - Heurísticas
PROBLEMAS
PROYECTOS
SOBRE de
EL OPTIMIZACIÓN
CONTACTOS
CURSO
(años anteriores)
Ejemplo: greedy para el TSP

• Greedy - Paso 1:

7
3
5
10

3 5
2
3
7
o

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 - Heurísticas
PROBLEMAS
PROYECTOS
SOBRE de
EL OPTIMIZACIÓN
CONTACTOS
CURSO
(años anteriores)
Ejemplo: greedy para el TSP

• Greedy - Paso 2:

7
3
5
10

3 5
2
3
7
o

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 - Heurísticas
PROBLEMAS
PROYECTOS
SOBRE de
EL OPTIMIZACIÓN
CONTACTOS
CURSO
(años anteriores)
Ejemplo: greedy para el TSP

• Greedy - Paso 3:

7
3
5
Arista no admitida 10

×
3 5
2
3
7
o

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 - Heurísticas
PROBLEMAS
PROYECTOS
SOBRE de
EL OPTIMIZACIÓN
CONTACTOS
CURSO
(años anteriores)
Ejemplo: greedy para el TSP

• Greedy - Paso 3:

7
3
5
10

3 5
2
3
7
o

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 - Heurísticas
PROBLEMAS
PROYECTOS
SOBRE de
EL OPTIMIZACIÓN
CONTACTOS
CURSO
(años anteriores)
Ejemplo: greedy para el TSP

• Greedy - Paso 4:

7
3
5
10

3 5
2
3
7
o

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 - Heurísticas
PROBLEMAS
PROYECTOS
SOBRE de
EL OPTIMIZACIÓN
CONTACTOS
CURSO
(años anteriores)
Ejemplo: greedy para el TSP

• Greedy - Paso 5:

7
3
5
10

3 5
2
3
7
Solución construida:
o
costo 22

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 - Heurísticas
PROBLEMAS
PROYECTOS
SOBRE de
EL OPTIMIZACIÓN
CONTACTOS
CURSO
(años anteriores)
Ejemplo: greedy para el TSP

• Sin embargo, es posible obtener:

7
3
5
10

3 5
2
3
7
Solución alternativa:
o
costo 20

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 - Heurísticas
Búsqueda local (local search, LS)

• Mejor alternativa para la optimización. Obtiene mejores resultados


que los métodos greedy
• Como contrapartida, requiere mayor esfuerzo computacional
• Vecindad: N : S  2 a cada solución s se le asigna un conjunto de
S

vecinos N ( s )  S
• En general, se define N (s ) especificando los cambios sobre s para
obtener sus vecinos (movimiento)
• Se reemplaza la solución inicial por una mejor solución de su vecindad

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 - Heurísticas
Búsqueda Local Iterada (IILS)

• Búsqueda iterativa de mejores soluciones en una estructura de


vecindades N(s)
• N(s): soluciones que pueden alcanzarse a través de una transformación
(movimiento) en s
• El algoritmo se detiene luego de encontrar un óptimo local/global o
luego de realizar un número dado de iteraciones óptimo
f(x)
N(s*)

s
dirección
de la búsqueda
x
INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017
3 - Heurísticas
Búsqueda Local Iterada (IILS)

• Qué tan efectiva es la Búsqueda local Iterada ?


a – función unimodal b – función multimodal
óptimo óptimo
global global
f(X) f(x)
N(s) N(s)
óptimo
local

s
s
dirección dirección
de la búsqueda de la búsqueda

x x
• La Búsqueda local Iterada puede quedar atrapada en óptimos locales

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017
4 – Metaheurísticas
Conceptos

• Métodos eficientes y precisos para hallar soluciones de calidad a


problemas de optimización complejos

• “High-level strategy that combines a set of underlying simpler operation


techniques (usually heuristics) aimed at obtaining a more powerful
procedure” (Glover, 1986)

• Principales características:
1. Estrategias que guían la búsqueda, usualmente empleando heurísticas
subordinadas
2. Admiten una descripción abstracta de alto nivel
3. Tienen utilización genérica (no específica para una clase de problemas)
4. Deben ser instanciadas para clase concreta de problemas a resolver

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas
Principales objetivos

• Hallar eficientemente (i.e. rápidamente) soluciones de buena calidad


(con valores de la función objetivo cercanos al óptimo)
• Cubrir el espacio de soluciones sin quedar atrapadas en zonas
específicas (especialmente óptimos locales)

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas
Un ejemplo: Simulated Annealing

• Heurística: Búsqueda Local Iterada


• Búsqueda en la vecindad de la solución actual
• Si se encuentra una mejor solución, reemplazar a la actual
• Desventaja: puede quedar atrapada en un óptimo local

• Metaheurística: Simulated Annealing (SA)


• Búsqueda local iterada, pero una solución peor que la actual
puede ser aceptada de acuerdo a una cierta probabilidad

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas
Simulated annealing

Idea clave: permite


seleccionar peores soluciones
búsqueda que la actual, tratando de
local escapar de óptimos locales

moverse a s* permite
escapar del óptimo local
SA combina una heurística
con un procedimiento de
alto nivel que permite
aceptar peores soluciones
INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017
4 - Metaheurísticas
Simulated annealing

Combinar resulta siempre una buena idea, no es así ?

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas
Características y conceptos
• Principales objetivos:
1. Hallar (eficientemente) soluciones de buena calidad para problemas de
optimización
2. Cubrir el espacio de búsqueda sin quedar atrapadas en zonas específicas
• Dos conceptos fundamentales
• Exploración del espacio de búsqueda o diversificación
• Explotación de bunas soluciones encontradas o intensificación

explotación
exploración

cubrir el espacio de búsqueda hallar soluciones de gran calidad


INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017
4 - Metaheurísticas
Metaheurísticas y clasificación
• Lista de ejemplos (no exhaustiva)
• Simulated Annealing • Existen múltiples criterios de
• Tabu Search clasificación
• Greedy Randomized Adaptive
• Considerando el número de
Search Procedure
soluciones tentativas:
• Variable Neighborhood Search basadas en trayectoria vs.
• Guided Local Search basadas en población
• Ant Colony Optimization
• Particle Swarm Optimization
• Evolutionary Algorithms

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas
Basadas en trayectoria y en población
• Basadas en trayectoria: solución única
• Una única solución que se reemplaza en cada paso
• Define una trayectoria en el espacio de búsqueda
• Ejemplos:
• Simulated annealing, Tabu search, etc.

• Basadas en población: usan un conjunto de soluciones (la población)


• Algunas soluciones se reemplazan en cada iteración
• Permite la recombinación de soluciones
• Ejemplos :
• Ant Colony Optimization
• Particle Swarm Optimization
• Algoritmos Evolutivos, etc.

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas
Metaheurísticas y clasificación
• Otros criterios de clasificación
• Inspiradas en la naturaleza o no
• Aleatorias/deterministas
• Constructivas o no
• Con o sin memoria
• Implícitas/explícitas/directas

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas

Slides 51 a 61 y texto “Essentials of metaheuristics”


http://cs.gmu.edu/~sean/book/metaheuristics/

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas
Lista (no exhaustiva) de ejemplos

• Simulated Annealing (SA)


• Tabu Search (TS)
• Greedy Randomized Adaptive Search Procedure (GRASP)
• Variable Neighbourhood Search (VNS)
• Guided Local Search (GLS)
• Iterated Local Search (ILS)
• Scatter Search (SS)
• Path Relinking (PR)
• Ant Colony Optimization (ACO)
• Particle Swarm Optimization (PSO)
• Computación Evolutiva (CE): variantes y derivados

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas
Simulated annealing

• Basado en el procedimiento físico del enfriamiento de los cristales


• Idea: permitir movimientos a soluciones que empeoren la función
objetivo para escapar a óptimos locales
• La probabilidad de realizar ese tipo de movimientos decrece durante la
búsqueda
• Las soluciones que mejoran la función objetivo siempre son aceptadas
• Es un algoritmo probabilístico de búsqueda local
• Es una técnica aleatoria, que mantiene un único individuo, sin
memoria, y basada en trayectoria

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas
Tabu Search

• Búsqueda local con memoria a corto plazo para escapar de mínimos


locales y evitar ciclos
• Algunas soluciones examinadas recientemente son incluidas en la
memoria y se vuelven tabú (prohibidas) al tomar decisiones acerca
del siguiente punto de búsqueda
• Generalmente, la lista tabú se maneja en forma FIFO
• Es determinística, aunque se le pueden agregar elementos
probabilísticos
• Es una técnica determinística (en general), que mantiene un único
individuo, con memoria, y basada en trayectoria

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas
Greedy Randomized Adaptive Search Procedure (GRASP)

• Combina procedimientos constructivos y de búsqueda local


• Es un procedimiento iterativo en dos etapas: una de construcción de la
solución y otra de mejora
• La construcción se realiza a partir de la selección de subpartes en
forma aleatoria de conjuntos de candidatos
• La etapa de mejora consiste en aplicar búsqueda local a la solución
construida
• Es una técnica aleatoria, que mantiene un único individuo, sin
memoria, y constructiva

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas
Variable Neighbourhood Search

• Se define un conjunto de estructuras de vecindad (en general se utilizan


vecindades de cardinalidad creciente)
• La técnica opera en tres fases
- Shaking: seleccionar aleatoriamente una solución s’ perteneciente a la
vecindad k-ésima de la presente solución s
- Búsqueda local: s’’ partiendo de s’
- Movimiento: se acepta s’’ si mejora s
• Una mala solución en una vecindad puede ser buena en otra
• Existen múltiples variantes:
- Variable Neighbourhood Descent (VND)
- Variable Neighbourhood Descomposition Search (VNDS)
- Skewed Variable Neighbourhood Search (SVND)
• Es una técnica aleatoria, que mantiene un único individuo, sin memoria, y
constructiva

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas
Guided Local Search

• La búsqueda se conduce a través de cambios dinámicos en la


función objetivo
• Idea: salir de óptimos locales, empeorando el óptimo local,
mediante el cambio de la función objetivo
• Basado en características o propiedades de la solución que se usan
para discriminar una solución de otra
• Es una técnica determinística, que mantiene un único individuo, sin
memoria, y basada en trayectoria

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas
Iterated Local Search (con perturbación)

• Consiste en una aplicación iterativa de una búsqueda local


• Se aplica la búsqueda local a una solución inicial hasta encontrar un
óptimo local
• Luego se perturba la solución (se aplica un movimiento altamente
disruptivo) y se realiza nuevamente la búsqueda local
• Es una técnica aleatoria, que mantiene un único individuo, sin
memoria y basada en trayectoria

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas
Scatter Search

• Se genera un conjunto de soluciones combinando subconjuntos de un


conjunto de soluciones de referencia (factibles)
• Las soluciones generadas no necesariamente son factibles, deben
factibilizarse (mediante un algoritmo de “reparación”) y pueden ser
mejoradas mediante búsqueda local
• El conjunto de referencia se actualiza con las soluciones generadas
• Las soluciones se codifican como puntos en un espacio euclideano. Las
nuevas soluciones se obtienen mediante combinaciones lineales de las
soluciones de referencia (se permite utilizar pesos positivos y negativos,
siendo posible salir de la región factible
• Es una técnica poblacional, sin memoria, y constructiva. Puede ser
determinística ó aleatoria (de acuerdo al procedimiento que genera las
nuevas soluciones)

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas
Path Relinking

• Surgió como una generalización de Scatter Search


• El espacio euclideano se sustituye por espacios de vecindades. En este
caso, las combinaciones lineales son caminos entre soluciones en el
espacio de vecindades
• Caminos habilitados: desde la solución inicial los movimientos deben
introducir sucesivamente atributos seleccionados en una búsqueda
guiada
• Al igual que SS, es una técnica poblacional, sin memoria, y constructiva.
Puede ser determinística ó aleatoria (de acuerdo al procedimiento que
genera las nuevas soluciones)

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas
Ant Colony Optimization

• Se basan en el comportamiento social de las hormigas (cada hormiga


tiene capacidades restringidas, pero en conjunto logran un
comportamiento “inteligente”)
• Existe comunicación indirecta a través de sustancia química (feromona)
que sirve de referencia a otras hormigas
• Idea del algoritmo: cada hormiga artificial construye una solución
agregando componentes a una solución parcial en consideración
• La decisión sobre qué componentes agregar es probabilística, a partir de
la feromona depositada y un factor heurístico (para asegurar la
exploración)
• Al terminar de construir la solución, la regla de actualización incrementa
la feromona en las componentes con “mejor calidad”
• Es una técnica aleatoria, poblacional, con memoria, y constructiva

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas
Particle Swarm Optimization

• Técnica inspirada en el comportamiento de los enjambres de aves e


insectos
• Si un insecto encuentra un camino atractivo, el resto del enjambre lo
puede seguir rápidamente, incluso si están en el lado opuesto del
enjambre
• Se modela con partículas que tienen atributos de posición y velocidad
en un espacio multidimensional
• Las partículas se mueven en ese espacio y recuerdan la mejor posición
que conocen
• Las posiciones de mejor calidad son comunicadas, y las partículas
ajustan sus atributos en base a ellas
• Es una técnica aleatoria, poblacional, sin memoria, y basada en
trayectoria

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 - Metaheurísticas
Computación evolutiva

• Técnicas de optimización que trabajan sobre una población de


soluciones que evoluciona mediante mecanismos de selección y
construcción de soluciones candidatas por recombinación de
características de las soluciones anteriores
• Etapas:
- Evaluación de la función de fitness (evalúa calidad de las soluciones)
- Selección de individuos adecuados (de acuerdo al fitness)
- Aplicación de operadores evolutivos
- Reemplazo o recambio generacional
• Múltiples variantes y derivados: Algoritmos Genéticos, Programación
Evolutiva, Estrategias de Evolución, Algoritmos Meméticos, Algoritmos
de Estimación de Distribuciones, etc.
• Son técnicas aleatorias, poblacionales, sin memoria, y constructivas

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


5 - Metaheurísticas
Aplicaciones
• La mayoría de los problemas complejos del mundo real no pueden
resolverse usando algoritmos en tiempo polinomial
• En muchas aplicaciones prácticas, no es posible ni siquiera determinar la
existencia de una solución eficiente
• Hay muchos problemas para los cuales el mejor algoritmo que se conoce
requiere tiempo exponencial

HEURÍSTICAS Y METAHEURÍSTICAS CONSTITUYEN ALTERNATIVAS PARA


HALLAR SOLUCIONES DE BUENA CALIDAD EN TIEMPOS RAZONABLES

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


Centro de Cálculo, Instituto de Computación
Facultad de Ingeniería, Universidad de la República, Uruguay

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


Algoritmos evolutivos
SOBRE EL CURSO
Tema 2 – Computación evolutiva

"I have called this principle, by which, each slight variation,


if useful, is preserved, by the term of Natural Selection.
………
The expression often used by Mr. Herbert Spencer of the Survival of
the Fittest is more accurate, and is sometimes equally convenient."

CHARLES DARWIN
On the Origin of Species by means of Natural Selection, 1859.

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


Computación evolutiva
SOBRE EL CURSO
Contenido
1. Evolución natural y neo-darwinismo
2. Computación evolutiva
3. Técnicas de computación evolutiva
• Programación genética
• Estrategias de evolución
• Algoritmos genéticos
4. Análisis comparativo
• Comparación entre técnicas de computación evolutiva
• Comparación con respecto a otras técnicas
• Análisis de ventajas y desventajas de su aplicación
5. Teorema No Free Lunch

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017
1 - Teorías evolutivas
SOBRE EL CURSO
Teoría de la evolución
• Teoría científica que explica la diversidad de formas de vida en la Tierra
• Soportada por los hechos y las evidencias
• Nunca refutada por ningún argumento o evidencia

• Es una de las teorías científicas FORMIDABLES (Penrose, 2000).

“Revolución científica” Evolución Revolución de la física


Astronomía, Física Ciencias Naturales Física
Copérnico, Kepler, Galileo, Newton Lamarck, Darwin, Wallace Einstein, Bohr, Schrodinger

1500 1600 1700 1800 1900 2000

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


1 - Teorías evolutivas
SOBRE EL CURSO
Teoría de la evolución

“On the Origin of Species by Means


of Natural Selection, or the
Preservation of Favoured Races in
the Struggle for Life”

Charles Darwin, 1859

Charles Darwin
INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017
1 - Teorías evolutivas
SOBRE EL CURSO
Teoría de la evolución: los pioneros
• George Louis Leclerc (Conde de Buffon)
• Primera referencia anti-creacionista: Histoire Naturelle
(17491788, 50 volúmenes)
• A partir de las similitudes entre el hombre y los simios,
especuló sobre la existencia de un ancestro común
• No describió un mecanismo responsable de los cambios G.L. Leclerc
orgánicos; creía que el ambiente influía y los provocaba (Buffon)

• Pierre Antoine de Monet (Chevalier de Lamarck)


• Elaboró la primera teoría evolutiva (el Lamarckismo), a
principios del siglo XIX
• Propuso un mecanismo evolutivo basado en la influencia del
medio ambiente y postuló la transmisión de las características
adquiridas durante la vida a los individuos descendientes P.A. de Monet
(Lamarck)

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


1 - Teorías evolutivas
SOBRE EL CURSO
Teoría de la evolución

• Los sistematizadores
• Charles Darwin y
Alfred Russel Wallace

• Plantearon el concepto de evolución


de las especies a través de un lento Charles Darwin
proceso de selección natural

Alfred Wallace
INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017
1 - Teorías evolutivas
SOBRE EL CURSO
Teoría de la evolución

• Los continuadores
• Gregor Mendel describió las leyes que rigen la
herencia genética en 1865. Sus ideas fueron
relegadas hasta 1900

Gregor Mendel
• August Weismann desarrolló en 1892 una
teoría sobre la transmisión de información
hereditaria a través del germoplasma

August Weismann

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


1 - Teorías evolutivas
SOBRE EL CURSO
Neo-darwinismo

• Teoría evolutiva que combina las ideas de Darwin-Wallace,


Weismann y Mendel

• Explica la vida a través de los conceptos de:


• Competencia entre individuos • Transmisión hereditaria
• Selección natural • Reproducción y mutación

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


"Evolution is cleverer than you are"
FRANCIS CRICK
Elbow Room: the varieties of free will worth wanting
D. Dennett, 1984

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


2 – Computación evolutiva
SOBRE EL CURSO
Conceptos

• Metaheurísticas que emulan la evolución biológica


• Interpretan la naturaleza como una formidable maquinaria de
resolución de problemas
• Aplican un mecanismo análogo a los procesos evolutivos
naturales, para resolver problemas de búsqueda y optimización
• Trabajan con una población (de representaciones) de soluciones
• Principios: selección natural (aptitud), reproducción
(recombinación y mutación) y diversidad genética

• Siguen la idea de la supervivencia de los


individuos más aptos, evaluando la aptitud
de acuerdo al problema a resolver, mediante
una función de fitness

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


2 – Computación evolutiva
SOBRE EL CURSO
Reseña histórica
• Los programas “autoreplicables” y “evolutivos” fueron sugeridos desde los
inicios de la era de la computación, entre 1948 y 1966.
• Alan Turing investigó las relaciones sobre evolución natural y
aprendizaje. Propuso desarrollar programas automodificables,
capaces de jugar ajedrez y simular otras actividades inteligentes
sencillas, utilizando técnicas evolutivas
Alan Turing
• Neumann János propuso mecanismos evolutivos para
implementar autómatas con poder computacional equivalente a
máquinas de Turing. Conjeturó sobre poblaciones de autómatas
trabajando cooperativamente y comunicándose entre sí.
(“Teoría de autómatas autorreplicables”, inconcluso, 1966)
Neumann János

Slides 77-82 y páginas 7-12 en http://www.fing.edu.uy/~sergion/Tesis.pdf


INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017
2 – Computación evolutiva
SOBRE EL CURSO
Reseña histórica
• Nils Barricelli (Princeton, entre 1953–1956) desarrolló las
primeras simulaciones de un sistema evolutivo en una
computadora digital. Diseñó un modelo computacional para
la evolución darwiniana y estudió el rol de la simbiogénesis
en el origen y desarrollo de la vida
• Implementó sobre código de máquina un universo de 512
celdas a ser ocupadas por números de 8 bits, cuya
propagación era gobernada por un conjunto de reglas
evolutivas
• Barricelli sentó varios precedentes: selección por aptitud y Nils Barricelli
operador probabilístico de mutación, necesidad y utilidad de
la recombinación

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


2 – Computación evolutiva
SOBRE EL CURSO
Reseña histórica

• George Friedman (1956) formuló una propuesta de aplicación de


las técnicas evolutivas a la robótica, para evolucionar circuitos de
control
(“His MS Thesis on Selective Feedback Computers was the first
identified paper published in the field of Evolutionary Computation”). George Friedman
Bio at MIT's Engineering Systems Division

• George Box (1957) propuso un enfoque evolutivo para la optimización


en producción industrial (EVOP–Evolutionary Operation), basado en
mecanismos dinámicos para ajustar variables de control
• Alexander Fraser (1957) publicó trabajos sobre la evolución de
sistemas biológicos en una computadora digital
• Friedberg (1958) aplica aprendizaje por recompensa para evolucionar
instrucciones. Enfoque criticado desde la IA
INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017
2 – Computación evolutiva
SOBRE EL CURSO
Reseña histórica
• Woodrow Bledsoe y Hans Bremermann (1960–1961) fueron precursores
del concepto de algoritmos evolutivos. Interpretaron la evolución como
un proceso de optimización y la aplicaron para mejorar algoritmos de
reconocimiento de patrones con redes neuronales
• Sugirieron la idea de codificación binaria, el uso de un valor de aptitud y el
trabajo con poblaciones. Notaron la importancia de un operador de
mutación para evitar estancamiento en óptimos locales
• En 1965 Bremermann et al. presentaron el primer resultado teórico sobre
la operativa de los algoritmos evolutivos, al determinar la probabilidad de
mutación óptima para resolver problemas linealmente separables
• Newell y Simon (1963) propusieron el General Problem Solver, capaz de
resolver sencillos problemas utilizando evolución guiada por heurísticas
especificadas por el usuario. Primer abordaje evolutivo genérico,
independiente del problema y dominio de aplicación

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


2 – Computación evolutiva
SOBRE EL CURSO
Reseña histórica
• Ingo Rechenberg propuso en 1965 las estrategias de evolución
(Evolutionsstrategie), que consisten en un método de ajustes
discretos aleatorios inspirado en el mecanismo de mutación que
ocurre en la naturaleza
• En 1966, Fogel, Owens y Walsh concibieron el uso de la evolución
simulada en la solución de problemas mediante la técnica que dió
origen a la programación genética
• Durante la década de 1960 John Holland planteó los “planes
reproductivos” y “adaptativos” que imitan el proceso de la
evolución. En 1975 su propuesta se formalizó en los algoritmos
genéticos

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


2 – Computación evolutiva
SOBRE EL CURSO
Reseña histórica
• La década de 1980 fue testigo de la maduración de las
técnicas de computación evolutiva
• En 1985 se desarrolla la primer conferencia del área (ICGA)
• En 1986, Hicklin y Fujiki evolucionaron expresiones
condicionales LISP con el objetivo de resolver problemas en
teoría de juegos
• David Goldberg publicó en 1989 el primer texto
sistematizador, que presenta los algoritmos genéticos, sus
fundamentos teóricos y una variada gama de aplicaciones.
• En el mismo año, John Koza propuso una codificación de
árbol para representar programas, con un operador de cruce
que intercambia sub-árboles, técnica que posteriormente, se
denominó programación genética

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


2 – Computación evolutiva
SOBRE EL CURSO
Reseña histórica

• A inicios de la década de 1990, Thomas Ray desarrolló un simulador en


el que evolucionaban programas en lenguaje ensamblador.
• Los programas competían por ciclos de CPU, a la vez que intentaban
reproducirse (copiarse en la memoria de la máquina)
• Se partía de un programa único con la capacidad de auto-replicarse, a
partir del cual se generaban nuevos segmentos de código, que podían
subdivirse para dar origen a nuevos segmentos de código
• Es uno de los pocos intentos por simular un “ecosistema” con el único
propósito de observar los comportamientos que emergen de la dinámica
evolutiva
• La propuesta sugirió un nuevo rumbo (aún poco explorado) para la
computación evolutiva

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


2 – Computación evolutiva
SOBRE EL CURSO
Definición y conceptos
• Engloba a un amplio conjunto de técnicas de resolución que siguen un
mecanismo análogo a los procesos de evolución natural
• Esquema genérico de un algoritmo evolutivo (AE) trabajando sobre
una población P
Inicializar(P(0));
generacion = 0;
mientras (no CriterioParada) hacer
Evaluar(P(generacion));
Padres = Seleccionar(P(generacion));
Hijos = Aplicar Operadores Evolutivos(Padres);
NuevaPoblacion = Remplazar(Hijos,P(generacion));
generacion++;
P(generacion) = NuevaPoblacion;
fin
retornar Mejor Solución Encontrada

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


2 – Computación evolutiva
SOBRE EL CURSO
Definición y conceptos
• Un AE trabaja sobre una población de individuos que representan
soluciones potenciales al problema a resolver
• La representación (individuo) es el genotipo, la solución el fenotipo

• Una función de fitness evalúa los individuos de acuerdo a su adecuacion


para la resolución del problema

• La evolución consiste en un ciclo que consta de cuatro etapas:


1. Evaluación: se asigna un valor de fitness a cada individuo
2. Selección: se determinan candidatos adecuados para la generación de la
nueva generación
3. Aplicación de los operadores evolutivos: se genera un conjunto de
descendientes a partir de los individuos seleccionados, mediante
operadores que emulan la evolución natural
4. Reemplazo: mecanismo que realiza el recambio generacional

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


2 – Computación evolutiva
SOBRE EL CURSO
Definición y conceptos
• La población es inicializada mediante un mecanismo aleatorio o guiado
por heurísticas específicas
• Diversas políticas de seleccción y reemplazo permiten definir las
características del algoritmo evolutivo
• Privilegiar los individuos más adaptados (elitismo), aumentar la presión
selectiva, incrementar la diversidad genética, etc.

• Los operadores evolutivos determinan el mecanismo de exploración del


espacio de búsqueda del problema
• Amplia gama: recombinación y mutación los más difundidos
• Determinan las diferentes variantes de AE

• La condición de parada determina la finalización del AE


• Número de generaciones, variación de valores de fitness, estimaciones del
error cometido, etc.

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


2 – Computación evolutiva
SOBRE EL CURSO
Paradigmas
• Tres paradigmas fundamentales:

• Algoritmos genéticos (Genetic algorithms – GA)


• Programación genética (Genetic programming – GP)
• Evolución de programas (estucturas con contenido semántico)
• Evolución basada en selección estocástica y mutación

• Estrategias de evolución (Evolution strategies – ES )


• Evoluciona variables (en general números reales), del problema y
de la propia técnica
• Operadores específicos para el trabajo con números reales

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017
3 – Técnicas de Computación Evolutiva
SOBRE EL CURSO
Programación Genética
• Antecedente: programación automática
• “How can computers learn to solve problems without being explicitly
programmed? In other words, how can computers be made to do what is
needed to be done, without being told exactly how to do it?” (A. Samuel, 1959)
• Programación evolutiva (Fogel, Owens y Walsh, 1966): método para
evolucionar comportamientos de autómatas de estado finito para la
predicción de series temporales
• Enfoque “moderno”: usa población y destaca importancia de la selección
• Holland (1975) sugirió utilizar AE con codificaciones que representaran
programas. La idea se reformuló a mediados de 1980, permitiendo
representaciones que extendieron su aplicabilidad
• Programas evolutivos aplicados a heurísticas de optimización (Smith, 1985), al
dilema del prisionero (Fujicki, 1986), y a la evolución de expresiones LISP para
programas capaces de resolver juegos sencillos (Hicklin, 1986)

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 – Técnicas de Computación Evolutiva
SOBRE EL CURSO
Programación Genética
• John Koza (1996) propuso el mecanismo evolutivo de programación
genética para generar programas, extendiendo ideas previas de Cramer
sobre representaciones con árboles de parsing
• A partir de la propuesta de Koza, se investigó sobre la aplicabilidad de la
técnica a un amplio conjunto de problemas, sobre sus fundamentos
teóricos, y el diseño de operadores evolutivos adecuados
• En los últimos años, las líneas de trabajo en el área de la programación
genetica se han concentrado principalmente en aplicaciones como el
entrenamiento de redes neuronales y la evolución de sistemas difusos
• Algunos nuevos fundamentos matemáticos han sido presentados por parte
del creador de las técnicas (Fogel, 1995)

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 – Técnicas de Computación Evolutiva
SOBRE EL CURSO
Programación Genética
• Propone un mecanismo evolutivo para crear (síntesis o inducción) de
programas de alto nivel
• Utiliza un conjunto de terminales para representar variables
independientes del problema, funciones sin parámetros y constantes
• Maneja un conjunto de funciones primitivas que pueden ser aplicadas
sobre los terminales
• Emplea cuatro operadores:
• Reproducción: copia un programa a la nueva población
• Cruzamiento: crea nuevo(s) programa(s) combinando partes de dos
programas existentes
• Mutación: crea un nuevo programa, modificando una parte de un
programa ya existente
• Operación de cambio de arquitectura: selecciona una operación de la
biblioteca de este tipo de operaciones y la aplica a un programa

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 – Técnicas de Computación Evolutiva
SOBRE EL CURSO
Programación Genética
• Ejemplo de codificación

• Representa el programa LISP ( - ( - x 1 ) (* x ( * x x ) ) )


• Orden de evaluacion izquierda-derecha.
• Operadores frecuentemente utilizados
• Aritméticos: +, -, *, /, sin, cos, exp, etc.
• Lógicos o Booleanos: AND, OR, XOR, NOT, NAND, etc.
• Específicos del problema: Max, Min, varianza, etc.

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 – Técnicas de Computación Evolutiva
SOBRE EL CURSO
Algoritmo de Programación Genética
1. Generar una población inicial a partir de la composición de funciones y
terminales en forma aleatoria o heurística
2. Aplicar Iterativamente los pasos a) y b) a la población de programas hasta que
se cumpla un criterio de parada
a) Ejecutar cada programa de la población y asignarle su valor de fitness
b) Crear una nueva población de programas a partir de aplicar las cuatro operaciones,
sobre programas seleccionados con una probabilidad relacionada su fitness
3. Retornar el mejor programa encontrado

Tema 1 en “Aplicación de AE a resolución de problemas”


http://www.fing.edu.uy/inco/cursos/geneticos/ae/2012/clases/pdf/clase13_2012.pdf

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 – Técnicas de Computación Evolutiva
SOBRE EL CURSO
Programación Genética
• Aplicaciones
• Problemas de control
• Planificación
• Regresión simbólica
• Compresión de imágenes
• Robótica
• En la lectura adicional recomendada:
• Diseño de antenas
• Robot para el juego de “crear palabras”

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 – Técnicas de Computación Evolutiva
SOBRE EL CURSO
Estrategias de Evolución
• Propuestas en 1965 para la optimización de parámetros (números reales)
en problemas hidrodinámicos de alto grado de complejidad
• Originalmente modelaba la evolución de los propios valores a optimizar,
sin utilizar codificaciones, generando un único descendiente a partir de un
único individuo padre (modelo (1+1)–ES )
• La base del mecanismo evolutivo es el operador de mutación
• Selección determinística (extintiva): Los peores individuos obtienen
probabilidad cero de ser seleccionados. Un individuo solamente se
mantiene si es mejor que su padre, de lo contrario se elimina
• Para la generación del nuevo individuo se utiliza una fórmula aritmética
,x t 1  x t  N (0,  ) , siendo t la generación y N(0,) una distribución
gaussiana con media 0 y desviación estándar 

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 – Técnicas de Computación Evolutiva
SOBRE EL CURSO
Estrategias de Evolución

• En 1973, Rechenberg extendió su propuesta, introduciendo el modelo


(+1)–ES, que incorpora el concepto de población
• En este modelo,  padres generan un único hijo, que reemplaza en la
población a su peor padre
• En 1975, Schwefel propuso la generación múltiples de hijos
•  padres generan  hijos
• Modelo (+) – ES: selección entre padres e hijos (los  mejores
individuos de la unión de padres e hijos sobreviven)
• Modelo (,) – ES: selección entre hijos únicamente (los  mejores hijos
sobreviven)

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 – Técnicas de Computación Evolutiva
SOBRE EL CURSO
Estrategias de Evolución
• Esquema algorítmico

selección elitista

mutación es
operador principal

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 – Técnicas de Computación Evolutiva
SOBRE EL CURSO
Estrategias de Evolución: resultados teóricos
• Rechenberg formuló una regla para el ajuste de la desviación estándar
de forma determinista durante el proceso evolutivo, asegurando la
convergencia al óptimo.
• Regla del éxito 1/5: establece que la razón entre mutaciones exitosas y el
total de mutaciones debe ser 1/5. En caso de ser mayor, se debe
incrementar la desviación estándar; en caso contrario, se debe decrementar

• En 1996, Thomas Bäck derivó una regla similar para el modelo (,) – ES
(en este caso, la razón es 1/7).

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 – Técnicas de Computación Evolutiva
SOBRE EL CURSO
Estrategias de Evolución
• Auto-Adaptación
• Mecanismo mediante el cual además de evolucionar las variables del
problema, también se evolucionan los parámetros de la técnica
• Las ES suele incluir la autoadaptación de su parámetro de ajuste, la
desviación estándar

• Operadores de recombinación
• No incluidos en las primeras versiones de ES
• Las ES simulan el proceso evolutivo a nivel de los individuos, por lo cual es
posible la recombinación
• Sexuales: actúan sobre dos individuos elegidos aleatoriamente de la
población de padres
• Panmícticos: se elige un padre al azar y se mantiene fijo mientras para
cada componente se elige un segundo padre al azar de entre toda la
población

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 – Técnicas de Computación Evolutiva
SOBRE EL CURSO
Algoritmos Genéticos

• Enfatizan la importancia de del operador de recombinación sobre el de la


mutación. La recombinación opera como operador principal, mientras
que la mutación es un operador secundario
• En general utilizan selección probabilística
• La representación en el algoritmo genético tradicional es la cadena
binaria

1 0 1 1 0 0 1 0 1
• Aplican un esquema orientado a maximizar una función de aptitud o
fitness

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


3 – Técnicas de Computación Evolutiva
SOBRE EL CURSO
Algoritmos Genéticos
• En su versión estándar, el esquema algorítmico de un AG sigue el
patrón estándar de un AE, utilizando como operadores evolutivos
a la recombinación y la mutación
• Originalmente aplicados para trabajar con codificaciones binarias para
problemas de búsqueda en espacios con cardinalidad numerable. Se
han extendido para contemplar codificación real y codificaciones no
tradicionales, dependientes del problema a resolver (grafos, árboles,
estructuras sintácticas)
• Ciertos autores han considerado al mecanismo de selección
proporcional al fitness como característica distintiva de los AG.
Sin embargo, existe una gran diversidad de propuestas que trabajan
con otros mecanismos de selección

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017
4 – Técnicas evolutivas
SOBRE EL CURSO
Comparación de enfoques

• Codificación
• AG codifica las soluciones del problema (trabaja a nivel del genotipo)
• GP y ES trabajan a nivel del fenotipo
• Selección
• En general, AG y GP utilizan selección probabilística
• ES utiliza selección determinística
• Operadores
• En AG la recombinación es el operador principal, la mutación es un
operador secundario. En general son no-adaptativos
• GP tiene recombinación limitada por la semántica
• ES se basa en la mutación, la recombinación es un operador secundario. En
general implementan autoadaptación de sus parámetros

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 – Técnicas evolutivas
SOBRE EL CURSO
Comparación de enfoques

Estrategias de Programación Algoritmos


evolución Genética Genéticos
Representación real real binaria/entera
fitness, vinculado
Función de valor de la función fitness, vinculado con la
con la función
aptitud objetivo función objetivo
objetivo
ninguna
desviaciones estándar varianzas (PE estándar)
Autoadaptación No se aplica
y ángulos de rotación
Coeficientes de
correlación (meta-PE)
gausiana, operador inversión de bits,
Mutación específica
principal operador secundario

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 – Técnicas evolutivas
SOBRE EL CURSO
Comparación de enfoques

Estrategias de Programación
Algoritmos Genéticos
evolución Genética
determinista probabilística, basada
Selección probabilista extintiva
extintiva en preservación
aritmética/gaussiana n-puntos, uniforme,
Recombinación específica, semántica
operador secundario operador principal
arbitrarias de ninguna límites en el mecanismo
Restricciones
desigualdad dadas por la semántica de codificación
teoría de esquemas,
convergencia global convergencia global para
Teoría para (+)
convergencia global
meta-PE
para AG elitistas

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 – Técnicas evolutivas
SOBRE EL CURSO
Comparación con otras técnicas de búsqueda

• No existe opinión unánime sobre las ventajas de las técnicas de


computación evolutiva
• Sin embargo, se han popularizado por su versatilidad para la resolución
de problemas en muy variadas áreas de aplicación
• Características generales:
• Altamente útiles para resolver problemas con espacio de soluciones
de dimensión elevada o no muy bien comprendido de antemano,
donde no es sencillo diseñar operadores específicos de hill-climbing y
búsqueda local
• Útiles en problemas multimodales donde las heurísticas tradicionales
pueden quedar atrapadas en óptimos locales
• Útiles en casos donde no es necesario obtener una solución óptima
al problema, sino que una buena solución aproximada es suficiente

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 – Técnicas evolutivas
SOBRE EL CURSO
Comparación con otras técnicas de búsqueda
• Utilizan una población de soluciones, siendo menos sensibles a quedar
atrapados en óptimos locales que las técnicas de solución única
• La búsqueda del mecanismo evolutivo es independiente de
particularidades del dominio, y permite definir esquemas genéricos
capaces de abordar diferentes clases de problemas. Además, se aplica
sobre representaciones, aumentando la aplicabilidad de los algoritmos
evolutivos a cualquier problema codificable
• No son sensibles a efectos de no linearidad de la función a optimizar u
otras características del problema que usualmente afectan a los
algoritmos estándar de optimización (que utilizan información adicional,
como las técnicas de hill-climbing o las que asumen aspectos de
linearidad, convexidad, diferenciabilidad, etc. sobre la función a
optimizar). Esta característica brinda a los algoritmos evolutivos una
significativa robustez de funcionamiento y de aplicabilidad

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 – Técnicas evolutivas
SOBRE EL CURSO
Comparación con otras técnicas de búsqueda

• No necesitan conocimientos específicos sobre el problema a resolver. El


algoritmo evolutivo funciona como una caja negra que solamente utiliza
como dato de entrada la función de fitness definida para el problema,
para evaluar a los individuos en el ciclo evolutivo.
• Aunque no utiliza información adicional sobre las características del
problema, el conocimiento específico puede incorporarse en la
codificación o en los operadores evolutivos, para mejorar la búsqueda.
• Utilizan operadores probabilísticos (mientras que varias técnicas
tradicionales utilizan operadores determinísticos), sin embargo recorren el
espacio de soluciones en forma más inteligente que la búsqueda aleatoria
(random walk).

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 – Técnicas evolutivas
SOBRE EL CURSO
Principales ventajas
• Simplicidad conceptual del mecanismo de exploración
• Amplia aplicabilidad
• Superiores a métodos tradicionales en muchos problemas reales
• Pueden incorporar conocimiento sobre el dominio del problema
• Pueden hibridizarse con otras técnicas de búsqueda
• Son robustas a los cambios dinámicos
• En general, pueden auto-adaptar sus parámetros
• Explotan de modo natural las ventajas del procesamiento paralelo

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


4 – Técnicas evolutivas
SOBRE EL CURSO
Desventajas

• Han sido duramente criticadas por los investigadores de la IA simbólica


por considerarlas, en forma equivocada, inferiores a las búsquedas
aleatorias
• La programación automática fue considerada una “moda pasajera” y el
enfoque evolutivo fue visto como otro intento por lograr lo imposible
• Los especialistas de IA clásica las consideran “mal fundamentadas” e
“inestables”
• Su alta aplicabilidad las hace poco eficientes para algunos tipos
específicos de problemas (No Free Lunch Theorem)
• Sin incorporar conocimiento del problema, pueden tener problema para
hallar los óptimos globales
• Su eficiencia computacional puede ser pobre, demandando grandes
recursos de cómputo para problemas complejos

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


5 – Técnicas de optimización
SOBRE EL CURSO
No Free Lunch

• Es un teorema en el área de la optimización combinatoria demostrado


por David Wolpert y William Macready en 1995
• Establece que todos los algoritmos que buscan optimizar (hallar un
máximo o un mínimo) una función se comportan de la misma forma al ser
promediados sobre todas las posibles funciones a optimizar
• El teorema justifica por qué ante el conjunto de todos los problemas de
optimización matemáticamente posibles, en promedio, los algoritmos se
comportarán exactamente de la misma manera
• Habitualmente se utiliza como fundamento en contra de la utilización de
algoritmos genéricos de búsqueda (como los algortimos evolutivos)
cuando son utilizados con muy poco conocimiento (e inclusive sin
conocimiento alguno) del dominio del problema

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


5 – Técnicas de optimización
SOBRE EL CURSO
No Free Lunch

• “A general-purpose universal optimization strategy is theoretically


impossible, and the only way one strategy can outperform another is if it
is specialized to the specific problem under consideration" (Ho and
Pepyne, “Simple Explanation of the No-Free-Lunch Theorem and Its
Implications”, 2002)
• Puede ser visto como una justificación para la utilización de la mayor
cantidad posible de conocimiento del dominio y por tanto realizar ajustes
específicos para las diferentes rutinas dependiendo del dominio

Pero ¿ y entonces ? …

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017


5 – Técnicas de optimización
SOBRE EL CURSO
No Free Lunch

• Más allá de la correctitud matemática de la demostración, su enunciado


alude a la totalidad de los problemas de optimización.
• No es posible aplicarlo sobre un subconjunto de las funciones a
optimizar, por lo cual en principio su aplicabilidad es reducida
• ¿Es posible que exista un algoritmo general que sea mejor para los casos
de funciones de aquellos problemas de optimización del mundo real que
son de interés para resolver?
El NFTL no contesta esta pregunta !!

• Una alternativa es hibridizar entre sí una metaheuristica genérica (por


ejemplo, algoritmos evolutivos) con otras que incorporen información
específica del dominio de un determinado problema (por ejemplo, una
búsqueda local)

INTRODUCCIÓN ALGORITMOS EVOLUTIVOS 2017

También podría gustarte