Algoritmos genéticos 2 s lun 30 sep-13

12
UNIVERSIDAD LAICA ELOY ALFARO DE MANABI FACULTAD DE INGENIERIA ESCUELA DE INGENIERIA ELECTRICA TAREA DE PROGRAMACIÓN I PROF: Ing. Washington García, Mg.

Transcript of Algoritmos genéticos 2 s lun 30 sep-13

Page 1: Algoritmos genéticos 2 s lun 30 sep-13

UNIVERSIDAD LAICA ELOY ALFARO DE MANABI

FACULTAD DE INGENIERIA

ESCUELA DE INGENIERIA ELECTRICA

TAREA DE PROGRAMACIÓN I

PROF: Ing. Washington García, Mg.

Alumno: Ronald Barcia Macías

Curso: 2do semestre “A”

Page 2: Algoritmos genéticos 2 s lun 30 sep-13

Algoritmos GenéticosLa capacidad del ser humano para predecir el comportamiento de su entorno se ha ido incrementando con el paso del tiempo. De igual modo, ha comprendido que si bien era capaz de controlar muchos aspectos de su vida, y su interacción con lo que le rodeaba, no lo era para otros tantos.

La inteligencia artificial es responsable de muchos de esos logros. Los pioneros de esta ciencia estaban tan interesados en la electrónica, como en la biología, y por eso sus aplicaciones iban desde calcular trayectorias de misiles, a tratar de modelar el cerebro, de imitar el proceso de aprendizaje humano, y de simular la evolución biológica.

Los años ochenta marcan el florecimiento del interés de la comunidad científica por estos temas computacionales inspirados en la biología, que han visto como su desarrollo les llevaba a cosas inimaginables, primero en el campo de las Redes Neuronales, luego en el del Aprendizaje, y por último en lo que ahora se conoce como “computación evolutiva”, de la que los algoritmos genéticos constituyen su máximo exponente.

Los programas evolutivos fueron presentados en 1994 por Michalewicz, cuando propuso incorporar conocimiento específico del problema a resolver en las estructuras de datos. Así, los Programas Evolutivos son métodos que incorporan directamente conocimiento específico a los Algoritmos Genéticos, puesto que permiten la utilización de estructuras de datos naturales. Esto permite, a su vez, la utilización de operadores genéticos sensibles al contexto, con el fin de mejorar la eficiencia del algoritmo de búsqueda sin perder gran parte de la propiedad de generalización.

Los Algoritmos Genéticos son métodos adaptativos que pueden usarse para resolver problemas de búsqueda y optimización. Están basados en el proceso genético de los organismos vivos.

A lo largo de las generaciones, las poblaciones evolucionan en la naturaleza de acorde con los principios de la selección natural y la supervivencia de los más fuertes, postulados por Darwin (1859). Por imitación de este proceso, los Algoritmos Genéticos son capaces de ir creando soluciones para problemas del mundo real. La evolución de dichas soluciones hacia valores óptimos del problema depende en buena medida de una adecuada codificación de las mismas. En la naturaleza los individuos de una población compiten entre sí en la búsqueda de recursos tales como comida, agua y refugio. Incluso los miembros de una misma especie compiten a menudo en la búsqueda de un compañero. Aquellos individuos que tienen más éxito en sobrevivir y en atraer compañeros tienen mayor probabilidad de generar un gran número de descendientes. Por el contrario individuos poco dotados producirán un menor número de descendientes. Esto significa que los genes de los individuos mejor adaptados se propagaran en sucesivas generaciones hacia un número de individuos creciente. La combinación de buenas características provenientes de diferentes ancestros, puede a veces producir descendientes "superindividuos", cuya adaptación es mucho mayor que la de cualquiera de sus ancestros. De esta manera, las especies evolucionan logrando unas características cada vez mejor adaptadas al entorno en el que viven.

Page 3: Algoritmos genéticos 2 s lun 30 sep-13

El tema central en las investigaciones sobre algoritmos genéticos, ha sido la robustez, el equilibrio necesario entre la eficiencia y la eficacia suficiente para la supervivencia en entornos diferentes. Las implicaciones que tiene la robustez en los sistemas artificiales son variadas. Si se puede conseguir que un sistema artificial sea más robusto, se podrán reducir, e incluso eliminar, los costes por rediseños. Y si se es capaz de lograr niveles altos de adaptación, los sistemas podrán desarrollar sus funciones mejor y durante más tiempo. Sin embargo, ante la robustez, eficiencia y flexibilidad de los sistemas biológicos, sólo podemos sentarnos a contemplar, y maravillarnos; mentiríamos si dijéramos que somos capaces de igualarlos.

