Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porcuitlahuac Ortega Modificado hace 7 años
1
Algoritmos evolutivos
2
Este término es empleado para describir sistemas de resolución de problemas de optimización o búsqueda basados en el ordenador empleando modelos computacionales de algún mecanismo de evolución conocido como elemento clave en su diseño e implementación. Los algoritmos evolutivos combinan la búsqueda aleatoria, dada por las transformaciones de la población, con una búsqueda dirigida dada por la selección.
3
Principales Componentes: Población de individuos, que son una representación (no necesariamente directa) de posibles soluciones. Procedimiento de selección basado en la aptitud de los individuos para resolver el problema. Procedimiento de transformación para construir nuevos individuos a partir de los anteriores.
4
La estructura general de los algoritmos evolutivos responde al siguiente esquema:
5
Población Inicial Generación=0 Condición Terminación Trasformar Población Seleccionar y Reemplazar Generación+1 Si Mejor Individuo No
6
Características La característica fundamental de los algoritmos evolutivos radica en los métodos de generación de soluciones: se parte de un conjunto de soluciones iniciales y se van empleando un conjunto de operadores de búsqueda para ir refinando la solución final. Para realizar dicho refinamiento de las soluciones, se pueden utilizar técnicas clásicas como el seguimiento del gradiente (Hill Climbing) complementadas con mecanismos biológicos de exploración: población de soluciones, operadores genéticos
7
Clasificación Estrategias Evolutivas Programación Evolutiva Algoritmos Genéticos Programación Genética
8
Estrategias Evolutivas Técnica desarrollada por Rechenberg y Schwefel y extendida por Herdy, Kursawe, Ostermeier, Rudolph, y otros, fue diseñada inicialmente con la meta de resolver problemas de optimización discretos y continuos, principalmente experimentales y considerados difíciles. Trabaja con vectores de números reales Dcon desviaciones estándarD que codifican las posibles soluciones de problemas numéricos. Utiliza recombinación o cruce (crossover aritmético), mutación y la operación de selección, ya sea determinística o probabilística, elimina las peores soluciones de la población y no genera copia de aquellos individuos con una aptitud por debajo de la aptitud promedio.
9
Programación Evolutiva Técnica introducida por Fogel y extendida por Burgin, Atmar y otros, inicialmente fue diseñada como un intento de crear inteligencia artificial. La representación del problema se realiza mediante números reales (cualquier estructura de datos), y emplea los mecanismos de mutación y selección. El procedimiento es muy similar a las estrategias evolutivas con la diferencia de que no emplea la recombinación, de tal forma que son denominadas en conjunto algoritmos evolutivos como una manera de diferenciarlas de los algoritmos genéticos.
10
Algoritmos Genéticos Modelan el proceso de evolución como una sucesión de frecuentes cambios en los genes, con soluciones análogas a cromosomas. Trabajan con una población de cadenas binarias para la representación del problema, y el espacio de soluciones posibles es explorado aplicando transformaciones a éstas soluciones candidatas tal y como se observa en los organismos vivientes: cruce, inversión y mutación. Como método de selección emplean en mecanismo de la ruleta (a veces con elitismo). Constituyen el paradigma más completo de la computación evolutiva ya que
11
resumen de modo natural todas las ideas fundamentales de dicho enfoque. Son muy flexibles ya que pueden adoptar con facilidad nuevas ideas, generales o específicas, que surjan dentro del campo de la computación evolutiva. Además, se pueden hibridar fácilmente con otros paradigmas y enfoques, aunque no tengan ninguna relación con la computación evolutiva. Se trata del paradigma con mayor base teórica.
12
El diagrama de funcionamiento de los algoritmos genéticos responde al siguiente esquema :
13
Programación genética: Desarrollada por Koza, los individuos son programas o autómatas de longitud variable, descritos mediante Expresiones-S de LISP representadas habitualmente como árboles, y como operadores de variación emplea crossover y modificación, además de mecanismos de selección.
14
Resumen de las técnicas comentadas
15
Algoritmos genéticos Los algoritmos genéticos son estrategias de búsqueda estocástica basados en el mecanismo de selección natural y en algunos casos se involucran aspectos de genética natural, imitando a la evolución biológica como estrategia para resolver problemas Los algoritmos genéticos difieren de las estrategias de búsqueda convencionales en que estos (los AGs) trabajan sobre un conjunto de potenciales soluciones, llamado población. Esta población esta compuesta de una serie de soluciones llamadas individuos y un individuo esta conformado por una serie de posiciones que representan cada una de las variables involucradas en los procesos de optimización y que son llamados cromosomas.
16
Estos cromosomas están compuestos por una cadena de símbolos que en muchos casos esta presentada en números binarios. En una algoritmo genético cada individuo esta definido como una estructura de datos que representa una posible solución del espacio de búsqueda del problema. Las estrategias de evolución trabajan sobre los individuos, que representan las soluciones del problema, por lo que estos evolucionan a través de generaciones. Dentro de la población cada individuo es diferenciado de acuerdo con su valor de aptitud, que es obtenido usando algunas medidas de acuerdo con el problema a resolver.
17
Para la obtención de las próximas generaciones se crean nuevos individuos, llamados hijos, utilizando dos estrategias de evolución básicas como son el operador de cruce y el de mutación (empleadas generalmente de forma aleatoria). Se seleccionan y copian estos individuos vencedores hacia la siguiente generación con cambios aleatorios, y el proceso se repite. Las expectativas son que la aptitud media de la población se incrementará en cada ronda y, por tanto, repitiendo este proceso cientos o miles de rondas, pueden descubrirse soluciones muy buenas del problema; en otras palabras, tras varias iteraciones el algoritmo converge al individuo con mejor valor de aptitud, el cual representara el óptimo o subóptimo del problema.
18
Los algoritmos genéticos toman para su definición terminología utilizada en Genética Natural y Ciencia Computacional, por lo que la literatura específica es una combinación entre los términos naturales y los artificiales, por esto se debe tener en cuenta: La Estructura de codificación con la cual se construyen las soluciones para el problema se llaman cromosomas. Uno o más cromosomas pueden ser requeridos para conformar una población.
19
El conjunto completo de cromosomas se llama genotipo y un individuo en particular, un organismo resultante, se llama fenotipo. Cada cromosoma contiene una serie de valores individuales llamados genes. Cada gen contiene información valiosa de una variable en particular y su ubicación dentro del individuo se conoce como loco. Los diferentes valores de un gen son llamados alelos.
20
Componentes de un Algoritmo Genético Definición del problema a optimizar Representación para la solución del problema Decodificación del cromosoma Evaluación de un individuo:
21
Este tipo de optimización difiere en muchos aspectos de los procesos convencionales de optimización, ya que los algoritmos genéticos: Trabajan sobre un conjunto codificado de soluciones, no sobre las soluciones mismas. Trabajan sobre un conjunto de soluciones, no sobre una solución única. Utilizan información simple para determinar la aptitud de los individuos, dejando de lado los procesos de derivación u otra información adicional. Usan procesos de transición probabilística para la búsqueda de la solución, no reglas determinísticas.
22
Gracias a estas características, los algoritmos genéticos no requieren información matemática adicional sobre optimización, por lo que pueden tomar otro tipo de funciones objetivo y todo tipo de restricciones (lineales y no lineales) definidas sobre espacios discretos, continuos o espacios de búsqueda combinados.
23
Representación para la solución del problema Para la solución de un problema en particular es importante definir una estructura del cromosoma de acuerdo con el espacio de búsqueda. En el caso de los algoritmos genéticos la representación más utilizada es la representación binaria, debido a su facilidad de manipulación por los operadores genéticos, su fácil transformación en números enteros o reales, además de la facilidad que da para la demostración de teoremas.
25
Decodificación del cromosoma Para determinar el número real que la cadena binaria de caracteres representa. Es importante tener en cuenta que la cadena no representa un número real, sino que este número binario etiqueta un número dentro del intervalo inicialmente fijado.
26
Evaluación de un individuo Nos muestra el valor de aptitud de cada uno de los individuos. Esta aptitud viene dada por una función que es la unión entre el mundo natural y el problema a resolver matemáticamente. Esta función de aptitud es particular para cada problema particular a resolver y representa para un algoritmo genético lo que el medio ambiente representa para los humanos
27
Operadores Evolutivos: Selección Un algoritmo genético puede utilizar muchas técnicas diferentes para seleccionar a los individuos que deben copiarse hacia la siguiente generación, pero abajo se listan algunos de los más comunes. Algunos de estos métodos son mutuamente exclusivos, pero otros pueden utilizarse en combinación, algo que se hace a menudo. Las diferentes variantes en la operación de selección son:
28
Selección elitista: Se garantiza la selección de los miembros más aptos de cada generación. (La mayoría de los AGs no utilizan elitismo puro, sino que usan una forma modificada por la que el individuo mejor, o algunos de los mejores, son copiados hacia la siguiente generación en caso de que no surja nada mejor).
29
Selección proporcional a la aptitud: los individuos más aptos tienen más probabilidad de ser seleccionados, pero no la certeza. Selección por rueda de ruleta una forma de selección proporcional a la aptitud en la que la probabilidad de que un individuo sea seleccionado es proporcional a la diferencia entre su aptitud y la de sus competidores. (Conceptualmente, esto puede representarse como un juego de ruleta: cada individuo obtiene una sección de la ruleta, pero los más aptos obtienen secciones mayores que las de los menos aptos. Luego la ruleta se hace girar, y en cada vez se elige al individuo que “posea” la sección en la que se pare la ruleta).
30
Selección escalada: al incrementarse la aptitud media de la población, la fuerza de la presión selectiva también aumenta y la función de aptitud se hace más discriminadora. Este método puede ser útil para seleccionar más tarde, cuando todos los individuos tengan una aptitud relativamente alta y sólo les distingan pequeñas diferencias en la aptitud. Selección por torneo: se eligen subgrupos de individuos de la población, y los miembros de cada subgrupo compiten entre ellos. Sólo se elige a un individuo de cada subgrupo para la reproducción.
31
Selección por rango: a cada individuo de la población se le asigna un rango numérico basado en su aptitud, y la selección se basa en este ranking, en lugar de las diferencias absolutas en aptitud. La ventaja de este método es que puede evitar que individuos muy aptos ganen dominancia al principio a expensas de los menos aptos, lo que reduciría la diversidad genética de la población y podría obstaculizar la búsqueda de una solución aceptable. Selección generacional: la descendencia de los individuos seleccionados en cada generación se convierte en toda la siguiente generación. No se conservan individuos entre las generaciones.
32
Selección por estado estacionario: la descendencia de los individuos seleccionados en cada generación vuelven al acervo genético preexistente, reemplazando a algunos de los miembros menos aptos de la siguiente generación. Se conservan algunos individuos entre generaciones. Selección jerárquica: los individuos atraviesan múltiples rondas de selección en cada generación. Las evaluaciones de los primeros niveles son más rápidas y menos discriminatorias, mientras que los que sobreviven hasta niveles más altos son evaluados más rigurosamente. La ventaja de este método es que reduce el tiempo total de cálculo al utilizar una evaluación más rápida y menos selectiva para eliminar a la mayoría de los individuos que se muestran poco o nada prometedores, y sometiendo a una evaluación de aptitud más rigurosa y computacionalmente más costosa sólo a los que sobreviven a esta prueba inicial.
33
Operadores Genéticos: Cruce y Mutación Una vez que la selección ha elegido a los individuos aptos, éstos deben ser alterados aleatoriamente con la esperanza de mejorar su aptitud para la siguiente generación. Existen dos estrategias básicas para llevar esto a cabo. La primera y más sencilla se llama mutación. Al igual que una mutación en los seres vivos cambia un gen por otro, una mutación en un algoritmo genético también causa pequeñas alteraciones en puntos concretos del código de un individuo.
34
Problema Queremos buscar un vector con la mayor cantidad de 1 en su interior aunque la solución es trivial. Nos sirve para ver como se ejecuta la librería ECJ para JAVA. Representación Una matriz de individuos llamada GENOMA en el algoritmo o algorítmicamente un vector de vectores donde se encontraran los individuos. Función fitness Es la suma de los elementos de cada vector o individuo dentro del genoma dividido sobre la longitud del individuo (Esto me da 1 si todos los elementos son 1) buscando el valor mas alto en el vector.
35
Pasos para solucionar el problema Inicializar la población (Población inicial) remplazar la población con el nuevo resultado función evaluador da el primer fitness Si el evaluador encuentra un individuo ideal salta al paso 9 (El algoritmo no se ejecuta) Si no llama la función Exchanger para remplazar la nueva población con el resultado Llama la función BREEDER para crear una nueva población Incrementa el contador de generaciones Termina si encuentra un fitness de 1/1 = 1.0 es decir todos los elementos llenos de 1 en el vector
36
Introducción a los algoritmos genéticos Un algoritmo genético es una búsqueda heurística que está inspirada en la teoría de la evolución natural de Charles Darwin. Este algoritmo refleja el proceso de selección natural donde los individuos más aptos son seleccionados para la reproducción con el fin de producir descendencia de la próxima generación.
38
Concepto de selección natural El proceso de selección natural comienza con la selección de individuos más aptos de una población. Producen descendientes que heredan las características de los padres y se agregarán a la generación siguiente. Si los padres tienen una mejor condición física, sus hijos serán mejores que los padres y tendrán más posibilidades de sobrevivir. Este proceso continúa iterando y, al final, se encontrará una generación con las personas más aptas.
39
Este concepto se puede aplicar a un problema de búsqueda. Consideramos un conjunto de soluciones para un problema y seleccionamos el conjunto de las mejores. Cinco fases se consideran en un algoritmo genético. 1.- Población inicial 2.- Función de la aptitud 3.- Selección 4.-Cromosomas 5.-Mutación
40
Población inicial El proceso comienza con un conjunto de individuos que se llama Población. Cada individuo es una solución al problema que desea resolver. Un individuo se caracteriza por un conjunto de parámetros (variables) conocidos como Genes. Los genes se unen en una cuerda para formar un cromosoma (solución). En un algoritmo genético, el conjunto de genes de un individuo se representa utilizando una cuerda, en términos de un alfabeto. Por lo general, se utilizan valores binarios (cadena de 1s y 0s). Decimos que codificamos los genes en un cromosoma.
42
Función de la aptitud La función de aptitud determina qué tan buena es una persona (la capacidad de una persona para competir con otras personas). Le da un puntaje de condición física a cada individuo. La probabilidad de que un individuo sea seleccionado para la reproducción se basa en su puntaje de condición física.
43
Selección La idea de la fase de selección es seleccionar a las personas más aptas y dejarles pasar sus genes a la próxima generación. Se seleccionan dos pares de individuos (padres) en función de sus puntajes de aptitud. Las personas con una buena forma física tienen más posibilidades de ser seleccionadas para la reproducción.
44
Crossover Crossover es la fase más importante en un algoritmo genético. Para cada par de padres que se aparearán, se elige al azar un punto de cruce dentro de los genes. Nota: Crossover cromosómico, intercambio de material genético entre cromosomas homólogos. Crossover, un filtro de cruces. Crossover clásico, género musical que mezcla y fusiona elementos del estilo de música clásica con la música popular. Crossover, géneros musicales que combinan elementos de diferente origen o expresión.
45
Por ejemplo, considere el punto de cruce como 3 como se muestra a continuación.
46
Los descendientes se crean intercambiando los genes de los padres entre ellos hasta que se alcanza el punto de cruce. Intercambio de genes entre los padres
47
Los nuevos descendientes se agregan a la población. Nueva descendencia
48
Mutación En ciertos descendientes nuevos formados, algunos de sus genes pueden ser sometidos a una mutación con una baja probabilidad aleatoria. Esto implica que algunos de los bits en la cadena de bits se pueden voltear.
49
La mutación ocurre para mantener la diversidad dentro de la población y prevenir la convergencia prematura.
50
Terminación El algoritmo finaliza si la población ha convergido (no produce descendencia que sea significativamente diferente de la generación anterior). Luego se dice que el algoritmo genético ha proporcionado una serie de soluciones a nuestro problema.
51
La población tiene un tamaño fijo. A medida que se forman las nuevas generaciones, mueren las personas con el menor nivel de aptitud física, lo que proporciona espacio para nuevos descendientes. La secuencia de fases se repite para producir individuos en cada nueva generación que son mejores que la generación anterior.
52
Pseudocódigo
53
Ejemplo en Java A continuación se presenta una implementación de ejemplo de un algoritmo genético en Java. Dado un conjunto de 5 genes, cada gen puede contener uno de los valores binarios 0 y 1. El valor de la aptitud se calcula como el número de 1s presente en el genoma. Si hay cinco 1s, entonces está teniendo la mejor forma física. Si no hay 1s, entonces tiene la aptitud mínima. Este algoritmo genético intenta maximizar la función de aptitud para proporcionar una población que consta de la persona más apta, es decir, individuos con cinco 1s. Nota: En este ejemplo, después del cruce y la mutación, la persona con el menor ajuste es reemplazada por la nueva descendencia más apta.
61
Ejemplo de algoritmo genético simple. La población comienza con una fuerza de aptitud aleatoria, después de algunas generaciones, el algoritmo debería producir una población que tenga una fuerza física más fuerte. El valor máximo posible aquí es 10. Estrategia de reemplazo: elitismo 10%, es decir, el 10% superior del padre sobrevive a cada generación. Estado estable (solo reemplace al padre si el hijo es mejor al menos tan bueno). Estrategia de selección: método del torneo. Encontrar 4 aleatorios en población no igual Deje que 2 peleen, y 2 pelea Los ganadores hacen 2 niños
67
Resultado
68
Ejemplo 2
70
Un algoritmo genético (GA) Es ideal para encontrar soluciones a problemas de búsqueda complejos. A menudo se usan en campos como la ingeniería para crear productos increíblemente de alta calidad gracias a su capacidad de buscar a través de una gran combinación de parámetros para encontrar la mejor combinación. Por ejemplo, pueden buscar a través de diferentes combinaciones de materiales y diseños para encontrar la combinación perfecta de ambos que podría resultar en un producto final más fuerte, ligero y global, mejor. También se pueden usar para diseñar algoritmos de computadora, programar tareas y resolver otros problemas de optimización. Los algoritmos genéticos se basan en el proceso de evolución por selección natural que se ha observado en la naturaleza. En esencia, replican la forma en que la vida usa la evolución para encontrar soluciones a problemas del mundo real. Sorprendentemente, aunque los algoritmos genéticos se pueden utilizar para encontrar soluciones a problemas increíblemente complicados, son bastante simples de usar y comprender.
71
Cómo trabajan ellos Como ahora sabemos que se basan en el proceso de selección natural, esto significa que toman las propiedades fundamentales de la selección natural y las aplican a cualquier problema que intentemos resolver. El proceso básico para un algoritmo genético es: Inicialización: crea una población inicial. Esta población generalmente se genera aleatoriamente y puede tener cualquier tamaño deseado, desde solo unos pocos individuos hasta miles. Evaluación: cada miembro de la población es luego evaluado y calculamos un "estado físico" para ese individuo. El valor de la aptitud se calcula según cuán bien se ajusta a nuestros requisitos deseados. Estos requisitos podrían ser simples, "los algoritmos más rápidos son mejores" o más complejos, "los materiales más fuertes son mejores, pero no deberían ser demasiado pesados".
72
Selección: queremos mejorar constantemente la aptitud general de nuestra población. La selección nos ayuda a hacer esto descartando los malos diseños y manteniendo solo a los mejores individuos de la población. Hay algunos métodos de selección diferentes, pero la idea básica es la misma, es más probable que se seleccionen individuos más aptos para nuestra próxima generación. Crossover: durante el cruce, creamos nuevas personas combinando aspectos de nuestras personas seleccionadas. Podemos pensar que esto es imitar cómo funciona el sexo en la naturaleza. La esperanza es que al combinar ciertos rasgos de dos o más individuos, crearemos una descendencia aún más "en forma" que heredará los mejores rasgos de cada uno de sus padres..
73
Mutación: debemos agregar un poco de aleatoriedad a la genética de nuestra población, de lo contrario, cada combinación de soluciones que podamos crear estaría en nuestra población inicial. La mutación generalmente funciona haciendo cambios muy pequeños al azar al genoma de un individuo. ¡Y repetir! - Ahora tenemos nuestra próxima generación, podemos comenzar de nuevo desde el paso dos hasta que lleguemos a una condición de terminación
74
Limitaciones Imagina que te dijeron que te pusieras una venda en los ojos y luego te pusieron al pie de una colina con la instrucción de encontrar el camino hacia la cumbre. Tu única opción es ir subiendo la colina hasta que notes que ya no estás ascendiendo. En este punto, podrías declarar que has encontrado el pico, pero ¿cómo lo sabrías? En esta situación, debido a que tienes los ojos vendados, no puedes ver si estás en la cima o solo en el pico de la sección más pequeña de la colina. Llamamos a esto un óptimo local. A continuación se muestra un ejemplo de cómo podría verse esta localización óptima:
76
A diferencia de nuestro escalador de montañas con los ojos vendados, los algoritmos genéticos a menudo pueden escapar de estos óptimos locales si son lo suficientemente superficiales. Aunque al igual que nuestro ejemplo, a menudo nunca podemos garantizar que nuestro algoritmo genético haya encontrado la solución global óptima para nuestro problema. Para problemas más complejos, generalmente es una excepción irrazonable encontrar un óptimo global, lo mejor que podemos hacer es esperar es una aproximación cercana de la solución óptima.
77
Echemos un vistazo a las clases que vamos a crear para nuestra GA: 1.-Población: administra a todos los individuos de una población 2.- Individual: administra un individuo 3.-Algoritmo: gestiona nuestros algoritmos de evolución como el cruce y la mutación 4.-FitnessCalc - Nos permite establecer una solución candidata y calcular la aptitud de un individuo
78
Population.java
80
Individual.java
82
Algorithm.java
85
FitnessCalc.java
87
Ahora vamos a crear nuestra clase principal. Primero, debemos establecer una solución candidata (no dude en cambiar esto si lo desea). Ahora crearemos nuestra población inicial, una población de 50 debería estar bien.
88
Ahora podemos evolucionar nuestra población hasta que alcancemos nuestra aptitud óptima
89
Aquí está el código completo para nuestra clase principal:
90
Resultado
91
Problema de partición Algoritmo genético para resolver el "problema de la partición" en 2012. También se ha desarrollado un algoritmo que lo resuelve a modo estocástico y otro que lo resuelve con fuerza bruta para comparación de rendimiento entre estos.
92
Problema de 4 reinas Algoritmo genético programado en 2011 que resuelve el problema de colocar 4 reinas en un tablero de ajedrez. "Ejecuta.java" contiene el main. Controlador Evolutivo de Estrategias
93
Controlador Evolutivo de Estrategias Modificación del controlador Greedy de la competición www.ptsp- game.net/ que da valores a pesos de distintas características del controlador mediante Estrategias evolutivas (1 + 1)-EE y (NU + LAMBDA)-EE programada en 2012.www.ptsp- game.net/
94
Snake /Serpiente Programación del juego de la Serpiente en 2008 como práctica de programación.
95
Eejemplo1 A_Estocastico
98
Ejemplo 2 A_Gen
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.