UNIVERSIDAD NACIONAL ABIERTA MATEMÁTICA CENTRO LOCAL METROPOLITANO APLICACIÓN DE LOS ALGORITMOS GENÉTICOS SIMPLES EN LA
Views 167 Downloads 1 File size 474KB
UNIVERSIDAD NACIONAL ABIERTA MATEMÁTICA CENTRO LOCAL METROPOLITANO
APLICACIÓN DE LOS ALGORITMOS GENÉTICOS SIMPLES EN LA OPTIMIZACIÓN DE FUNCIONES REALES (presentado para optar al título de Licenciado en Matemática Mención Análisis Numérico)
Raúl Inés Barrera Núñez
Caracas, junio de 2006
UNIVERSIDAD NACIONAL ABIERTA
i
Aprobación del Profesor Tutor
Luego de haber leído detenidamente el presente Trabajo de Grado, le doy mí aprobación tanto en lo referente a forma como a contenido.
______________________ José Ramón Gascón
UNIVERSIDAD NACIONAL ABIERTA
ii
INDICE GENERAL Página
APROBACIÓN DEL PROFESOR TUTOR VEREDICTO DEL JURADO
II
¡ERROR! MARCADOR NO DEFINIDO.
LISTA DE ILUSTRACIONES
V
RESUMEN
VI
GLOSARIO DE TÉRMINOS
VII
INTRODUCCIÓN
IX
CAPÍTULO I
1
LOS ALGORITMOS GENÉTICOS
1
1.1. Breve acercamiento a la biología genética
1
1.2. Historia furtiva 1.2.1. De la teoría de la evolución 1.2.2. De los algoritmos genéticos
4 4 5
1.3. Aspectos básicos de los algoritmos genéticos
7
1.4. Operacionalidad de los algoritmos genéticos simples 1.4.1. Características de los algoritmos genéticos simples 1.4.2. Ejecución del proceso de los algoritmos genéticos simples 1.4.3. Operadores genéticos
9 9 11 13
1.4.4. Ejemplo manual de optimización numérica mediante el AGS
15
1.4.5. Código fuente de un algoritmo genético simple
23
CAPÍTULO II
25
MÉTODOS CLÁSICOS DE OPTIMIZACIÓN NUMÉRICA
25
2.1. Algoritmo del gradiente con paso constante 2.1.1. Ejemplo manual del algoritmo del gradiente con paso constante
UNIVERSIDAD NACIONAL ABIERTA
25 27
iii
2.2. Algoritmo de Newton con paso constante 2.2.1. Ejemplo manual del algoritmo de Newton con paso constante
29 31
CAPÍTULO III
32
ENSAYOS DE APLICACIÓN DEL ALGORITMO GENÉTICO SIMPLE Y DE LOS MÉTODOS CLÁSICOS EN LA OPTIMIZACIÓN NUMÉRICA 32 3.1. Evaluación de la función
Y = x 2 sen 2 (10πx) + 1 en el dominio [0,2]
32
3.1.1. Aplicación del algoritmo genético simple 3.1.2. Aplicación de los métodos clásicos de optimización numérica 3.2. Evaluación de la función Z = 0,5 +
sen 2
(
)
x 2 + y 2 − 0,5
(1 + 0,001(x
2
+ y2
))
2
33 39
, en el dominio [-200, 200] X [-
200, 200] 3.2.1. Aplicación del algoritmo genético simple 3.2.2. Aplicación de los métodos clásicos de optimización numérica
40 41 42
CAPÍTULO IV
43
POSIBLES MODIFICACIONES AL ALGORITMO GENÉTICO SIMPLE Y CONCLUSIONES 43 4.1 Modificaciones sobre los operadores genéticos 4.1.1. Selección (Elitismo) 4.1.2. Cruce (Varios tipos) 4.1.1. Mutación
43 44 45 45
4.2
45
Conclusiones
ANEXO 1 ARTÍCULO DE PRENSA PUBLICADO EN EL CUERPO 4-8 DEL UNIVERSAL, EL 09/04/2006 47 ANEXO 2 CÓDIGO FUENTE DEL ALGORITMO GENÉTICO SIMPLE
50
A.2.1. Para funciones reales de una variable
50
A.2.2. Para funciones reales de dos variables
56
ANEXO 3 HERRAMIENTAS COMPUTACIONALES UTILIZADAS
62
REFERENCIA BIBLIOGRÁFICA
63
UNIVERSIDAD NACIONAL ABIERTA
iv
LISTA DE ILUSTRACIONES GRÁFICO
Página
1.
Diagrama de flujos del proceso del algoritmo genético simple
12
2.
Figura Nº 1 gráfica de la función Y = x 2 sen 2 (10πx) + 1
35
3.
Figura Nº 2 Valores regulares de la función para distintas generaciones
39
4.
Figura Nº 3 Número de mutaciones y cruces para distintas generaciones
40
5.
Figura Nº 4 Función de aptitud acumulada distintas generaciones
40
6.
Figura Nº 5 Valores regulares de la función en la población inicial
41
7.
Figura Nº 6 Valores regulares de la función en la población final
41
8.
Figura Nº 7 gráfica de la función
[-10, 10] X [-10-, 10]
9.
Figura Nº 8 gráficas de la función
[-5, 5] X [0, 2,5]
Z = 0,5 +
⎛ ⎞ sen 2 ⎜⎜ x 2 + y 2 ⎟⎟ − 0,5 ⎝ ⎠ 2 ⎛ ⎛ x 2 + y2 ⎞ ⎞ + 1 0,001 ⎜ ⎜ ⎟⎟ ⎝ ⎠⎠ ⎝
⎛ sen 2 ⎜⎜ x 2 + y 2 ⎝ Z = 0,5 + ⎛ ⎛ 2 ⎜ 1 + 0,001 ⎜ x + ⎝ ⎝
⎞ ⎟ − 0,5 ⎟ ⎠ 2 ⎞ y 2 ⎞⎟ ⎟ ⎠⎠
en el dominio 42
en el dominio 43
TABLAS I.
Tabla N° 1 Resumen de resultados empíricos
UNIVERSIDAD NACIONAL ABIERTA
37
v
RESUMEN El objeto del presente trabajo de grado es utilizar el concepto de algoritmo genético simple aplicado a la optimización de funciones de variable real (una y dos variables), siguiendo como referencia el libro intitulado Genetic Algorithms in Search, Optimization, and Machine Learning, cuyo autor es D. E. Golberg (1989), en cuanto al aspecto conceptual y al uso de las rutinas algorítmicas que en el mencionado texto se describen (modificadas brevemente por el autor). Los resultados de los ensayos experimentales realizados aplicando esta novedosa herramienta se compararon con los obtenidos mediante los métodos tradicionales de optimización numérica permitiendo evidenciar la potencialidad del algoritmo genético simple en un escenario donde las funciones presentan en su dominio de definición: oscilaciones moderadas y la existencia de varios máximos locales. El campo de aplicación de esta herramienta se encuentra en el conjunto de las funciones para las cuales las técnicas tradicionales especializadas fallan o no aplican. El tema de la convergencia del algoritmo genético no fue revisado en ninguno de sus aspectos. Aunque los resultados provenientes del algoritmo genético son incuestionablemente mejores no pretendemos demostrar que el mismo sea siempre más eficiente para resolver problemas de optimización.
Palabras claves: algoritmo, genético, optimización, funciones, reales.
UNIVERSIDAD NACIONAL ABIERTA
vi
GLOSARIO DE TÉRMINOS ADN (ácido desoxirribonucleico):
Es el compuesto contenido en el cromosoma,
responsable de la transmisión del material genético de la célula en el proceso de división celular conducente a la reproducción de un organismo. Alelo: Variantes o formas alternativas de un gen. Algoritmo: Procedimiento iterativo utilizado para resolver un problema matemático. Convergencia: Se dice que un objeto matemático posee la característica de convergencia (o converge), si tiende o se dirige a un objeto (o al mismo objeto) en la medida que sus elementos independientes varían en una dirección y sentido específicos. Cromosoma:
Es una diminuta estructura filiforme compuesta por ácidos nucleicos y
proteínas, presente en todas las células vegetales y animales. Error: Diferencia que existe entre un objeto matemático y otro mediante el cual intentamos representarlo. Evolución:
Consiste en el proceso de transitar, en inmensos lapsos de tiempo, por una
serie progresiva de transformaciones conducentes a una cúspide habitada por mentes supremas. Evolucionismo: Doctrina filosófica o científica basada en la evolución. Evolucionista: Ente partidario del evolucionismo. Fenotipo:
Conjunto de características hereditarias comunes a una determinada especie
vegetal o animal debido a la existencia de genes semejantes. Gen: Cada una de las partículas que en el núcleo de la célula condicionan la transmisión de los caracteres hereditarios. Genética: Es la ciencia que estudia la herencia biológica y la variación, apoyándose en las leyes y principios que gobiernan las semejanzas y diferencias entre los individuos de una misma especie. Genotipo: Conjunto de factores hereditarios legítimos de un individuo o de una especie.
UNIVERSIDAD NACIONAL ABIERTA
vii
Gradiente:
Sea f una función diferenciable sobre un abierto de un espacio vectorial
euclídeo E de dimensión finita. La diferencial de f se identifica a un campo de vectores, →
⎛
⎛→⎞
→⎞
⎝
⎝ ⎠
⎠
llamado gradiente de f y notado grad f, gracias a la relación d → f , h = ⎜ grad f ⎜⎜ x ⎟⎟ / h ⎟ . ⎜ ⎟ x Herencia:
Tendencia de la naturaleza a reproducir en los seres los caracteres de sus
antepasados. Mecánica molecular: Estudio de los movimientos de las moléculas y de sus átomos. Optimización:
Acción y efecto de buscar el objeto de mejor desempeño, calificado
mediante una función de aptitud o métrica. Promedio: Término medio o representante de un conjunto de objetos numéricos.
UNIVERSIDAD NACIONAL ABIERTA
viii
INTRODUCCIÓN El objeto de esta monografía es introducir el concepto de algoritmo genético e ilustrar alguna de sus aplicaciones. El algoritmo genético simple fue desarrollado por John Holland profesor de la Universidad de Michigan en Ann Arbor en los años setenta aunque las ideas de programas que usan técnicas evolutivas fueron desarrolladas en años anteriores. Se trata de un mecanismo de búsqueda de soluciones para diversos problemas basado en las ideas de la evolución de las especies de Darwin. Forma parte de un conjunto de técnicas computacionales que simulan procesos biológicos o naturales, entre estos se encuentran las redes neuronales, el recocido simulado y los propios algoritmos genéticos. Debemos señalar que desarrollamos en este trabajo de grado el algoritmo genético simple tal como aparece explicado en el libro de Goldberg (1989) (ver bibliografía). No nos ocupamos en detalle de la extensa gama de variaciones del algoritmo genético y sólo al final revisamos algunas de las posibilidades. Cabe señalar que actualmente diversas investigaciones se desarrollan en el campo de los algoritmos genéticos pero no vamos a detenernos en ellas. En cambio explicaremos en detalle el algoritmo genético simple y lo aplicaremos en el proceso de optimización de funciones de variable real (una y dos variables); también compararemos nuestros resultados con los que se obtienen con el clásico método del gradiente, el cual asume la regularidad de la función objetivo. La monografía en su capítulo primero, empieza explicando las nociones básicas del mecanismo de la herencia desde el punto de vista de la biología, así como la estructura en detalle del algoritmo genético simple. Una corrida del mismo es realizada prácticamente a mano, para ilustrar los diversos operadores genéticos y su implementación.
UNIVERSIDAD NACIONAL ABIERTA
ix
En el siguiente capítulo se exponen algunos métodos de optimización del análisis numérico, tales como el algoritmo del gradiente con paso constante y el algoritmo de Newton con paso constante. En el capítulo tercero se exponen los resultados numéricos, que arroja el algoritmo genético simple al optimizar funciones de una y dos variables, que oscilan moderadamente y comparamos estos resultados con los que se obtiene aplicando el algoritmo del gradiente con paso constante. Aunque
los
resultados
provenientes
del
algoritmo
genético
simple
son
incuestionablemente mejores, no pretendemos demostrar que el mismo sea siempre más eficiente para resolver problemas de optimización. En el último capítulo exponemos las conclusiones del trabajo y mencionamos brevemente algunas de las posibles modificaciones del algoritmo genético. Debemos señalar que no hemos tocado el problema de la convergencia del algoritmo genético, en particular no presentamos el “Teorema Fundamental” de Holland que carece de rigurosidad matemática y que ha motivado el uso de cadenas de Markov para presentar los aspectos de convergencia con una base sólida (ver Rudolph (1994) en la bibliografía). En una serie de anexos se presenta el código fuente del programa del algoritmo genético simple en lenguaje pascal y las características técnicas del computador y del compilador donde se realizaron los experimentos. Debemos señalar que el programa fue modificado del original del libro de Goldberg (1989), traduciendo al idioma castellano las salidas y declaraciones del mismo e incluyendo la posibilidad de trabajar con varias variables.
Por último, esperamos que este trabajo pueda servir de apoyo a los ingenieros, matemáticos y profesionales en general que busquen en el algoritmo genético una
UNIVERSIDAD NACIONAL ABIERTA
x
herramienta para resolver problemas, presentando una exposición auto contenida y concisa del mismo
UNIVERSIDAD NACIONAL ABIERTA
xi
CAPÍTULO I Los algoritmos genéticos 1.1. Breve acercamiento a la biología genética Se denomina gen la porción o sección particular de un cromosoma 1 que contiene las instrucciones o el material necesario para que un ser vivo presente un rasgo específico (por ejemplo: color del cabello, estatura, color de los pétalos, producción de las proteínas, color de la piel, etc.). Un gen está siempre localizado en la misma parte de un cromosoma determinado, y a este sitio se le denomina locus (del latín “lugar”). Debido a que los cromosomas están ubicados en parejas, en cada uno de los cromosomas homólogos están presentes los mismos genes, pero cada cromosoma puede presentar una variante de estos genes. A cada una de las variantes o formas alternativas de un gen se le llama alelo, y cada alelo se ubica siempre en el mismo locus dentro del cromosoma. La evolución se puede definir como los cambios en el pool o conjunto genético de una población. Según los informáticos evolucionistas, la evolución optimiza a la naturaleza, puesto que va creando seres cada vez más perfectos, cuya cumbre es el hombre. Indicios adicionales de esta optimización se encuentran en el organismo de los animales, desde el tamaño y tasa de ramificación de las arterias, diseñados para maximizar el flujo de sangre, hasta el conjunto de reacciones del metabolismo, diseñado para maximizar la cantidad de energía extraída de los alimentos.
1
Cromosoma: Elemento que existe en el núcleo de las células en el momento de su división o mitosis.
UNIVERSIDAD NACIONAL ABIERTA
1
Los mecanismos de cambio en la evolución alteran la proporción de un tipo determinado de alelos en una población específica, bien sea disminuyendo la variabilidad de los mismos o aumentándola. Los principales mecanismos que disminuyen la variabilidad son los siguientes: Selección natural: Mecanismo mediante el cual los individuos que tengan algún rasgo que los haga menos válidos para realizar su tarea de seres vivos, no llegan a reproducirse, y, por tanto, su patrimonio genético desaparece del pool; incluso algunos de ellos ni siquiera llegan a nacer. Deriva génica: El simple hecho de que un alelo sea más común que otro en la población, causa que la proporción de alelos de esta población vaya aumentando en una población aislada (efecto fundador). Los más importantes mecanismos que aumentan la variabilidad, los cuales suceden generalmente en el ámbito molecular, son los siguientes: Mutación: Es una alteración del código genético que puede suceder por múltiples razones y que se presenta en la naturaleza con una probabilidad muy baja de ocurrencia. Por generar nuevos individuos, es considerada el motor de la evolución. En el proceso de formación del ser humano, la enzima ADN polimerasa es la sustancia motivadora de cambios. Poliploidía: Las células normales poseen dos copias de cada cromosoma (diploide) y las células reproductivas una copia (haploides), sin embargo, puede suceder por accidente que alguna célula reproductiva tenga dos copias cada una, en tal caso, si se lograra combinar con otra célula diploide o haploide dará lugar a un ser vivo con varias copias de cada cromosoma (poliploide). La mayoría de las veces, la poliploidía da lugar a individuos con algún defecto genético (por ejemplo, el tener 3 copias del cromosoma 21 da lugar al Síndrome de Down), aunque en algunos casos se crean individuos viables. Un caso conocido de mutación fue el producido en el mosquito culex pipiens, en el cual se duplicó un gen que generaba una enzima que rompía los organofosfatos, componentes habituales de los insecticidas.
UNIVERSIDAD NACIONAL ABIERTA
2
Recombinación: Cuando dos células sexuales o gametos 2 , una masculina y otra femenina se combinan, los cromosomas de cada una de ellas también lo hacen, intercambiándose genes, que a partir de ese momento pertenecerán a un cromosoma diferente. A veces también se produce traslocación dentro de un cromosoma: una secuencia de código se elimina de un sitio y aparece en otro sitio del cromosoma, o en otro cromosoma. Flujo genético: Es un intercambio de material genético entre seres vivos de diferentes especies que suelen ser virus o bacterias. Normalmente este intercambio se produce a través de un vector mediante el cual incorporan a su material genético genes procedentes de una especie a la que infectan y a su vez cuando infectan a un individuo de otra especie pueden transmitirle sus genes a los tejidos generativos de gametos. De este conjunto de mecanismos, la selección natural actúa sobre el fenotipo y suele disminuir la diversidad, haciendo que sobrevivan sólo los individuos más aptos; los mecanismos que generan diversidad al combinar características actúan habitualmente sobre el genotipo. Aunque los detalles de la evolución no han sido completamente comprendidos, incluso hoy, existen algunas premisas en los que se fundamentan: ♦ La evolución es un problema que opera a nivel de cromosomas, y no a nivel de individuos. Cada individuo es codificado como un conjunto de cromosomas. ♦ La selección natural es el mecanismo mediante el cual los individuos mejor adaptados son los que tienen mayores posibilidades de reproducirse. ♦ El proceso evolutivo tiene lugar en la etapa de la reproducción. Sin embargo, los genetistas y los biólogos evolucionistas afirman que la evolución no sólo optimiza, sino que también adapta localmente en el espacio y en el tiempo; en cierto sentido, evolución significa progreso. Un organismo más evolucionado puede estar en desventaja competitiva con uno de sus antepasados, si se colocan en el ambiente de estos últimos. 2
Gameto: Célula reproductiva, masculina o femenina, cuyo núcleo sólo contiene n cromosomas
UNIVERSIDAD NACIONAL ABIERTA
3
1.2. Historia furtiva 1.2.1. De la teoría de la evolución La hipótesis de la teoría de la evolución, la cual se basa en que pequeños cambios heredables en los seres vivos y la selección natural son los dos hechos que provocan los cambios en la naturaleza y la generación de nuevas especies; fue descrita, aun desconociendo cual era la base de la herencia, por Charles Darwin (1859) en su libro “El Origen de las Especies” y presentada junto con Wallace, quien llegó a las mismas conclusiones de forma independiente. El señor Darwin pensaba que los rasgos de un ser vivo eran como un fluido, y que los elementos de los dos padres se mezclaban de manera continua en la descendencia; la debilidad de esta hipótesis estaba en que al cabo de cierto tiempo una población determinada tendría los mismos rasgos intermedios. En estudio publicado en la revista estadounidense Science (2006), se confirma que la reconstrucción del proceso de evolución de la mecánica molecular por etapas satisface los principios de la teoría de la evolución de Charles Darwin, lo cual demuestra la validez actual de este planteamiento (Véase Anexo 1). Quien descubrió que los caracteres se heredaban en forma discreta, y que se tomaban del padre o de la madre, dependiendo de su carácter dominante o recesivo, fue el monje agustino Gregor Mendel (1864) a través de experimentos realizados con arvejas para intentar responder algunas interrogantes del problema de la herencia. Las teorías de Mendel, quien trabajó en total aislamiento, se olvidaron y no se volvieron a redescubrir hasta principios del siglo XX. En 1902 el norteamericano Walter Sutton y el alemán Theodor Boverí, cada uno por su cuenta, advirtieron que el comportamiento de los cromosomas durante la meiosis 3 tenía una conducta paralela con la de los factores mendelianos en la transmisión de la herencia.
3
Meiosis: División celular mediante la cual una célula reproductora diploide (con cromosomas homólogos) se divide en cuatro células haploides (los cromosomas no tienen parejas y la información genética no está por
UNIVERSIDAD NACIONAL ABIERTA
4
W. Sutton y T. Boverí (1902) concluyeron que los factores hereditarios de que hablaba Mendel se encuentran localizados en los cromosomas, en el interior del núcleo celular. Este es el enunciado fundamental de la teoría cromosómica de la herencia. A partir de este hallazgo, se consideró que los factores hereditarios tenían una localización muy específica en el cromosoma y que al separarse cada uno de los cromosomas homólogos, se estaban separando por consiguiente los dos factores encargados de un rasgo determinado.
1.2.2. De los algoritmos genéticos El inicio de los estudios de lo que hoy podría llamarse algoritmos genéticos se presentó a finales de los años 50 y principios de los 60, en manos de biólogos evolucionistas que buscaban la explicación de los modelos de comportamiento de la evolución natural, mediante la optimización. En 1965; Ingo Rechenberg, profesor de la Universidad Técnica de Berlín, introdujo una técnica que llamó estrategia evolutiva, en la que no había población ni cruzamiento: cada padre mutaba para producir un descendiente y se conservaba el mejor de los dos, convirtiéndose en el padre de la siguiente ronda de mutación. Versiones posteriores de esta técnica introdujeron la idea de población. En 1966; L.J. Fogel, A.J. Owens y M.J. Walsh introdujeron en Norte América una técnica que se llamó programación evolutiva. En este método, las soluciones candidatas para los problemas se representaban como máquinas de estado finito sencillas; y al igual que en la estrategia evolutiva de Rechenberg, el algoritmo funcionaba mutando aleatoriamente dos máquinas simuladas y conservando la mejor de las dos. A finales de la década de los años 60; John Holland, siendo investigador de la Universidad de Michigan, desarrolló una técnica que permitió incorporar la selección natural a un programa. Luego de estudios a través de los cuales comprendió que la evolución es una forma de adaptación más potente que el aprendizaje, tomó Holland la decisión de
duplicado). Durante tal proceso, cada par de cromosomas homólogos presentes originalmente en la célula reproductora se separan y cada célula hija resultante contiene sólo uno de cada dos cromosomas homólogos.
UNIVERSIDAD NACIONAL ABIERTA
5
aplicar sus ideas sobre el tema para desarrollar programas adaptados a un fin específico. En el curso que dictaba en la mencionada universidad, denominado Teoría de Sistemas Adaptativos, con la participación de los estudiantes surgieron las ideas embrionarias de lo que se convertiría definitivamente en los algoritmos genéticos. Los objetivos de la investigación de John Holland fueron los siguientes: a.
Imitar los procesos adaptativos de los sistemas naturales y
b.
Diseñar sistemas artificiales (normalmente programas) que retengan los mecanismos más importantes de los sistemas naturales.
Más tarde David Goldberg (1989), alumno de Holland, fue pionero en tratar de aplicar los algoritmos genéticos a problemas industriales, logrando resultados favorables. El gran objetivo de Holland era lograr que las computadoras aprendieran por sí mismas, técnica que él inventó y denominó originalmente “planes reproductivos”, conocida de manera popular bajo el nombre de “algoritmo genético” después de la publicación de su libro en 1975. Como se observa, el motor de todos los elementos relacionados con los algoritmos genéticos se haya alimentado en la simple y poderosa idea de Charles Darwin: “El azar en la variación, junto con la ley de selección, es una técnica de resolución de problemas de gran complejidad y de aplicación casi ilimitada.” Por último, es importante señalar que los algoritmos genéticos se utilizan para abordar una amplia variedad de problemas en un conjunto de campos sumamente diversos, demostrando claramente su capacidad y potencialidad. Dentro de sus múltiples aplicaciones en diversas áreas, una pequeña muestra de éstas, se encuentra en los siguientes ejemplos: 1)
Diseño de salas de concierto con propiedades acústicas óptimas (Acústica).
2)
Diseño de la forma del ala de un avión supersónico (Ingeniería aeroespacial).
3)
Producción de curvas ajustadas a los datos en el problema de la curva de rotación galáctica (Astronomía y Astrofísica).
4)
Diseños de fármacos, en la llamada química combinatoria (Química).
UNIVERSIDAD NACIONAL ABIERTA
6
5)
Construcción de placas especiales de circuitos reconocedores de voz (Ingeniería eléctrica).
6)
Predicción del rendimiento futuro de acciones (Mercados financieros).
7)
Evolución de redes neuronales que pudieran jugar damas (Juegos).
8)
Utilización para los hipocentros de los terremotos, basándose en datos sismológicos (Geofísica).
9)
Diseño de polímeros conductores de electricidad basados en el carbono, conocidos como polianilinas (Ingeniería de materiales).
10)
Descubrimiento de una regla para el problema de clasificación por mayoría en autómatas celulares de una dimensión (Matemática y algoritmia).
11)
Evolución de planes tácticos para las batallas militares (Ejército y cumplimiento de la ley).
12)
Detección de la presencia de ciertas sustancias en el exterior de la célula o transportarla hacia el interior de ésta (Biología nuclear).
13)
Evolución de un complejo sistema de reconocimiento de patrones con una amplia variedad de usos potenciales (Reconocimiento de patrones y explotación de datos).
14)
Promoción de nuevas tecnologías en el campeonato anual de fútbol entre equipos de robots autónomos (Robótica).
15)
Diseño de horarios de los exámenes universitarios (Diseño de rutas y horarios).
16)
Diseño de molinos eólicos para generar energía eléctrica, mediante tarea multiobjetivos (Ingeniería de sistema).
1.3. Aspectos básicos de los algoritmos genéticos Se presenta en este aparte, un conjunto de factores básicos requeridos para poder abordar la técnica de optimización mediante la aplicación de los algoritmos genéticos, los cuales irán acompañados de ejemplos sencillos que permitan comprender su proceso.
UNIVERSIDAD NACIONAL ABIERTA
7
Los algoritmos genéticos son métodos de búsqueda y optimización basados en la teoría de la evolución de Charles Darwin, los cuales constituyen uno de los focos de mayor atractivo para los investigadores de las diversas ramas del saber. El método de búsqueda está basado en los mecanismos de selección que utiliza la naturaleza para que los individuos más aptos de una población sobrevivan, debido a su capacidad para adaptarse más fácilmente a los cambios que se producen en su entorno. Estos cambios que se efectúan en los genes de un individuo y cuyos atributos son transmitidos a sus descendientes cuando éstos se reproducen sexualmente. John Koza (1992), profesor de la Universidad de Stanford, propone la siguiente definición de algoritmo genético:
“Es un algoritmo matemático altamente paralelo que transforma un conjunto de objetos matemáticos individuales con respecto al tiempo usando operaciones modeladas de acuerdo al principio Darwiniano de reproducción y supervivencia del más apto, y tras haberse presentado de forma natural una serie de operaciones genéticas de entre las que se destaca la recombinación sexual. Cada uno de estos objetos matemáticos suelen ser una cadena de caracteres (letras o números) de longitud fija que se ajusta al modelo de las cadenas de cromosomas, y se les asocia con una cierta función matemática que refleja su aptitud.” Los algoritmos genéticos están enmarcados junto con la programación evolutiva, las estrategias evolutivas, los sistemas clasificadores y la programación genética dentro una rama de la computación denominada computación evolutiva. Las bases biológicas de estos algoritmos y sus diferencias se centran en los operadores que utilizan en sus procesos. En la lista siguiente indican de las técnicas mencionadas anteriormente y sus respectivos objetivos: Nombre de la técnica
Objetivo
Algoritmo genético
Individuo óptimo
Programación genética
Programa óptimo
Programación evolutiva
Operador genético óptimo
Estrategia Evolutiva
Aprendizaje óptimo
Sistema clasificador
Población óptima
UNIVERSIDAD NACIONAL ABIERTA
8
1.4. Operacionalidad de los algoritmos genéticos simples 1.4.1. Características de los algoritmos genéticos simples La aplicación más común de los algoritmos genéticos simples (AGS) ha sido la solución de problemas de optimización, donde han mostrado alta eficiencia y gran confiabilidad. Sin embargo no todos los problemas son apropiados para ser resueltos por esta técnica; las siguientes características son fundamentales para su aplicación: ♦ El espacio de búsqueda (sus posibles soluciones) debe estar delimitado dentro de un cierto rango. ♦ Se debe definir una función de aptitud que indique qué tan buena o mala es la adaptación de los individuos. ♦ Las posibles soluciones se codifican utilizando el código binario (0’s y 1’s). El espacio de búsqueda debe ser siempre discreto (aunque sea muy grande). Sin embargo, también podrá intentarse usar la técnica con espacios de búsqueda continuos, cuando exista un rango relativamente pequeño. La función de aptitud (o alguna modificación de ésta) es la función objetivo del problema de optimización tratado. El resultado que produce ésta es un número real, preferiblemente no negativo que a mayor resultado es mejor la solución. El algoritmo genético únicamente maximiza, pero la minimización puede realizarse fácilmente utilizando el reciproco de la función maximizante, siempre que el mismo esté determinado. Una característica que debe presentar la función es que tiene que ser capaz de castigar a las malas soluciones y de premiar a las buenas, de forma que sean estas últimas las que se propaguen con mayor rapidez. Dentro del conjunto de ventajas y desventajas manifiestas en la técnica de búsqueda y optimización mediante el uso de los algoritmos genéticos simples, podemos mencionar las siguientes: Ventajas:
UNIVERSIDAD NACIONAL ABIERTA
9
a.
No necesitan conocimientos específicos sobre el problema que intentan resolver, en particular si la función es “regular”.
b.
Operan de forma simultánea con varias soluciones, en vez de trabajar de forma secuencial como las técnicas tradicionales.
c.
Cuando se usan para problemas de optimización (maximizar una función objetivo) resultan menos afectadas por los máximos locales (aparentes soluciones) que las técnicas tradicionales.
Esta importante ventaja servirá de plataforma para el desarrollo de las pruebas empíricas, que permitirán demostrar su potencialidad, la cual constituirá el objetivo principal de esta monografía.
d.
Resulta sumamente fácil ejecutarlos en las modernas arquitecturas masivamente paralelas.
e.
Usan operadores probabilísticos, en vez de los típicos operadores determinísticos de las otras técnicas.
Desventajas:
a.
Es difícil determinar la velocidad de convergencia (o aún la convergencia), dependiendo en cierta medida de los parámetros que se utilicen (tamaño de la población, número de generaciones, nivel de precisión deseado, etc.).
b.
Pueden converger prematuramente debido a una serie de problemas relacionados con los valores de sus parámetros.
Dado un problema específico a resolver, la entrada del algoritmo genético simple representa un conjunto de soluciones potenciales del mismo, codificadas mediante el alfabeto binario y una métrica llamada función de aptitud que permite evaluar cuantitativamente a cada candidata. Estas candidatas pueden ser soluciones factibles, con el objetivo de que el AGS las mejore, pero se suelen generar aleatoriamente.
UNIVERSIDAD NACIONAL ABIERTA
10
1.4.2. Ejecución del proceso de los algoritmos genéticos simples Los pasos que se ejecutan en el proceso de aplicación de los algoritmos genéticos simples para la simulación sucinta de la evolución natural, se presentan en el siguiente diagrama:
UNIVERSIDAD NACIONAL ABIERTA
11
Diagrama de flujos del proceso del algoritmo genético simple
Codificar el dominio del problema
Generar un conjunto aleatorio de N soluciones factibles
Calificar cada solución factible (aplicar la función de aptitud)
A
Seleccionar dos individuos de acuerdo a su calificación
B
Cruzar o mezclar los códigos genéticos de los dos individuos seleccionados
Mutar algunos elementos del código genético de ciertos individuos
Incluir a los dos nuevos en una nueva población
Condición de finalizar?
si Fin
no A
La nueva Población tiene N individuos?
si
Denominarla población actual
no B
UNIVERSIDAD NACIONAL ABIERTA
12
1.4.3. Operadores genéticos Los operadores genéticos de mayor uso en la aplicación de los algoritmos genéticos simples son descritos brevemente y además utilizados en los casos prácticos a desarrollar el siguiente capítulo. a. Selección Dado el conjunto de individuos de la población actual con una probabilidad proporcional a su calificación, la operación de selección consiste en elegir dentro del mencionado conjunto, a los individuos mejor adaptados al medio en términos del resultado de la función de aptitud. Entre las múltiples formas de selección comúnmente utilizadas cabe mencionar a las siguientes: selección proporcional a la aptitud, selección por rueda de ruleta, selección elitista, selección escalada, selección por torneo, selección por rango, selección generacional, selección por estado estacionario, selección jerárquica. Para el caso del algoritmo genético simple, la selección de mayor popularidad es la selección proporcional a la aptitud equivalente a la selección por rueda de ruleta. b. Cruce Cruzar o mezclar los códigos genéticos de dos individuos seleccionados como padres para generar hijos que posean códigos mixtos. Este operador genético también tiene varias acepciones, debido a que existen muchas formas de hacerlo, sin embargo, para nuestro caso utilizaremos el cruzamiento de un punto (1-point crossover) el cual se escoge al azar. 1.
Mediante el Proceso de Bernoulli 4 (con probabilidad pc de éxito).
2.
Si ocurre un éxito cruzar o mezclar los códigos de los dos individuos seleccionados para formar dos sujetos mixtos, a los que llamaremos nuevos individuos.
4
Un experimento de Bernoulli es aquel en el que pueden ocurrir exclusivamente dos eventos posibles, uno con probabilidad de éxito pc y otro con probabilidad de fracaso 1-pc).
UNIVERSIDAD NACIONAL ABIERTA
13
3.
Si ocurre un fracaso llamamos a los individuos seleccionados nuevos individuos. Gráficamente el operador genético de cruzamiento de un punto (1-point
crossover), con punto de cruce en la tercera posición del cromosoma, es como sigue:
Puntos de Cruce
Padres
1
0
0
1
0
1
0
1
1
1
1
0
0
1
1
1
1
0
Descendientes
1
0
0
0
1
1
1
1
0
1
1
0
1
0
1
0
1
1
c. Mutación Mutar o alterar deliberadamente algunos elementos del código de ciertos individuos, los cuales se seleccionan aleatoriamente, para así generar nuevos individuos ubicados en regiones del problema no exploradas aún. 1.
Por cada bit de cada nuevo individuo, mediante el Proceso de Bernoulli (con probabilidad pm de éxito).
2
Si ocurre un éxito cambiar el bit en turno por su complemento.
3
Si ocurre un fracaso el bit permanece inalterado. Gráficamente el operador genético de mutación como sigue: 1
1
1
0
1
0
1
0
0
1
1
0 Descendiente
1
1
1
0
1
1
1
0
0
1
1
0 Descendiente mutado
Los
gen mutado
parámetros del algoritmo genético que deben ser tomados en cuenta al realizar un ensayo empírico son: los valores de probabilidad para los operadores reproducción, cruce y mutación, el tamaño de la población, el número de generaciones, la precisión deseada y el
UNIVERSIDAD NACIONAL ABIERTA
14
tipo de selección a utilizar. Además, es necesario establecer el rango o el intervalo de búsqueda y la codificación de la función objetivo. Los parámetros empíricos recomendables para el algoritmo genético simple se señalan a continuación: Número de generaciones
57
Tamaño de la población
47
Probabilidad de cruce
0,60
Probabilidad de mutación
0,03
Selección
ruleta
La convergencia del algoritmo genético simple, se apoya en el siguiente enunciado “Siendo que el algoritmo genético simple opera con una población en cada iteración, es de esperarse que el método, al final del proceso, de cómo resultado que la mayoría de los individuos de la población sean muy similares, y que en el infinito todos sean iguales.” La teoría para estudiar la convergencia de estos algoritmos en caso de cadenas binarias, se basa principalmente en considerar que una cadena es un representante de una clase de equivalencia o esquema. John Holland, con el Teorema los Esquemas, intenta dar respuesta a que si existe una manera matemática que indique como se afectará a la siguiente generación en el proceso evolutivo, el cual depende de la selección, cruce y mutación. A partir de los resultados, el Teorema de los Esquemas (Teorema Fundamental), prueba que la población converge a unos esquemas que cada vez son más parecidos, y en el límite a una cadena única. El mencionado teorema ha sido cuestionado por muchos matemáticos, sin embargo el tiempo ha permitido avances importantes al respecto, lo cual da robustez al mismo.
1.4.4. Ejemplo manual de optimización numérica mediante el AGS
UNIVERSIDAD NACIONAL ABIERTA
15
Para la función f ( x ) = x
2
Usando un algoritmo genético simple con probabilidad de cruce pC = 0,60 y probabilidad de mutación pM = 0.03333, para 5 generaciones, con selección por torneo (este mecanismo de selección es distinto al utilizado en el Anexo 2, se indica sólo a manera de ilustración).
Se desea encontrar el valor de x que hace que la función f(x) alcance su valor máximo, siendo el rango de la variable x los valores enteros comprendidos entre 0 y 31. Sabemos que el máximo se alcanza en x = 31, donde f vale 961. Lo primero que debemos hacer es codificar las posibles soluciones (posibles valores de x). Lo haremos con la codificación binaria. Esto es (0,0,0,0,0) equivale a x = 0 y que (1,1,1,1,1) equivale a x = 31. Cada posible valor de la variable x en representación binaria se le denomina individuo. Una colección de individuos constituye lo que se denomina población y el número de individuos que la componen es el tamaño de la población. Una vez que tenemos codificada la solución, debemos escoger un tamaño de población. Para este ejemplo vamos a escoger 6 individuos. Debemos partir de una población inicial. Una manera de generarla aleatoriamente, puede ser lanzando una moneda al aire; si sale cara, la primera componente del primer individuo es un 0 y en caso contrario es un 1. Se repite el lanzamiento de la moneda y tendremos la segunda componente del primer individuo (un 0 si sale cara y un 1 si sale sello). Así hasta 5 veces y se obtendrá el primer individuo. Se repite la secuencia anterior para generar los individuos restantes de la población. En total se realizan 5 * 6 = 30 lanzamientos de la moneda.
Iteración 1
UNIVERSIDAD NACIONAL ABIERTA
16
El siguiente paso es hacer competir a los individuos entre sí. Que utilizaremos en nuestro caso como un proceso de selección. En la tabla 1 se resume este paso. Tabla 1.- SELECCIÓN N° del individuo
Población inicial
Valor de X
Valor de F(x)
Pareja asignada
1
(0,1,1,0,0)
12
144
6
2
(1,0,0,1,0)
18
324
3
3
(0,1,1,1,1)
15
225
2
4
(1,1,0,0,0)
24
576
5
5
(1,1,0,1,0)
26
676
4
6
(0,0,0,0,1)
1
1
1
Como de observa en la tabla precedente, el mejor individuo es el 5 (f(5) = 676). Al Calcular la media de f resulta fmed = 324,33. Ahora bien, una manera de realizar el proceso de selección es mediante un torneo entre dos. A cada individuo de la población se le asigna una pareja y entre ellos se establece un torneo: el mejor genera dos copias y el peor se descarta. En la última columna se indica la pareja asignada a cada individuo, lo cual se ha realizado aleatoriamente. Es importante resaltar, como se dijo anteriormente, que existen muchas variantes de este proceso de selección. Después de realizar el proceso de selección, la población que tenemos es la mostrada en la columna 2 de la tabla 2. Observamos, por ejemplo, que en el torneo entre el individuo 1 y el 6 de la población inicial, el primero de ellos ha recibido dos copias, mientras que el segundo no es tomado en cuenta. Este proceso se repite hasta completar la tabla 2 que sigue:
Tabla 2.- CRUCE N° del individuo
Población 1
Pareja asignada
1
(0,1,1,0,0)
5
2
(1,0,0,1,0)
3
3
(1,0,0,1,0)
2
4
(1,1,0,1,0)
6
5
(1,1,0,1,0)
1
6
(0,1,1,0,0)
4
Tras realizar la selección, se realiza el cruce. Que en este caso lo haremos mediante el cruce de un punto, esto es: se forman parejas entre los individuos aleatoriamente de
UNIVERSIDAD NACIONAL ABIERTA
17
forma similar a la selección. Dados dos individuos pareja, que se van ha cruzar, se establece un punto de cruce aleatorio, que no es más que un número aleatorio entre 1 y 4 (la longitud del individuo menos 1). Por ejemplo, en la pareja 2-3 el punto de cruce es 3, lo que significa que un hijo de la pareja conserva los tres primeros bits de la pareja 2 y hereda los dos últimos de la pareja 3, mientras que el otro hijo de la pareja conserva los tres primeros bits de la pareja 3 y hereda los dos últimos de la pareja 2. La población resultante se muestra en la columna (2) de la tabla 3. Cabe destacar que en el ensayo en todas las parejas se efectuó el cruce y el individuo 2 sufrió una mutación en el bit 3. Tabla 3.- POBLACION TRAS EL CRUCE Y DE LA MUTACIÓN N° del individuo
Población 1
Valor de X
Valor de F(x)
1
(0,1,1,1,0)
14
196
2
(1,0,1,1,0)
22
484
3
(1,0,0,1,0)
18
324
4
(1,1,0,0,0)
24
576
5
(1,1,0,0,0)
24
576
6
(0,1,1,1,0)
14
196
Ahora el valor máximo de f es 576 (para los individuos 4 y 5), mientras que antes de la selección, el cruce y la mutación era de 676. Aunque el máximo individual disminuyó, se observa que fmed ha escalado de 324,3 a 392, significa que la población después de la selección, el cruce y la mutación es mejor que antes de estas transformaciones. El siguiente paso es volver a realizar la selección, el cruce y la mutación tomando como población inicial la de la tabla 3. Esta manera de proceder se repetirá hasta construir 5 generaciones y como el resultado será la mejor solución de la última iteración, aunque también se puede ir guardando la mejor solución de todas las iteraciones anteriores y al final tomar la mejor solución. En realidad un algoritmo genético no garantiza la obtención del óptimo pero, si está bien construido, proporcionará una solución razonablemente buena. Puede ocurrir también que se obtenga el óptimo, pero el algoritmo no tiene capacidad para, en ese momento, detener el proceso y dar información del resultado. Iteración 2
UNIVERSIDAD NACIONAL ABIERTA
18
Repitiendo todo el proceso indicado para la construcción de la pareja asignada, nos resulta la siguiente tabla poblacional donde aplicaremos el operador de selección tal como se hizo en la iteración 1: Tabla 1.- SELECCIÓN N° del individuo
Población 2
Valor de X
Valor de F(x)
Pareja asignada
1
(0,1,1,1,0)
14
196
3
2
(1,0,1,1,0)
22
484
2
3
(1,0,0,1,0)
18
324
4
4
(1,1,0,0,0)
24
576
5
5
(1,1,0,0,0)
24
576
6
6
(0,1,1,1,0)
14
196
1
Después del proceso de selección tenemos a continuación la tabla de cruce para la iteración 1: Tabla 2.- CRUCE N° del individuo
Población 2
Pareja asignada
1
(1,0,0,1,0)
5
2
(1,0,1,1,0)
6
3
(1,1,0,0,0)
3
4
(1,1,0,0,0)
4
5
(1,1,0,0,0)
1
6
(0,1,1,1,0)
2
Aplicando los operadores genéticos de cruce y mutación, nos resulta la siguiente tabla poblacional. Cabe destacar que en el ensayo en todas las parejas se efectuó el cruce y ningún individuo sufrió una mutación.
Tabla 3.- POBLACION TRAS EL CRUCE Y DE LA MUTACIÓN N° del individuo
Población 2
Valor de X
Valor de F(x)
1
(1,0,0,0,0)
16
256
2
(1,0,1,1,0)
22
484
3
(1,1,0,1,0)
26
676
4
(1,1,0,0,0)
24
576
5
(1,1,0,1,0)
26
676
6
(0,1,1,1,0)
14
196
Ahora el valor máximo de f es 676 (para los individuos 3 y 5), que era el máximo en la población inicial, se observa que fmed ha aumentado de 392 a 473,33, nuevamente se
UNIVERSIDAD NACIONAL ABIERTA
19
evidencia que la población va mejorando a medida que se le aplican los operadores genéticos a sus individuos. Repitiendo el proceso anterior, los resultados de las iteraciones restantes son los siguientes: Iteración 3 Tabla 1.- SELECCIÓN N° del individuo
Población 3
Valor de X
Valor de F(x)
Pareja asignada
1
(1,0,0,0,0)
16
256
3
2
(1,0,1,1,0)
22
484
6
3
(1,1,0,1,0)
26
676
2
4
(1,1,0,0,0)
24
576
5
5
(1,1,0,1,0)
26
676
4
6
(0,1,1,1,0)
14
196
1
Tabla 2.- CRUCE N° del individuo
Población 3
Pareja asignada
1
(1,1,0,1,0)
5
2
(1,0,1,1,0)
4
3
(1,1,0,1,0)
3
4
(1,1,0,1,0)
2
5
(1,1,0,0,0)
1
6
(1,0,0,0,0)
6
Tabla 3.- POBLACION TRAS EL CRUCE Y DE LA MUTACIÓN N° del individuo
Población 3
Valor de X
Valor de F(x)
1
(1,1,0,0,0)
24
576
2
(1,0,1,1,0)
20
400
3
(1,1,0,1,0)
26
676
4
(1,1,0,1,0)
24
576
5
(1,1,0,1,0)
26
676
6
(1,0,0,0,0)
16
256
En las parejas 3 y 6 se efectuó el cruce y ningún individuo sufrió una mutación. El valor máximo de f es 676 (individuos 3 y 5) y fmed ha aumentado de 473,33 a 500.
UNIVERSIDAD NACIONAL ABIERTA
20
Iteración 4 Tabla 1.- SELECCIÓN N° del individuo
Población 4
Valor de X
Valor de F(x)
Pareja asignada
1
(1,1,0,0,0)
24
576
2
2
(1,0,1,0,0)
20
400
1
3
(1,1,0,1,0)
26
676
6
4
(1,1,0,0,0)
24
576
5
5
(1,1,0,1,0)
26
676
3
6
(1,0,0,1,0)
18
196
4
Tabla 2.- CRUCE N° del individuo
Población 4
Pareja asignada
1
(1,1,0,0,0)
6
2
(1,1,0,0,0)
4
3
(1,1,0,1,0)
5
4
(1,1,0,1,0)
2
5
(1,1,0,1,0)
3
6
(1,1,0,0,0)
1
Tabla 3.- POBLACION TRAS EL CRUCE Y DE LA MUTACIÓN N° del individuo
Población 4
Valor de X
Valor de F(x)
1
(1,1,0,0,0)
24
576
2
(1,1,0,0,0)
24
576
3
(1,1,0,1,0)
26
676
4
(1,1,0,0,0)
26
676
5
(1,1,0,1,0)
26
676
6
(1,0,0,1,0)
18
324
En todas las parejas se efectuó el cruce y ningún individuo sufrió una mutación. El valor máximo de f es 676 (individuos 3, 4 y 5) y fmed ha aumentado de 500 a 584. Iteración 5 Tabla 1.- SELECCIÓN N° del individuo
Población 5
UNIVERSIDAD NACIONAL ABIERTA
Valor de X
Valor de F(x)
Pareja asignada
21
1
(1,1,0,0,0)
24
576
5
2
(1,1,0,0,0)
24
576
4
3
(1,1,0,1,0)
26
676
1
4
(1,1,0,0,0)
26
676
3
5
(1,1,0,1,0)
26
676
6
6
(1,0,0,1,0)
18
324
2
Tabla 2.- CRUCE N° del individuo
Población 5
Pareja asignada
1
(1,1,0,1,0)
3
2
(1,1,0,1,0)
6
3
(1,1,0,1,0)
1
4
(1,1,0,1,0)
5
5
(1,1,0,1,0)
4
6
(1,1,0,0,0)
2
Tabla 3.- POBLACION TRAS EL CRUCE Y DE LA MUTACIÓN N° del individuo
Población 5
Valor de X
Valor de F(x)
1
(1,1,0,1,0)
26
676
2
(1,1,0,0,0)
24
576
3
(1,1,0,1,0)
26
676
4
(1,1,0,1,0)
26
676
5
(1,1,0,1,0)
26
676
6
(1,0,1,1,0)
22
484
En todas las parejas se efectuó el cruce y el individuo 6 sufrió una mutación en el bit 3. El valor máximo de f es 676 (individuos 1, 3, 4 y 5) y fmed ha aumentado de 584 a 627,33.
Como la condición del proceso es finalizar en la quinta generación, el algoritmo genético en este caso nos da como resultado que el máximo de la función para el intervalo estudiado es 676; se evidencia la necesidad de seguir iterando, en este caso, porque conocemos el valor máximo de la función. He aquí un problema real del algoritmo, que es la tendencia a la homegeinización de la población, es decir a que todos los individuos de la misma sean idénticos. Esto impide que el algoritmo siga explorando nuevas soluciones, con lo que podemos quedar estancados en un máximo local no muy bueno. Existen técnicas
UNIVERSIDAD NACIONAL ABIERTA
22
para contrarrestar esta situación. El mecanismo más elemental, aunque no siempre suficientemente eficaz, es introducir una mutación tras la selección y el cruce. Una vez que se ha realizado la selección y el cruce se selecciona un número determinado de bits de la población y se alteran aleatoriamente.
1.4.5. Código fuente de un algoritmo genético simple Existen varios paquetes y bibliotecas de algoritmos genéticos en el mercado, sin embargo, de acuerdo a las características específicas de algún problema, se hace necesario reimplementar todo el algoritmo, en vez de emplear algún paquete preexistente. Algunos de esos paquetes son:
•
GALOPPS:
Su
dirección
primaria
en
Internet
es
GARAGe.cps.msu.edu/software/software-index.html, y su dirección para descargarlo vía FTP es garage.cps.msu.edu/pub/GA/galopps/ •
GAGS: Generador de aplicaciones basadas en algoritmos genéticos, escrito en C++. Desarrollado por el grupo de J.J. Melero. Excelente. Su dirección Web es kalel.ugr.es/gags.html, y su dirección para descargarlo vía FTP es kal-el.ugr.es/GAGS/.
•
FORTRAN GA: Desarrollo de algoritmos genéticos para Fortran. Su dirección Web es www.staff.uiuc.edu/~ carroll/ga.html.
•
Galib: Biblioteca de algoritmos genéticos de Matthew. Conjunto de clases en C++ de algoritmos genéticos. Su dirección Web es lancet.mit.edu/ga/, y su dirección para descargarlo
vía
FTP
es
lancet.mit.edu/pub/ga/.
Podemos
registrarlo
en
http://lancet.mit.edu/ga/Register.html. •
GAS: Paquete para desarrollar aplicaciones de algoritmos genéticos en Python. Su dirección Web es starship.skyport.net/crew/gandalf, y su dirección para descargarlo vía FTP es ftp.coe.uga.edu/users/jae/ai.
•
GECO: Conjunto de herramientas para Lisp. Su dirección para descargarlo vía FTP es ftp://ftp.aic.nrl.navy.mil/pub/galist/src/.
UNIVERSIDAD NACIONAL ABIERTA
23
•
GPdata: Para desarrollar algoritmos genéticos en C++. Su dirección para descargarlo vía FTP es ftp.cs.bham.ac.uk/pub/authors/W.B.Langdon/gp-code/, y su documentación -GPdata-icga-95.ps- la podemos encontrar en el site de Internet cs.ucl.ac.uk/genetic/papers/.
•
gpjpp: Bibliotecas de clases para desarrollar algoritmos genéticos en Java Su dirección Web es www.turbopower.com/~ kimk/gpjpp.asp.
•
GP Kernel: Biblioteca de clases para programación genética en C++. Su dirección Web es www.emk.e-technik.th-darmstadt.de/~ thomasw/gp.html.
•
lil-gp: Herramientas para programación genética en C. Su dirección Web es isl.msu.edu/GA/software/lil-gp/index.html, y su dirección para descargarlo vía FTP es isl.cps.msu.edu/pub/GA/lilgp/. Podemos encontrar los parches para Linux en www.cs.umd.edu/users/seanl/patched-gp.
•
PGAPack: Parallel Genetic Algorithm Library. Biblioteca de algoritmos genéticos paralelos. Podemos encontrarlo en la dirección de Internet con un navegador en www.mcs.anl.gov/home/levine/PGAPACK/index.html,
y
su
dirección
para
descargarlo vía FTP es ftp.mcs.anl.gov/pub/pgapack/. •
Sugal: SUnderland Genetic ALgorithm system. Para hacer experimentos con algoritmos genéticos. Podemos encontrarlo en la dirección de Internet con el navegador en www.trajan-software.demon.co.uk/sugal.htm.
•
ADATE: Automatic Design of Algorithms Through Evolution. Programación evolutiva. Su dirección Web es www-ia.hiof.no/~ rolando/adate_intro.html.
•
GPsys: Sistema de programación genética en Java. Podemos encontrarlo en la dirección de Internet www.cs.ucl.ac.uk/staff/A.Qureshi/gpsys.html. En el Anexo 2 de esta monografía, se presenta el código fuente del algoritmo
genético simple, en lenguaje pascal, aplicado a la optimización de las funciones reales de una y dos variables que fueron elegidas para ser estudiadas mediante esta herramienta.
UNIVERSIDAD NACIONAL ABIERTA
24
CAPÍTULO II Métodos clásicos de optimización numérica En el conjunto de métodos clásicos de optimización numérica, existen dos grandes grupos, que lo podemos denominar algoritmos para problemas con restricciones (que requieren los valores de la función objetivo y el conjunto de restricciones) y algoritmos para problemas sin restricciones (que requieren los valores de la función objetivo y los valores de la o las derivadas de la función objetivo); en el primer grupo cabe mencionar el Método Simplex y en el segundo grupo, se ubican el Algoritmo del Gradiente con paso constante y el Algoritmo de Newton con paso constante, éstos, en nuestra opinión, es una buena representación de los métodos de optimización clásicos considerados no heurísticos, debido a que la búsqueda de los puntos óptimos se realiza mediante estrategias que no dependen de eventos aleatorios, lo cual los hace distintos al Algoritmo Genético Simple, en cuanto a sus mecanismos de funcionamiento. Procederemos en las líneas subsiguientes a indicar y a describir brevemente la rutina de los dos métodos antes mencionados, que utilizan los algoritmos para problemas sin restricciones, el cual es el tema que nos ocupa, a fin de tener una panorámica de estas alternativas de optimización numérica para comparar sus resultados con los obtenidos con la aplicación del algoritmo genético simple.
2.1. Algoritmo del gradiente con paso constante Este algoritmo es del tipo:
{
}
Ω = x ∈ IR n / x verifica una condición necesaria de optimalidad , dado
k
x
,
en
la
iteración
k
se
calcula
un
punto
x k +1 = x k + t k d k , donde t k ∈ IR, d k ∈ IR n . Se ha demostrado que si d ∈ IR n , entonces ∇ f (x ), d > 0
UNIVERSIDAD NACIONAL ABIERTA
por
lo
tan to
existe
T > 0 / f (x + td ) > f (x ), 0 < t < T .
25
Visto que el problema matemático consiste en maximizar f(x) para x ∈ IR , con f n
continuamente diferenciable, es natural escoger en cada iteración una dirección
dk
tal
( )
∇f x k , d k > 0 y la manera más sencilla de hacerlo es tomando
que
d k = ∇f (x k ). Los algoritmos del gradiente escogen así dk en cada iteración y por lo tanto difieren entre sí sólo en la manera de determinar el número tk llamado paso, el cual junto con dk define
x k +1 = x k + t k d k .
Para
todos
los
algoritmos
del
gradiente
se
tiene
Ω ={x ∈ IR n / ∇f ( x ) = 0}. Δ
El algoritmo del gradiente con paso constante, es un algoritmo de búsqueda del valor óptimo de una función objetivo, el cual tiene la siguiente estructura: Inicio:
Escoger
x 0 ∈ IR n
tal
que
{
( )}
x0 = x / f ( x ) ≥ f x 0
es
acotado,
β ∈ (0,1) , hacer k=0, ir a la iteración k
Iteración K
paso 1: Calcular
paso 2: Si
∇f (x k )
∇f (x k ) = 0 parar
si no, hacer
(
d k = ∇f (x k ), λ = 1, ir al paso 3
) ( Δ
paso 3: Calcular Δ x , λ = f x + λd
(
k
k
k
) − f (x ) − λ2 k
( )
∇f x k
2
)
paso 4: Si Δ x , λ ≥ 0, hacer t k = λ ir al paso 5 k
si no, hacer
UNIVERSIDAD NACIONAL ABIERTA
λ = βλ
ir al paso 3
26
paso 5: x
k +1
= x k + t k d k , k = k + 1, ir a la iteración k
La siguiente proposición se apoya en un supuesto vital para la operatividad de este algoritmo: Proposición:
Si f es dos veces continuamente diferenciable, si existen M>0, m>0 tales que
− M y ≤ y, H ( x ) y ≤ − m y , 2
2
para todo
y ∈ IR n , para todo x ∈ x0 , donde H es
la matriz hessiana de f, entonces cualquier sucesión infinita generada por el algoritmo a partir
x0
de
converge
( ) ( )
linealmente
( ( ) ( ))
f x − f x ≤q f x − f x , y
*
k
q = 1−
m 2M
k
*
0
hacia
x − x ≤ Cq k
*
un k 2
punto
x*
Ω.
de
Además
1
⎛ Mq ⎞ 2 0 * con C = ⎜ ⎟ x −x ⎝ m ⎠
m⎞ ⎛ ⎜1 + ⎟. ⎝ M⎠
2.1.1. Ejemplo manual del algoritmo del gradiente con paso constante Aplicar el AGPC para obtener algunos términos de la sucesión que converge al valor óptimo de f ( x ) = −
3 x12 x1 x2 x22 + − , con β = 4 2 4 2
y
x 0 = (1,0 ) .
( ) = − 12
Tenemos que f es cóncava y dos veces continuamente diferenciable. Como f x
la curva de nivel
f (x ) = −
1 es una elipse, el conjunto 2
{
0
( )}
X 0 = x / f (x ) ≥ f x 0
convexo y compacto.
1⎤ ⎡ ⎢− 1 4 ⎥ Además H ( x ) = ⎢ ⎥ , los autovalores son -3/4 y -5/4 1 − 1 ⎢ ⎥ ⎣4 ⎦
UNIVERSIDAD NACIONAL ABIERTA
27
y
es
Por lo tanto
de
−
5 2 3 2 y ≤ y, H ( x ) y ≤ − y , se deduce que la sucesión generada a partir 4 4
x 0 = (1,0) converge hacia un punto de Ω .
A continuación se calculan algunos términos de esta sucesión Iteración 0:
⎛ −1 ⎞ ⎛0⎞ ∇f x 0 = ⎜ 1 ⎟ ≠ ⎜⎜ ⎟⎟, d 0 = ∇f x 0 , ⎜ − ⎟ ⎝0⎠ ⎝ 4⎠
( )
λ = 1,
( )
( )
∇f x 0
2
=
( )
17 , 16
f x0 = −
1 2
⎛0⎞ 1 y = x 0 + λd 0 = ⎜ 1 ⎟, f ( y ) = − ⎜ ⎟ 32 ⎝4⎠ 1 1 1 ⎛ 17 ⎞ Δ x 0 ,1 = − + − ⎜ ⎟ < 0 32 2 2 ⎝ 16 ⎠
( )
λ = βλ =
3 , 4
⎛1⎞ ⎜ ⎟ y = x 0 + λd 0 = ⎜ 4 ⎟, ⎜⎜ 3 ⎟⎟ ⎝ 16 ⎠
f ( y ) # 0,037
3⎞ ⎛ Δ⎜ x 0 , ⎟ # 0,065, 4⎠ ⎝
⎛1⎞ ⎜ ⎟ 3 x1 = x 0 + d 0 = ⎜ 4 ⎟ 4 ⎜⎜ 3 ⎟⎟ ⎝ 16 ⎠
Iteración 1:
⎛ 13 ⎞ ⎜ − ⎟ ⎛ 0⎞ 1 ∇f (x ) = ⎜ 64 ⎟ ≠ ⎜⎜ ⎟⎟, d 1 = ∇f (x1 ), ⎜⎜ − 1 ⎟⎟ ⎝ 0 ⎠ ⎝ 8 ⎠ λ = 1,
⎛ 0,047 ⎞ ⎟⎟, y = x1 + λd 1 # ⎜⎜ ⎝ 0,063 ⎠ Δ x1 ,1 # 0,0065
∇f (x1 ) = 0,057 , 2
f (x 0 ) = −
f ( y ) # − 0,002
( )
⎛ 0,047 ⎞ ⎟⎟ x 2 = x1 + d 1 # ⎜⎜ ⎝ 0,063 ⎠ Iteración 2:
UNIVERSIDAD NACIONAL ABIERTA
28
1 2
⎛ − 0,031⎞ ⎛ 0 ⎞ ⎟⎟ ≠ ⎜⎜ ⎟⎟, d 2 = ∇f (x 2 ), ∇f (x 2 ) # ⎜⎜ ⎝ − 0,051⎠ ⎝ 0 ⎠ ⎛ 0,016 ⎞
f (x 2 ) # − 0,002
2
f ( y ) # − 0,00015
⎟⎟ , λ = 1 y = x 2 + d 2 # ⎜⎜ ⎝ 0,012 ⎠
(
∇f (x 2 ) # 0,004 ,
)
Δ x 2 , 1 # − 0,00015 ⎛ 0,024 ⎞ ⎟⎟ , y = x 2 + λd 2 # ⎜⎜ ⎝ 0,025 ⎠
λ ¨= βλ
3⎞ ⎛ Δ⎜ x 2 , ⎟ # 0, 4⎠ ⎝
x3 = x 2 +
La solución es x = (0,
3 2 ⎛ 0,024 ⎞ ⎟⎟ d # ⎜⎜ 4 ⎝ 0,025 ⎠
( )
0 ),
*
f ( y ) # − 0,0005
f x * = 0 . Aunque la sucesión converge rápidamente, se
observa una gran influencia de los errores de redondeo cerca de la solución en la determinación de Δ( x, λ ) .
2.2. Algoritmo de Newton con paso constante Los algoritmos del gradiente consideran la aproximación lineal de la función objetivo para determinar la dirección de desplazamiento. Sin embargo, si estamos cerca del punto solución, es decir si ∇f ( x ) es pequeño o bien si f es estrictamente cóncava, una aproximación cuadrática F(x) en torno a xk representa mejor el comportamiento de f, donde:
( )
( )(
)
F ( x ) = f x k + ∇f x k , x − x k +
( )(
)
1 x − x k , H x k x − x k , siendo H la matriz hessiana 2
de f. Si f es estrictamente cóncava, F lo es también y alcanza su máximo en el punto x tal que
( )
( )(
)
∇f x k + H x k x − x k = 0, o
( )
H xk
sea
es regular ,
( ) ( )
x − x k = − H x k ∇f x k
Por lo tanto en todo punto xk donde H(xk) es definida negativa, un desplazamiento a Δ
partir de xk en la dirección d = − H k
( )
que ∇f x , d k
k
−1
(x )∇f (x ) producirá un crecimiento del valor de f ya k
k
( )
= − H xk d k , d k > 0
UNIVERSIDAD NACIONAL ABIERTA
29
Esta manera de determinar dk caracteriza los algoritmos de Newton, los cuales en cada iteración calculan xk+1 a partir de xk mediante
( ) ( )
Δ
x k +1 = x k + t k d k , con d k =− H −1 x k ∇f x k y sólo difieren entre sí en el método de escoger el paso tk. Para todos los algoritmos de Newton, tenemos:
Ω = {x ∈ IR n / ∇f ( x ) = 0},.bajo el supuesto
que f es al menos dos veces continuamente diferenciable y su matriz hessiana regular. El algoritmo de Newton con paso constante se escribe así:
Inicio:
⎛ ⎝
1⎞ 2⎠
α ∈ ⎜ 0, ⎟, β ∈ (0,1) (es conveniente tomar
x 0 ∈ IR n
Escoger
β ∈ (0,5 , 0,8) , hacer k=0, ir a la iteración k
Iteración K
paso 1: Calcular ∇f
paso 2: Si ∇f
k
paso 3: Calcular Δ
si no, hacer
paso 5
k
(x ) = 0 parar
si no, hacer
paso 4: Si Δ
(x )
d k = − H −1 (x k )∇f (x k ) , hacer λ = 1 , ir al paso 3
(x , λ )= f (x k
(x , λ ) ≥ 0, k
Δ
k
) ( )
( )
+ λd k − f x k − λα ∇f x k , d k ,
hacer t k = λ , ir al paso 5
λ = λβ , ir al paso 3
x k +1 = x k + t k d k , k=k+1 ir a la iteración k
UNIVERSIDAD NACIONAL ABIERTA
30
2.2.1. Ejemplo manual del algoritmo de Newton con paso constante Aplicar el ANPC para obtener algunos términos de la sucesión que converge al valor óptimo
de
f (x ) = −
x12 x1 x2 x22 + − , con β = 0,7 2 4 2
y α = 0,4 .
1⎤ ⎡ ⎢− 1 4 ⎥ En el ejemplo anterior vimos que H ( x ) = ⎢ ⎥ , tiene por autovalores -3/4 y 1 − 1⎥ ⎢ ⎣4 ⎦
x 0 = (1,0) converge.
-5/4, por lo que sucesión generada por el algoritmo a partir de
Iteración 0:
⎛ − 1⎞ ⎛ 0 ⎞ ⎛1⎞ x 0 = ⎜⎜ ⎟⎟, ∇f x 0 = ⎜ 1 ⎟ ≠ ⎜⎜ ⎟⎟, ⎜ ⎟ ⎝ 0⎠ ⎝ 0⎠ ⎝4⎠
( )
⎛ − 1⎞ d 0 = − H −1 (x 0 )∇f (x 0 ) = ⎜⎜ ⎟⎟, ⎝0⎠
λ = 1,
⎛0⎞ y = x 0 + λd 0 = ⎜⎜ ⎟⎟, ⎝0⎠
( )
( )
1 f (x 0 ) = − , 2
⎡ ⎢ −1 x0 = ⎢ 1 ⎢− ⎣ 4
H −1 (
)
1⎤ − ⎥ 4 ⎥ −1⎥ ⎦
( )
∇f x 0 , d 0 = 1
f (y) = 0
( )
Δ x 0 ,1 = f ( y ) − f x 0 − 0,4 ∇f x 0 , d 0 = 0,1 > 0 Por lo tanto
Iteración 1:
⎛ 0⎞ x1 = x 0 + d 0 = ⎜⎜ ⎟⎟ ⎝ 0⎠ ⎛0⎞ ⎛ 0⎞ x1 = ⎜⎜ ⎟⎟, ∇f (x1 ) = ⎜⎜ ⎟⎟, parar. ⎝0⎠ ⎝ 0⎠
UNIVERSIDAD NACIONAL ABIERTA
31
CAPÍTULO III Ensayos de aplicación del algoritmo genético simple y de los métodos clásicos en la optimización numérica y = x 2 sen 2 (10πx) + 1 ,
En este capítulo vamos a maximizar la función
dominio [0, 2] y minimizar la función Z = 0,5 +
sen 2
(
)
x 2 + y 2 − 0,5
(1 + 0,001(x
2
+ y2
))
2
en el
, en el dominio
[-200, 200] X [-200, 200] mediante el algoritmo genético simple, implementado en lenguaje pascal a fin de comentar los resultados obtenidos.
3.1. Evaluación de la función Y = x 2 sen 2 (10πx) + 1 en el dominio [0,2] Iniciaremos el ensayo mencionando algunas características de esta función, cuyo gráfico se muestra en la figura N° 1 que sigue:
y
5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0
0
0.5
1
1.5
2 x
figura N° 1 gráfica de la función Y = x 2 sen 2 (10πx) + 1
Como se observa, esta función en el dominio de definición, tiene una oscilación moderada con tendencia al aumento y manifiesta un incremento de su amplitud directamente proporcional al incremento de la variable independiente. El máximo global se ubica muy cerca de x = 2 y registra varios máximos locales, que se resaltan a partir de x = 1.
UNIVERSIDAD NACIONAL ABIERTA
32
En el Anexo 3 de este trabajo se detallan las herramientas computacionales utilizadas para el desarrollo de este aparte y de otros donde se hizo necesario el uso de las mismas.
3.1.1. Aplicación del algoritmo genético simple Los parámetros para la corrida de la función que se intenta optimizar mediante el algoritmo genético simple son los que se detallan a continuación: Tamaño del cromosoma: 15
Tamaño de la población: 100
Número de generaciones: 200
Probabilidad de cruce: 0,85
Probabilidad de mutación: 0,013. El tamaño del cromosoma igual 15, significa que los valores de la variable x se codificaron con 15 bits cada uno, resultando que los individuos se representan mediante ristras de 0’s y 1’s de tamaño 15. El tamaño de la población igual 100, significa que para cada una de las 200 generaciones estarán formadas por 100 individuos. Pc = 0,85; quiere decir que en cada generación se modificará probablemente el 85% de la población y en todos los cruces que se aplican, los hijos sustituirán a los padres independientemente de que la aptitud de éstos sea peor que la de los padres. Pm = 0,013, significa que el 10% de la población y el 0,13% de los genes es probable que sean sometidos a mutación, por lo que en este caso como tenemos 100 individuos cada uno codificado con 15 genes se espera que aproximadamente 19 genes sean mutados por cada generación y así los individuos mutados sustituirán a los iniciales independientemente de su aptitud. La tabla N° 1 que se presenta a continuación, contiene un resumen de los resultados empíricos, de los datos que consideramos relevantes, obtenidos mediante la corrida del programa del algoritmo genético simple, con las características paramétricas mencionadas anteriormente, que se encuentra en el Anexo 2 de este trabajo.
UNIVERSIDAD NACIONAL ABIERTA
33
En la misma se observa que una vez realizadas 200 generaciones, el algoritmo genético encontró el valor máximo de la función en estudio que resultó ser igual a 4,8035, el cual se alcanza en el valor de la variable x igual a 1,9504379406.
UNIVERSIDAD NACIONAL ABIERTA
34
Tabla N° 1 Resumen de resultados empíricos
Función de Aptitud Valor de X
Máximo Mínimo Promedio
Número Suma
Mutaciones
Cruces
Generaciones
1,8289132361 3,0797 1,0050
1,5705
157,0515
17
43
1
1,9411603100 4,7886 1,0000
1,6305
163,0526
31
86
2
1,9500106815 4,8025 1,0000
2,0026
200,2616
45
128
3
1,9500106815 4,8025 1,0020
2,2726
227,2647
59
172
4
1,9494613483 4,7993 1,0007
2,7030
270,3016
76
216
5
1,9498275704 4,8017
1,0042
2,8430
284,2982
97
258
6
1,9498215702 4,8016
1,0006
3,2116
321,1613
116
298
7
1,9500106815 4,8025
1,0010
3,4588
345,8796
127
340
8
1,9506177701 4,8028
1,0012
3,7419
374,1892
141
385
9
1,9506177701 4,8028 1,0005
3,9620
396,2000
160
428
10
1,9506177701 4,8028
1,0010
3,9602
396,0231
175
474
11
1,9506177701 4,8028
1,0123
4,1118
411,1769
198
518
12
1,9501937925 4,8031
1,0185
4,1554
415,5434
217
559
13
1,9498275704 4,8017
1,0089
4,1857
418,5693
232
607
14
1,9498275704 4,8017
1,0002
4,1899
418,9862
251
649
15
1,9500106815 4,8025
1,0191
4,1718
417,1812
271
695
16
1,9501937925 4,8031
1,0041
4,2386
423,8643
290
735
17
1,9508651900 4,8032 1,0024
4,2333
423,3294
304
784
18
1,9508651900 4,8032
4,3154
431,5449
325
828
19
1,0018
1,9501937925 4,8031
1,0018
4,3134
431,3423
343
872
20
1,9501937925 4,8031
1,0605
4,3905
439,0480
356
914
21
1,9501937925 4,8031
1,0011
4,4666
446,6635
378
958
22
1,9501327555 4,8030
1,3814
4,2848
428,4767
397
1.003
23
1,9506177701 4,8028
1,0126
4,1757
417,5684
416
1.040
24
1,9506177701 4,8028
1,1804
4,3564
435,6425
429
1.084
25
1,9501937925 4,8031
1,1225
4,3614
436,1446
446
1.131
26
1,9501937925 4,8031
1,0020
4,2147
421,4660
469
1.174
27 28
1,9507431257 4,8033 1,0036
4,2421
424,2080
485
1.218
1,9504379406 4,8035 1,0045
4,1769
417,6861
505
1.264
29
1,9505600146 4,8035 1,0000
4,2572
425,7215
533
1.310
30
1,9505600146 4,8035 1,0084
4,3004
430,0397
555
1.352
31
1,9505600146 4,8035
4,3781
437,8083
577
1.393
32
1,9505600146 4,8035 1,0337
4,3390
433,9004
597
1.436
33
1,9506179856 4,8029
1,0001
4,3258
432,5818
626
1.478
34
1,0916
1,9506177701 4,8028 1,0000
4,0788
407,8834
655
1.518
35
1,9507431257 4,8033
1,0101
4,2195
421,9456
672
1.558
36
1,9507431257 4,8033
1,0101
4,3783
437,8302
690
1.600
37
Continuación de Tabla N° 1 Resumen de resultados empíricos
UNIVERSIDAD NACIONAL ABIERTA
35
Función de Aptitud Valor de X
Máximo Mínimo Promedio
Número Suma
Mutaciones
Cruces
Generaciones
1,9507431257 4,8033 1,0043
4,4152
441,5206
708
1.642
38
1,9507431257 4,8033 1,6957
4,4755
447,5470
731
1.684
39
1,9507431257 4,8033 1,1278
4,4546
445,4580
749
1.725
40
1,9507431257 4,8033 1,0738
4,3399
433,9920
769
1.763
41
1,9509261310 4,8027 1,0129
4,3800
438,0019
780
1.799
42
1,9500106815 4,8025
1,1193
4,3345
433,4524
797
1.839
43
1,9509261310 4,8027 1,0408
4,3470
434,6953
825
1.883
44
1,9509261310 4,8027 1,0013
4,3734
437,3395
846
1.923
45
1,9508651900 4,8032 1,0005
4,2481
424,8061
869
1.967
46
1,9507431257 4,8033 1,0001
4,1711
417,1129
884
2.005
47
1,9501937925 4,8031 1,0000
4,2156
421,5561
896
2.049
48
1,9506177701 4,8028 1,1034
4,4398
443,9789
919
2.089
49
1,9506177701 4,8028 1,2007
4,4719
447,1919
934
2.131
50
1,9506177701 4,8028 1,0096
4,3980
439,7984
956
2.176
51
1,9506177701 4,8028
4,3682
436,8249
973
2.219
52
1,0115
1,9507431257 4,8033 1,0047
4,2965
429,6507
991
2.260
53
1,9506177701 4,8028 1,0002
4,4256
442,5634
1.004
2.307
54
1,9506177701 4,8028 1,2636
4,4005
440,0500
1.034
2.349
55
1,9507431257 4,8033 1,0005
4,4866
448,6561
1.057
2.389
56
1,9506177701 4,8028 1,0120
4,2150
421,5034
1.068
2.433
57
1,9507431257 4,8033 1,0000
4,0684
406,8424
1.093
2.476
58
1,9507431257 4,8033 1,0000
4,2469
424,6913
1.113
2.517
59
1,9507431257 4,8033 1,0001
4,0269
402,6906
1.140
2.559
60
1,9507431257 4,8033 1,0001
4,1717
417,1681
1.157
2.600
61
1,9507431257 4,8033 1,0015
4,2964
429,6375
1.168
2.642
62
1,9507431257 4,8033 1,0015
4,2806
428,0582
1.182
2.689
63
1,9503158660 4,8034 1,4975
4,4106
441,0584
1.198
2.730
64
1,9506820887 4,8034 1,3398
4,3082
430,8227
1.219
2.770
65
1,9506820887 4,8034 1,0005
4,4545
445,4484
1.236
2.811
66
1,9506820887 4,8034 1,0013
4,4024
440,2356
1.259
2.851
67
1,9506820887 4,8034 1,0000
4,3572
433,7153
1.278
2.890
68
1,9506820887 4,8034 1,0000
4,2844
428,4440
1.292
2.935
69
1,9506820887 4,8034 1,0080
4,2389
423,8881
1.305
2.975
70
1,9506820887 4,8034 1,0015
4,5238
452,3835
1.331
3.015
71
1,9506820887 4,8034 1,0000
4,3515
435,1515
1.347
3.054
72
1,9504379406 4,8035 1,0120
4,1643
416,4337
1.370
3.098
73
1,9506820887 4,8034 1,0050 4,4866 448,6623 1,9504379406 4,8035 1,0115 4,4545 445,4520
1.389 3.757
3.138 8.430
74 200
Número promedio de cruces por generación: 42 Número promedio de mutaciones por generación: 19
Las gráficas que se observan a continuación, muestran los resultados empíricos de la población en función al número de generaciones, obtenidos en 74 simulaciones, con las características paramétricas mencionadas anteriormente.
UNIVERSIDAD NACIONAL ABIERTA
36
6
Valores Aptitud
5 4 3 2 1 0 0
10
20
30
40
50
60
70
80
Número de Generaciones
Máximo
Mínimo
Promedio
figura N° 2 Valores regulares de la función para distintas generaciones
Los resultados de los máximos y los mínimos de la función de aptitud (colores verde y azul en la figura N° 2), reflejan mucha estabilidad en la medida que avanzan las generaciones. Ahora bien, el valor promedio de la función aptitud (color naranja en la figura N° 2) muestra cierta variabilidad con tendencia hacia el valor máximo, esto confirma la teoría en cuanto a que las generaciones resultantes tienden, en promedio, a ser más aptas que sus ascendientes. Las dos gráficas (figuras N° 3 y 4) que siguen, muestran elocuentemente la relación directamente proporcional existente entre número de mutaciones, el número de cruces y la estabilización de la función de aptitud acumulada con respecto al número de generaciones producidas en los ensayos.
UNIVERSIDAD NACIONAL ABIERTA
37
3.500 Número de Casos
3.000 2.500 2.000 1.500 1.000 500 0 0
10
20
30
40
50
60
70
80
Número de Generaciones
Mutaciones
Cruces
figura N° 3 Número de mutaciones y cruces para distintas generaciones
Función de aptitud acumulada por cada generación 500 400 300 200 100 0 0
10
20
30
40
50
60
70
80
Número de Generaciones
figura N° 4 Función de aptitud acumulada distintas generaciones
La gráfica (figura N° 5) subsiguiente muestra las posiciones de los valores máximo, mínimo y promedio de la función de aptitud para la distribución inicial de la población.
UNIVERSIDAD NACIONAL ABIERTA
38
y
5 4.5 4 3.5
Máximo
3 2.5
Promedio
2 1.5
Mínimo
1 0.5 0
0
0.5
1
1.5
2 x
figura N° 5 Valores regulares de la función en la población inicial
La figura N° 6 muestra las posiciones de los valores máximo, mínimo y promedio de la función de aptitud para la distribución final de la población después de 200 generaciones, observándose que la línea de posición del valor máximo y mínimo coinciden con el valor máximo y mínimo de la función en estudio.
y
Máximo
5 4.5
Promedio
4 3.5 3 2.5 2 1.5
Mínimo
1 0.5 0
0
0.5
1
1.5
2 x
figura N° 6 Valores regulares de la función en la población final
3.1.2. Aplicación de los métodos clásicos de optimización numérica Se
realizaron
pruebas
(cambiando
el
punto
inicial)
sobre
la
función
y = x 2 sen 2 (10πx) + 1 dirigidas a obtener resultados respecto a la ubicación del máximo global con el software matemático “Maple 8”, consiguiéndose como conducta modal que el mismo detiene la búsqueda, en todo caso, en el primer máximo local que halla después del
UNIVERSIDAD NACIONAL ABIERTA
39
punto inicial y declara tal resultado como el valor máximo global de la función; produciendo así una solución aproximada con un inmenso error.
3.2. Evaluación de la función Z = 0,5 +
sen 2
(
)
x 2 + y 2 − 0,5
(1 + 0,001(x
2
+ y2
))
2
,
en el
dominio [-200, 200] X [-200, 200] Continuando con el proceso de evaluación, la figura N° 7 ilustra la inversa de la función que antecede en el dominio [-10, 10] X [-10, 10], debido a que para el dominio
62.5 z 50 37.5 25 12.5 -10
-5
0
5
10
0 -5 -10
5
10
y
x
figura N° 7 gráfica de la función
Z = 0,5 +
⎞ ⎛ sen 2 ⎜ x 2 + y 2 ⎟ − 0,5 ⎠ ⎝
(1 + 0,001(x
2
+ y2
))
en el domino [-10, 10] X [-10, 10]
2
completo de definición, la función inversa no presenta valores máximos relevantes.
UNIVERSIDAD NACIONAL ABIERTA
40
Como se observa, esta función tiene dos máximos globales en el entorno (-5, 5) X (0, 2,5) y múltiples máximos locales.
100
75
z
50 25 -5 -2.5 0 2.5
0 y
figura N° 7 gráfica de la función
2.5 5
Z = 0,5 +
x
⎞ ⎛ sen 2 ⎜ x 2 + y 2 ⎟ − 0,5 ⎠ ⎝
(1 + 0,001(x
2
+ y2
))
en el domino [-5, 5] X [0, 2,5]
2
3.2.1. Aplicación del algoritmo genético simple Los parámetros para la corrida de la función que se intenta optimizar mediante el algoritmo genético simple son los que se detallan a continuación: Tamaño del cromosoma: 30
Tamaño de la población: 100
Número de generaciones: 200
Probabilidad de cruce: 0,85
Probabilidad de mutación: 0,013. El tamaño del cromosoma igual 30, significa que los valores de las variables x, y se codificaron con 15 bits cada uno, resultando que los individuos se representan mediante ristras de 0’s y 1’s de tamaño 30. Los primeros quince, de izquierda a derecha corresponden a la variable y; las quince posiciones restantes corresponden a la variable x. Los datos que consideramos relevantes, obtenidos mediante la corrida del programa del algoritmo genético simple, con las características paramétricas mencionadas
UNIVERSIDAD NACIONAL ABIERTA
41
anteriormente, el cual se encuentra en el Anexo 2 de esta monografía, refuerzan las conclusiones obtenidas en el caso de la función de una variable. Una vez realizadas las 200 generaciones consideradas, el algoritmo genético encontró dos valores que podemos considerar una buena aproximación a los máximos de la función en estudio que resultaron: 102,9237, el cual se alcanza en el punto (2,7039399396, 1,5930661948) y 102,8904, el cual se alcanza en el punto (-0,81179235200, -3,0335398419).
3.2.2. Aplicación de los métodos clásicos de optimización numérica Los resultados generados, utilizando el mismo software matemático aplicado en el aparte 3.1.2., productos de la evaluación de la función Z = 0,5 +
sen
2
(
)
x 2 + y 2 − 0,5
(1 + 0,001 (x
2
+ y2
))
2
análogos a los arrojados en el aludido aparte.
UNIVERSIDAD NACIONAL ABIERTA
42
son
CAPÍTULO IV Posibles modificaciones al algoritmo genético simple y conclusiones Como se evidenció en el ejemplo manual del capítulo I de esta monografía, el algoritmo genético simple al finalizar la quinta generación, produjo como resultado para el máximo de la función en el intervalo estudiado un valor igual a 676 (siendo su máximo verdadero igual a 961); este escenario comprobó que el mencionado algoritmo no es la panacea ante el problema de optimización, marcando la necesidad de seguir iterando, todo basado en el hecho, siempre imposible, de que se conoce el valor máximo de la función. He aquí un importante problema real de este algoritmo, como lo es la tendencia a la homegeinización de la población, es decir a que todos los individuos de la misma sean idénticos, impidiendo que el algoritmo siga explorando nuevas soluciones con lo que, probablemente, se quede estancado en un máximo local no muy bueno, este evento suele denominarse convergencia prematura en contraposición a la convergencia lenta que en muchos casos se produce. Otro conflicto en el comportamiento del algoritmo genético puede ser la existencia de muchos óptimos locales, además el hecho de que el óptimo global se encuentre muy aislado. Existen muchas técnicas para contrarrestar tales situaciones. Los mecanismos que únicamente mencionaremos en este capítulo tienen que ver con las modificaciones realizadas sobre los operadores genéticos.
4.1
Modificaciones sobre los operadores genéticos Las modificaciones del algoritmo genético simple, en cuanto a sus operadores
genéticos, serán capaces de producir una versión mejorada del mismo, que no es ni se pretende que sea una solución definitiva al problema mencionado. La investigación en el campo de los algoritmos genéticos está centrada en la búsqueda de un algoritmo robusto, eficaz y rápido. En tiempos recientes, se han utilizado
UNIVERSIDAD NACIONAL ABIERTA
43
diferentes parámetros para ensayos prácticos sobre un mismo problema, así mismo se han desarrollado nuevas representaciones para los operadores de selección, cruce y mutación a fin de aumentar la velocidad de los algoritmos genéticos; ya que empíricamente se ha comprobado que la modificación de los parámetros y operadores que los definen pueden impactar vigorosamente sobre el funcionamiento de dicho algoritmo.
4.1.1. Selección (Elitismo) Como antes se ha dicho, para el algoritmo genético simple la selección de mayor popularidad es la selección proporcional a la aptitud equivalente a la selección por rueda de
ruleta, siendo la probabilidad de seleccionar a un individuo
Pi sel =
Fi
, donde:
Np
∑F j =1
j
Fi : es el valor de la función de aptitud del individuo i-ésimo. N p : es el número de individuos de la población y se conoce como el tamaño de la población. Esta manera de escoger como padre a los individuos de la población presenta el inconveniente de la rápida convergencia provocada por los superindividuos. 5 El problema anterior se puede resolver efectuando una selección proporcional al rango del individuo, lo cual produce una repartición más uniforme en la escogencia.
Pi rango =
rango( Fi ) λ (λ + 1) / 2
, donde
λ
es el rango de la función objetivo del mejor individuo.
Existe un modelo de selección elitista donde se obliga a que el mejor individuo de la población anterior sea seleccionado para pasar a la población siguiente. Entre la gran variedad de métodos de refinamiento del modelo de selección proporcional, cabe mencionar al modelo del selección del valor esperado, el esquema de selección que ha proporcionado empíricamente buenos resultados es el muestreo estocástico con reemplazamiento del resto, introducido por Brindle (1991), otros
5
Estos son individuos con valores relativamente elevados en la función de aptitud.
UNIVERSIDAD NACIONAL ABIERTA
44
procedimientos
de
selección
consiste
en
métodos
de
selección
dinámicos
(las
probabilidades de selección varían en cada generación).
4.1.2. Cruce (Varios tipos) En el algoritmo genético simple los individuos seleccionados para desempeñar el papel de padres son recombinados utilizando el cruce basado en un punto. De Jong (1975) ha realizado experimentos con operador de cruce basado en múltiples puntos y ha concluido empíricamente que el cruce basado en dos puntos produce mejoras importantes al algoritmo. Existen otros operadores de cruce son: a) Operador de cruce uniforme, b) Operador de cruce basado en la función objetivo, c) Operador de cruce en el sentido del simulated annealing, etc.
4.1.1. Mutación Este operador es considerado de importancia capital debido a que permite al algoritmo genético explorar sobre todo el espacio de búsqueda. En la mayoría de las implementaciones del algoritmo genético simple la probabilidad de mutación permanece constante en todas las generaciones. La búsqueda del valor óptimo de la mencionada probabilidad ha motivado el desarrollo de muchos trabajos de investigación. Experimentalmente, modificando la probabilidad de mutación se han logrado mejorar los resultados del algoritmo genético simple. Adicionalmente, en algunos casos se ha ensayado con algoritmos genéticos que modifican dinámicamente la probabilidad de mutación (y de cruce).
4.2
Conclusiones
1.
El desarrollo de las pruebas experimentales realizadas en esta monografía, sobre las dos funciones reales elegidas para ser evaluadas mediante el algoritmo genético simple, y la comparación con los resultados que arrojaron los métodos tradicionales de optimización numérica, permitió exponer la potencialidad del algoritmo genético
UNIVERSIDAD NACIONAL ABIERTA
45
simple en un escenario donde las funciones presentan en su dominio de definición: oscilaciones moderadas y la existencia de varios máximos locales. 2.
El campo de aplicación de esta herramienta se encuentra en el conjunto de las funciones para las cuales las técnicas tradicionales especializadas no funcionan o no aplican.
3.
La utilidad del algoritmo genético simple, en el tema de la optimización y búsqueda de elementos relevantes en la ciencia moderna aún está en fase experimental y no se ha logrado todavía definir las características paramétricas (tamaño de la población, método de selección, probabilidad de cruce y de mutación, número de generaciones,
tamaño
del
cromosoma,
etc.)
que
garanticen
resultados
verdaderamente fiables en todos los contextos de aplicación. 4.
Los resultados de esta monografía, producto de numerosas horas de investigación teórica y empírica, corroboran la utilidad de la técnica denominada algoritmo genético simple, estimulando un enorme interés en la investigación y estudio este tipo de herramienta.
5.
A nivel mundial, se vienen realizando importantes desarrollos referidos a la aplicación del algoritmo genético simple en el campo de las matemáticas y la algoritmia. En el ámbito de nuestra Universidad Nacional Abierta (UNA) no existen proyectos de investigación y desarrollo para estas novedosas y prometedoras tecnologías.
6.
Esta breve exposición, servirá de instrumento para divulgar ciertos aspectos de interés sobre el apasionante y productivo tema de la aplicación del algoritmo genético simple en la optimización de funciones reales y estimulará a los estudiantes de
las
carreras
de
Matemática,
Ingeniería,
Administración
y
Educación,
pertenecientes a la comunidad educativa de la UNA, a participar en su necesario e imperioso desarrollo utilizando como plataforma inicial los resultados y conclusiones obtenidos en este trabajo.
UNIVERSIDAD NACIONAL ABIERTA
46
ANEXO 1 Artículo de prensa publicado en el cuerpo 48 del Universal, el 09/04/2006 CIENCIA // El estudio fue publicado en la revista "Science" Demuestran teoría de Darwin a escala molecular Científicos mostraron etapa por etapa el proceso de selección natural Washington.
Puede
resultar a estas alturas obvio, pero no lo es. Así, un grupo
Las Islas Galápagos fueron un reservorio inspirador para Darwin
de científicos mostró por primera vez, etapa por etapa, el proceso por el cual la naturaleza crea una nueva pieza de mecánica molecular modificando los elementos ya existentes, en un estudio publicado el pasado viernes en la revista estadounidense Science que confirma la teoría de la evolución de Charles Darwin.
"Descubrimos que la complejidad molecular evoluciona por transformación, por medio de un proceso de explotación molecular que permite que viejos genes, obligados por la selección a funciones completamente diferentes, a ser reciclados para nuevas funciones", afirmó Joe Thornton, biólogo y principal autor del estudio, reseña AFP.
UNIVERSIDAD NACIONAL ABIERTA
47
"Nuevas técnicas nos permiten ver cómo viejos genes, hoy desaparecidos, evolucionaron hace cientos de millones de años", explicó Thornton, científico de la Universidad de Oregon (noroeste).
"El proceso de evolución de la mecánica molecular por etapa que reconstruimos se conforma completamente a la teoría de Darwin", destacó.
Cambio revolucionario La teoría de Darwin, sobre el origen de las especies, habla sobre el proceso de selección natural y del azar que a partir de la ausencia de recursos para su supervivencia se ven en la obligación de desarrollar habilidades, características o en todo caso variaciones que posteriormente incorporarán las siguientes generaciones, que a su vez seguirán incorporando las variantes necesarias para su subsistencia. Por supuesto, esto no es más que el principio de lo que significó el amplio desarrollo teórico del revolucionario naturalista británico.
La teoría evolucionista de Darwin no tardó en generar severas críticas, no sólo por parte de sus contemporáneos que la pusieron en el banquillo e intentaron resistirse a ella por años. Aún en la actualidad, instituciones de carácter religioso se oponen drásticamente a que se imparta en ciertos colegios. En Estados Unidos, recientemente se libró una batalla legal que ha terminado favoreciendo los conceptos e ideas del científico británico.
Genio observador
UNIVERSIDAD NACIONAL ABIERTA
48
⇒ Nació
en
Inglaterra,
Shrewshury, en
1809.
Fue
Shropshire, el
quinto
descendiente de una familia acomodada.
⇒ Con
credenciales para estudiar Medicina y
posteriormente
hacerse
ministro
de
la
Iglesia, Darwin se relacionó con Adam Sedwick
y
John
Stevens,
geólogo
y
Charles Darwin
naturista, respectivamente, quienes le orientaron finalmente a su profesión definitiva.
⇒ Como naturalista, Darwin tuvo su primera gran oportunidad en 1831 al embarcarse en el "HMS Beagle". A los 22 años, el futuro científico tuvo su contacto con el resto del mundo.
⇒ Tras
su regreso, Darwin inició lo que se conocería como "El origen de las especies". Fue un libro
revolucionario, dado que echaba por tierra la clásica teoría de la catástrofe para profundizar en la capacidad de las diversas especies para evolucionar. Se editó en 1859.
UNIVERSIDAD NACIONAL ABIERTA
49
ANEXO 2 Código fuente del algoritmo genético simple Código fuente del algoritmo genético, en lenguaje pascal, aplicado a la optimización de funciones reales, tomado del libro. Genetic Algorithms in Search, Optimization, and Machine Learning, Addison-Wesley Publishing Company, Inc., Readind, MA. de Goldberg, D. E. (1989). Sobre el código fuente original, se efectuaron las modificaciones que se indican, a fin de ajustarlo al contexto de nuestra monografía: a) Las salidas y las declaraciones del programa se tradujeron al idioma castellano, b) La función objetivo y el coeficiente de normalización se ajustaron de acuerdo a los requerimientos del caso que nos ocupa, c) El programa denominado sga2 es una adaptación de los códigos para funciones de dos variables.
A.2.1. Para funciones reales de una variable program sga1; uses crt; const maxpop = 100; maxstring = 30; coef = 16383.5; type allele = boolean; chromosome = array [1..maxstring] of allele; individual = record chrom: chromosome; x: real; fitness: real; parent1, parent2, xsite: integer; end; population = array [1..maxpop] of individual; var oldpop,newpop: population; popsize, lchrom, gen, maxgen: integer; pcross, pmutation, sumfitness: real; nmutation, ncross: integer; avg, max, min: real; (******************************************************************) function power(x:real):real; begin power:= sqr(x)*sqr(sin(10*pi*x))+1; end;
UNIVERSIDAD NACIONAL ABIERTA
50
function rand: real; begin rand:= random(23767)/23767.0; end; function flip(probability: real): boolean; begin if probability = 1.0 then flip:= true else flip:= (rand max then max:= fitness; if fitness= rand) or (j = popsize); select:= j; end;
UNIVERSIDAD NACIONAL ABIERTA
53
function mutation(alleleval: allele): allele; var mutate: boolean; begin mutate:= flip(pmutation); if mutate then begin nmutation:= nmutation + 1; mutation:= not alleleval; end else mutation:= alleleval; end; procedure crossover(parent1, parent2: chromosome; var child1, child2: chromosome; var jcross: integer); var j: integer; begin if flip(pcross) then begin jcross:= rnd(1,lchrom-1); ncross:= ncross + 1; end else jcross:= lchrom; for j:= 1 to jcross do begin child1[j]:= mutation(parent1[j]); child2[j]:= mutation(parent2[j]); end; if jcross lchrom then begin for j:= jcross+1 to lchrom do begin child1[j]:= mutation(parent2[j]); child2[j]:= mutation(parent1[j]); end; end; end; procedure generation; var j, mate1, mate2, jcross: integer; begin j:= 1; repeat mate1:= select; mate2:= select; crossover(oldpop[mate1].chrom, oldpop[mate2].chrom, newpop[j].chrom, newpop[j+1].chrom,jcross); with newpop[j] do begin x:= decode(chrom,lchrom); fitness:= objfunc(x); parent1:= mate1; parent2:= mate2; xsite:= jcross; end; with newpop[j+1] do begin x:= decode(chrom,lchrom); fitness:= objfunc(x); parent1:= mate1; parent2:= mate2; xsite:= jcross; end;
UNIVERSIDAD NACIONAL ABIERTA
54
j:= j + 2; until j>=popsize; end; begin gen:= 0; initialize; repeat gen:= gen + 1; generation; statistics(newpop); report; oldpop:= newpop; until (gen>= maxgen); end.
UNIVERSIDAD NACIONAL ABIERTA
55
A.2.2. Para funciones reales de dos variables program sga2; uses crt; const maxpop = 100; maxstring = 30; type allele = boolean; chromosome = array [1..maxstring] of allele; individual = record chrom: chromosome; x: real;y:real; fitness: real; parent1, parent2, xsite, ysite:integer; end; population = array [1..maxpop] of individual; var oldpop,newpop: population; popsize, lchrom, gen, maxgen: integer; pcross, pmutation, sumfitness: real; nmutation, ncross: integer; avg, max, min: real; (******************************************************************) function power(x, y:real):real; begin power:= 1/(0.5+(sqr(sin(sqrt(sqr(x)+sqr(y))))-0.5)/sqr(1+0.001*(sqr(x)+sqr(y)))); end; function rand: real; begin rand:= random(23767)/23767.0; end; function flip(probability: real): boolean; begin if probability = 1.0 then flip:= true else flip:= (rand max then max:= fitness; if fitness= rand) or (j = popsize); select:= j; end; function mutation(alleleval: allele): allele; var mutate: boolean; begin mutate:= flip(pmutation); if mutate then begin nmutation:= nmutation + 1; mutation:= not alleleval; end else mutation:= alleleval; end;
UNIVERSIDAD NACIONAL ABIERTA
59
procedure crossover(parent1, parent2: chromosome; var child1, child2: chromosome; var jcross: integer); var j: integer; begin if flip(pcross) then begin jcross:= rnd(1, lchrom-1); ncross:= ncross + 1; end else jcross:= lchrom; for j:= 1 to jcross do begin child1[j]:= mutation(parent1[j]); child2[j]:= mutation(parent2[j]); end; if jcross lchrom then begin for j:= jcross+1 to lchrom do begin child1[j]:= mutation(parent2[j]); child2[j]:= mutation(parent1[j]); end; end; end;
procedure generation; var j, mate1, mate2, jcross: integer; begin j:= 1; repeat mate1:= select; mate2:= select; crossover(oldpop[mate1].chrom, oldpop[mate2].chrom, newpop[j].chrom, newpop[j+1].chrom,jcross); with newpop[j] do begin x:= decode(chrom,lchrom div 2); y:= decode1(chrom,lchrom div 2); fitness:= objfunc(x, y); parent1:= mate1; parent2:= mate2; xsite:= jcross; ysite:= jcross; end; with newpop[j+1] do begin x:= decode(chrom,lchrom div 2); y:= decode1(chrom,lchrom div 2); fitness:= objfunc(x, y); parent1:= mate1; parent2:= mate2; xsite:= jcross; ysite:= jcross end; j:= j + 2; until j>=popsize; end; begin gen:= 0; initialize; repeat gen:= gen + 1;
UNIVERSIDAD NACIONAL ABIERTA
60
generation; statistics(newpop); report; oldpop:= newpop; until (gen>= maxgen); end.
UNIVERSIDAD NACIONAL ABIERTA
61
ANEXO 3 Herramientas computacionales utilizadas a.
Microcomputador con procesador intel inside pentium 3.
b.
Compilador Turbo Pascal 7.0 (para la corrida de los programas del algoritmo genético simple para una y dos variables).
c.
Software Office 2003.
d.
Software MuPAD Light Versión 2.5.2 (para graficar las funciones).
e.
Software Maple 8 (para maximizar las funciones aplicando los métodos clásicos de optimización).
UNIVERSIDAD NACIONAL ABIERTA
62
Referencia bibliográfica Camero, A. (2003). Ciencia Explicada, Biología, Editorial Nomos, S.A., Bogotá Colombia. Chambadal, L. (1984). Diccionario de Matemáticas, Ediciones Grijalbo, S.A., México, D.F. Goldberg, D. E. (1989). Genetic Algorithms in Search, Optimization, and Machine Learning, Addison-Wesley Publishing Company, Inc., Readind, MA. Holland, J. H. (1992). Adaptation in Natural and Artificial System, MIT Press, Second Edition. Ivanovich, A. (1997). El Origen de la Vida, Editorial Panamericana, Santa Fe de Bogotá, Colombia. Juricek, L. y González, J.S. (1987). Programación no Lineal (Optimización no Lineal), Universidad Nacional Abierta (Caracas). Keller, A. M. (1983). Programación en Pascal, Editorial Mc Graw Hill, México D.F. Marczyk, A. (2004). Algoritmos Genéticos y Computación Evolutiva, [Página web en línea]. Disponible en: http://the-geek.org/docs/algen. Martín, M. J. y García, M D. (2005). Seminario: Algoritmos Genéticos, [Página web en línea]. Disponible en: http://kal-el.ugr.es/mg. Melero, J. (2001). Algoritmos Genéticos, [Página web en línea]. Disponible en: http://kalel.ugr.es/. Prendes G., M. B. (2002). Optimización del Diseño y Construcción de Edificios Metálicos en Base a Algoritmos Genéticos (Tesis Doctoral), Universidad de Oviedo,
[Página
web
en
línea].
Disponible
en:
http://www6.uniovi.es/usr/belen/_private/tesis.pdf Rudolph, G. (1994). Convergence Analysis of Canonical Genetic Algorithms, IEEE Transactions on Neural Networks.
UNIVERSIDAD NACIONAL ABIERTA
63