El poder de los Algoritmos Genéticos proviene del hecho de que se trata de una técnica robusta, y pueden tratar con éxito una gran variedad de problemas provenientes de diferentes áreas, incluyendo aquellos en los que otros métodos encuentran dificultades. Si bien no se garantiza que el Algoritmos Genéticos encuentre la solución óptima del problema, existe evidencia evidencia empírica de que se encuentran soluciones de un nivel aceptable, en un tiempo competitivo con el resto de algoritmos de optimización combinatoria.

En el caso de que existan técnicas especializadas para resolver un determinado problema, lo más probable es que superen al Algoritmos Genético, tanto en rapidez como en eficacia. El gran campo de aplicación de los Algoritmos Genéticos se relaciona con aquellos problemas para los cuales no existen técnicas especializadas. Incluso en el caso en que dichas técnicas existan, y funcionen bien, pueden efectuarse mejoras de las mismas hibridándolas con los Algoritmos Genéticos.

Un algoritmo genético es un método de búsqueda dirigida basada en probabilidad. Bajo una condición muy débil (que el algoritmo mantenga elitismo, es decir, guarde siempre al mejor elemento de la población sin hacerle ningún cambio) se puede demostrar que el algoritmo converge en probabilidad al óptimo. En otras palabras, al aumentar el número de iteraciones, la probabilidad de tener el óptimo en la población tiende a 1.

¿Por qué utilizar Algoritmos Genéticos en la Optimización?

La razón del creciente interés por los Algoritmos Genéticos es que estos son un método global y robusto de búsqueda de las soluciones de problemas. La principal ventaja de estas características es el equilibrio alcanzado entre la eficiencia y eficacia para resolver diferentes y muy complejos problemas de grandes dimensiones.

Lo que aventaja a los Algoritmos Genéticos frente a otros algoritmos tradicionales de búsqueda es que se diferencian de estos en los siguientes aspectos:

Trabajan con una codificación de un conjunto de parámetros, no con los parámetros mismos.

Trabajan con un conjunto de puntos, no con un único punto y su entorno (su técnica de búsqueda es global.) Utilizan un subconjunto del espacio total, para obtener información sobre el universo de búsqueda, a través de las evaluaciones de la función a optimizar. Esas evaluaciones se emplean de forma eficiente para clasificar los subconjuntos de acuerdo con su idoneidad.

Page 4: Algoritmos genéticos 2 s lun 30 sep-13

No necesitan conocimientos específicos sobre el problema a resolver; es decir, no están sujetos a restricciones. Por ejemplo, se pueden aplicar a funciones no continuas, lo cual les abre un amplio campo de aplicaciones que no podrían ser tratadas por los métodos tradicionales.

Utilizan operadores probabilísticos, en vez de los típicos operadores determinísticos de las técnicas tradicionales.

Resulta sumamente fácil ejecutarlos en las modernas arquitecturas masivas en paralelo.

Cuando se usan para problemas de optimización, resultan menos afectados por los máximos locales que las técnicas tradicionales.

Ahora bien; un esquema del funcionamiento general de un algoritmo genético podría ser el siguiente:

Algoritmo Genético:

- Generar una población inicial.- Iterar hasta un criterio de parada.- Evaluar cada individuo de la población.- Seleccionar los progenitores.- Aplicar el operador de cruce y mutación a estos progenitores.- Incluir la nueva descendencia para formar una nueva generación.

BEGIN /* Algoritmo Genético Simple */Generar una población inicial.Computar la función de evaluación de cada individuo.WHILE NOT Terminado DOBEGIN /* Producir nueva generación */

FOR Tamaño población/2 DOBEGIN /*Ciclo Reproductivo */

Seleccionar dos individuos de la anterior generación, para el cruce (probabilidad de selección proporcional a la función de evaluación del individuo).Cruzar con cierta probabilidad los dos individuos obteniendo dos descendientes.Mutar los dos descendientes con cierta probabilidad.Computar la función de evaluación de los dos descendientes mutados.Insertar los dos descendientes mutados en la nueva generación.

ENDIF la población ha convergido THEN

Terminado := TRUEEND

END

Funcionamiento

Page 5: Algoritmos genéticos 2 s lun 30 sep-13

Los algoritmos entre el conjunto de soluciones de un problema, llamado fenotipo, y el conjunto de individuos de una población natural, codificando la información de cada solución en una cadena, generalmente binaria, llamada cromosoma. Los símbolos que forman la cadena son llamados los genes. Cuando la representación de los cromosomas se hace con cadenas de dígitos binarios se le conoce como genotipo. Los cromosomas evolucionan a través de iteraciones, llamadas generaciones. En cada generación, los cromosomas son evaluados usando alguna medida de aptitud. Las siguientes generaciones (nuevos cromosomas), operadores genéticos, de sobrecruzamiento y de mutación.

¿Cuándo usar estos algoritmos?

Los algoritmos genéticos son de probada eficacia en caso de querer calcular funciones no derivables (o de derivación muy compleja) aunque su uso es posible con cualquier función.Deben tenerse en cuenta también las siguientes consideraciones:

Si la función a optimizar tiene muchos máximos/mínimos locales se requerirán más iteraciones del algoritmo para "asegurar" el máximo/mínimo global.

Si la función a optimizar contiene varios puntos muy cercanos en valor al óptimo, solamente podemos "asegurar" que encontraremos uno de ellos (no necesariamente el óptimo).

Funcionamiento de un algoritmo genético básico

Un algoritmo genético puede presentar diversas variaciones, dependiendo de cómo se aplican los operadores genéticos (cruzamiento, mutación), de cómo se realiza la selección y de cómo se decide el reemplazo de los individuos para formar la nueva población. En general, el pseudocódigo consiste de los siguientes pasos:

Algoritmo genético i: inicialización, f(X): evaluación, ?: condición de término, Se: selección, Cr: cruzamiento, Mu: mutación, Re: reemplazo, X*: mejor solución.

Inicialización: Se genera aleatoriamente la población inicial, que está constituida por un conjunto de cromosomas los cuales representan las posibles

Page 6: Algoritmos genéticos 2 s lun 30 sep-13

soluciones del problema. En caso de no hacerlo aleatoriamente, es importante garantizar que dentro de la población inicial, se tenga la diversidad estructural de estas soluciones para tener una representación de la mayor parte de la población posible o al menos evitar la convergencia prematura.

Evaluación: A cada uno de los cromosomas de esta población se aplicará la función de aptitud para saber cómo de "buena" es la solución que se está codificando.

Condición de término El AG se deberá detener cuando se alcance la solución óptima, pero ésta generalmente se desconoce, por lo que se deben utilizar otros criterios de detención. Normalmente se usan dos criterios: correr el AG un número máximo de iteraciones (generaciones) o detenerlo cuando no haya cambios en la población. Mientras no se cumpla la condición de término se hace lo siguiente:

o Selección Después de saber la aptitud de cada cromosoma se procede a elegir los cromosomas que serán cruzados en la siguiente generación. Los cromosomas con mejor aptitud tienen mayor probabilidad de ser seleccionados.

o Recombinación o Cruzamiento La recombinación es el principal operador genético, representa la reproducción sexual, opera sobre dos cromosomas a la vez para generar dos descendientes donde se combinan las características de ambos cromosomas padres.

o Mutación modifica al azar parte del cromosoma de los individuos, y permite alcanzar zonas del espacio de búsqueda que no estaban cubiertas por los individuos de la población actual.

o Reemplazo una vez aplicados los operadores genéticos, se seleccionan los mejores individuos para conformar la población de la generación siguiente

Aplicaciones

Diseño automatizado, incluyendo investigación en diseño de materiales y diseño multiobjetivo de componentes automovilísticos: mejor comportamiento ante choques, ahorros de peso, mejora de aerodinámica, etc.

Diseño automatizado de equipamiento industrial. Diseño automatizado de sistemas de comercio en el sector financiero. Construcción de árboles filogenéticos. Optimización de carga de contenedores. Diseño de sistemas de distribución de aguas. Diseño de topologías de circuitos impresos. Diseño de topologías de redes computacionales. En Teoría de juegos, resolución de equilibrios. Análisis de expresión de genes. Aprendizaje de comportamiento de robots. Aprendizaje de reglas de Lógica difusa. Análisis lingüístico, incluyendo inducción gramática, y otros aspectos de

Procesamiento de lenguajes naturales, tales como eliminación de ambigüedad de sentido.

Infraestructura de redes de comunicaciones móviles. Optimización de estructuras moleculares. Planificación de producción multicriteria.

Page 7: Algoritmos genéticos 2 s lun 30 sep-13

Predicción. Aplicación de Algoritmos Genéticos al Dilema del prisionero Iterado Optimización de sistemas de compresión de datos, por ejemplo, usando

wavelets. Predicción de Plegamiento de proteínas. Optimización de Layout. Predicción de estructura de ARN. En bioinformática, Alineamiento múltiple de secuencias. Aplicaciones en planificación de procesos industriales, incluyendo planificación

job-shop. Selección óptima de modelos matemáticos para la descripción de sistemas

biológicos. Manejo de residuos sólidos. Ingeniería de software. Construcción de horarios en grandes universidades, evitando conflictos de

clases. Problema del viajante. Hallazgo de errores en programas. Optimización de producción y distribución de energía eléctrica. Diseño de redes geodésicas (Problemas de diseño). Calibración y detección de daños en estructuras civiles.

Un ejemplo simple de algoritmo genético

Sea X el problema a resolver. Dada una representación de candidatas a soluciones en una cadena de bits, un algoritmo genético simple, tal y como se describe en Mitchell M. (1998), trabajaría del siguiente modo:

1. Comenzar con una población P generada aleatoriamente de n cromosomas de l bit.2. Calcular la capacidad f(x) para cada cromosoma x de P.3. Repetir los siguientes pasos hasta que se hayan creado n descendientes:

a. Seleccionar un par de cromosomas padre de P, siendo la probabilidad de selección una función creciente de la capacidad. La selección se realiza “con remplazamiento”, es decir, que el mismo cromosoma puede ser seleccionado en más de una ocasión para ser padre.

b. Con probabilidad pc (probabilidad de cruce, o tasa de cruce), cruzar el par en un punto elegido aleatoriamente (con probabilidad uniforme) para formar dos descendientes. Si no tiene lugar ningún cruce, formar dos descendientes que sean copias exactas de sus respectivos padres. (Obsérvese que aquí la probabilidad de cruce se define como la probabilidad de que dos padres se crucen sobre un único punto. Hay otras versiones de algoritmos genéticos que son de “cruces en múltiples puntos”, en los que la tasa de cruce para una pareja de padres es el n º de puntos en los que tiene lugar un cruce).

c. Mutar los dos descendientes en cada lugar con probabilidad pm

(probabilidad de mutación, o tasa de mutación), y colocar los cromosomas resultantes en la nueva población P’. Si n es impar, se puede rechazar aleatoriamente a un miembro de la nueva población.

4. Remplazar la población actual P con la nueva P’.5. Volver al paso 2.

Page 8: Algoritmos genéticos 2 s lun 30 sep-13

Cada iteración del proceso recibe el nombre de generación. Lo usual es iterar el algoritmo de 50 a 500 o más veces. El conjunto completo de generaciones se llama serie. Al concluir una serie, a menudo se encuentran entre la población uno o más cromosomas con elevada capacidad. Como la aleatoriedad juega un importante papel en cada serie, dos series con diferentes números aleatorios en el origen darán lugar generalmente a comportamientos diferentes. Los investigadores en algoritmos genéticos acostumbran a reportar estadísticas (tales como el mejor potencial hallado en una serie, y la generación donde se encontró el individuo con la mejor capacidad, etc.) evaluadas sobre muchas series diferentes del algoritmo genético sobre el mismo problema. El procedimiento arriba descrito es en realidad la base de la mayoría de las aplicaciones de los Algoritmos Genéticos. Desde luego, quedan muchos detalles importantes en los que se debería profundizar, como cuál ha de ser el tamaño de la población, y cuáles las probabilidades de cruce (pc) y de mutación (pm). De esos “detalles” dependerá, en gran parte, el éxito o fracaso del Algoritmo Genético que estemos aplicando. Asimismo, podemos encontrar otros Algoritmos Genéticos mucho más complejos (y eficaces) que el que se ha utilizado, como aquellos que trabajan sobre otras representaciones además de las cadenas de bits, o los que emplean otros operadores de cruce y mutación, pero se pretende realizar una primera aproximación del lector al campo de los Algoritmos Genéticos, no desarrollar un completo estudio del mismo.

Conclusión:

Como se ha podido observar, una de las principales ventajas de los AG puede observarse en su sencillez; puesto que se necesita muy poca información sobre el espacio de búsqueda ya que se trabaja sobre un conjunto de soluciones o parámetros codificados (hipótesis o individuos). Al igual que sus campos de aplicación, se puede afirmar que es un método muy completo de optimización, puesto que sus áreas de estudio son muy amplias, y se puede ver generalizado en muchos sucesos cotidianos.Se ha observado de igual forma que los AG están indicados para resolver todo tipo de problemas que se puedan expresar como un problema de optimización donde se define una representación adecuada para las soluciones y para la función a optimizar. Se busca una solución por aproximación de la población, en lugar de una aproximación punto a punto.

Bibliografía:

http://eddyalfaro.galeon.com/geneticos.html www.sc.ehu.es/ccwbayes/docencia/mmcc/docs/temageneticos.pdf http://geneura.ugr.es/~jmerelo/ie/ags.html www.nebrija.es/~cmalagon/ia/apuntes/algoritmosgeneticos.pdf www.uv.es/asepuma/X/J24C.pdf C++ para ingeniería y ciencias, 2da Ed - Gary J. Bronson Como Programar en C y Java 4ta Edición - Deitel