algoritmos-geneticos-exponer

Upload: tyrone-fabrizzio-soria

Post on 08-Jan-2016

6 views

Category:

Documents


0 download

DESCRIPTION

Algoritmos-Geneticos-EXPONER

TRANSCRIPT

Algoritmos Geneticos 1. Introduccin

1.1. Antecedentes

El algoritmo gentico es una tcnica de bsqueda basada en la teora de la evolucin de Darwin, que ha cobrado tremenda popularidad en todo el mundo durante los ltimos aos. Se presentarn aqu los conceptos bsicos que se requieren para abordarla, as como unos sencillos ejemplos que permitan a los lectores comprender cmo aplicarla al problema de su eleccin.

En los ltimos aos, la comunidad cientfica internacional ha mostrado un creciente inters en una nueva tcnica de bsqueda basada en la teora de la evolucin y que se conoce como el algoritmo gentico. Esta tcnica se basa en los mecanismos de seleccin que utiliza la naturaleza, de acuerdo a los cuales los individuos ms aptos de una poblacin son los que sobreviven, al adaptarse ms fcilmente a los cambios que se producen en su entorno. Hoy en da se sabe que estos cambios se efectan en los genes de un individuo (unidad bsica de codificacin de cada uno de los atributos de un ser vivo), y que sus atributos ms deseables (i.e., los que le permiten adaptarse mejor a su entorno) se transmiten a sus descendientes cuando ste se reproduce sexualmente.

Un investigador de la Universidad de Michigan llamado John Holland era consciente de la importancia de la seleccin natural, y a fines de los 60s desarroll una tcnica que permiti incorporarla a un programa. Su objetivo era lograr que las computadoras aprendieran por s mismas. A la tcnica que invent Holland se le llam originalmente "planes reproductivos", pero se hizo popular bajo el nombre "algoritmo gentico" tras la publicacin de su libro en 1975.

Una definicin bastante completa de un algoritmo gentico es la propuesta por John Koza:

"Es un algoritmo matemtico altamente paralelo que transforma un conjunto de objetos matemticos individuales con respecto al tiempo usando operaciones modeladas de acuerdo al principio Darwiniano de reproduccin y supervivencia del ms apto, y tras haberse presentado de forma natural una serie de operaciones genticas de entre las que destaca la recombinacin sexual. Cada uno de estos objetos matemticos suele ser una cadena de caracteres (letras o nmeros) de longitud fija que se ajusta al modelo de las cadenas de cromosomas, y se les asocia con una cierta funcin matemtica que refleja su aptitud. "

1.2. Definicin

Los Algoritmos Genticos (AGs) son mtodos adaptativos que pueden usarse para resolver problemas de bsqueda y optimizacin. Estn basados en el proceso gentico de los organismos vivos. A lo largo de las generaciones, las poblaciones evolucionan en la naturaleza de acorde con los principios de la seleccin natural y la supervivencia de los ms fuertes, postulados por Darwin. Por imitacin de este proceso, los Algoritmos Genticos son capaces de ir creando soluciones para problemas del mundo real. La evolucin de dichas soluciones hacia valores ptimos del problema depende en buena medida de una adecuada codificacin de las mismas.

Un algoritmo gentico consiste en una funcin matemtica o una rutina de software que toma como entradas a los ejemplares y retorna como salidas cuales de ellos deben generar descendencia para la nueva generacin.

Versiones ms complejas de algoritmos genticos generan un ciclo iterativo que directamente toma a la especie (el total de los ejemplares) y crea una nueva generacin que reemplaza a la antigua una cantidad de veces determinada por su propio diseo. Una de sus caractersticas principales es la de ir perfeccionando su propia heurstica en el proceso de ejecucin, por lo que no requiere largos perodos de entrenamiento especializado por parte del ser humano, principal defecto de otros mtodos para solucionar problemas, como los Sistemas Expertos.

1.3. Problemtica

Los principios bsicos de los Algoritmos Genticos fueron establecidos por Holland, y se encuentran bien descritos en varios textos . Goldberg, Davis, Michalewicz, Reeves.

En la naturaleza los individuos de una poblacin compiten entre s en la bsqueda de recursos tales como comida, agua y refugio. Incluso los miembros de una misma especie compiten a menudo en la bsqueda de un compaero. Aquellos individuos que tienen ms xito en sobrevivir y en atraer compaeros tienen mayor probabilidad de generar un gran nmero de descendientes. Por el contrario individuos poco dotados producirn un menor nmero de descendientes. Esto significa que los genes de los individuos mejor adaptados se propagarn en sucesivas generaciones hacia un nmero de individuos creciente. La combinacin de buenas caractersticas provenientes de diferentes ancestros, puede a veces producir descendientes "superindividuos", cuya adaptacin es mucho mayor que la de cualquiera de sus ancestros. De esta manera, las especies evolucionan logrando unas caractersticas cada vez mejor adaptadas al entorno en el que viven.

Los Algoritmos Genticos usan una analoga directa con el comportamiento natural. Trabajan con una poblacin de individuos, cada uno de los cuales representa una solucin factible a un problema dado. A cada individuo se le asigna un valor puntuacin, relacionado con la bondad de dicha solucin. En la naturaleza esto equivaldra al grado de efectividad de un organismo para competir por unos determinados recursos. Cuanto mayor sea la adaptacin de un individuo al problema, mayor ser la probabilidad de que el mismo sea seleccionado para reproducirse, cruzando su material gentico con otro individuo seleccionado de igual forma. Este cruce producir nuevos individuos . descendientes de los anteriores . los cuales comparten algunas de las caractersticas de sus padres. Cuanto menor sea la adaptacin de un individuo, menor ser la probabilidad de que dicho individuo sea seleccionado para la reproduccin, y por tanto de que su material gentico se propague en sucesivas generaciones.

De esta manera se produce una nueva poblacin de posibles soluciones, la cual reemplaza a la anterior y verifica la interesante propiedad de que contiene una mayor proporcin de buenas caractersticas en comparacin con la poblacin anterior. As a lo largo de las generaciones las buenas caractersticas se propagan a travs de la poblacin. Favoreciendo el cruce de los individuos mejor adaptados, van siendo exploradas las reas ms prometedoras del espacio de bsqueda. Si el Algoritmo Gentico ha sido bien diseado, la, poblacin converger hacia una solucin ptima del problema.

1.4. Ventajas y Desventajas

No necesitan conocimientos especficos sobre el problema que intentan resolver.

Operan de forma simultnea con varias soluciones, en vez de trabajar de forma secuencial como las tcnicas tradicionales.

Cuando se usan para problemas de optimizacin maximizar una funcin objetivo- resultan menos afectados por los mximos locales (falsas soluciones) que las tcnicas tradicionales.

Resulta sumamente fcil ejecutarlos en las modernas arquitecturas masivamente paralelas.

Usan operadores probabilsticos, en vez de los tpicos operadores determinsticos de las otras tcnicas.

Pueden tardar mucho en converger, o no converger en absoluto, dependiendo en cierta medida de los parmetros que se utilicen tamao de la poblacin, nmero de generaciones, etc.-.

Pueden converger prematuramente debido a una serie de problemas de diversa ndole.

1.5. Limitaciones

El poder de los Algoritmos Genticos proviene del hecho de que se trata de una tcnica robusta, y pueden tratar con xito una gran variedad de problemas provenientes de diferentes reas, incluyendo aquellos en los que otros mtodos encuentran dificultades. Si bien no se garantiza que el Algoritmo Gentico encuentre la solucin ptima, del problema, existe evidencia emprica de que se encuentran soluciones de un nivel aceptable, en un tiempo competitivo con el resto de algoritmos de optimizacin combinatoria. En el caso de que existan tcnicas especializadas para resolver un determinado problema, lo ms probable es que superen al Algoritmo Gentico, tanto en rapidez como en eficacia. El gran campo de aplicacin de los Algoritmos Genticos se relaciona con aquellos problemas para los cuales no existen tcnicas especializadas. Incluso en el caso en que dichas tcnicas existan, y funcionen bien, pueden efectuarse mejoras de las mismas hibridndolas con los Algoritmos Genticos.

1.6. Como Saber si es Posible usar un Algoritmo Gentico

La aplicacin ms comn de los algoritmos genticos ha sido la solucin de problemas de optimizacin, en donde han mostrado ser muy eficientes y confiables. Sin embargo, no todos los problemas pudieran ser apropiados para la tcnica, y se recomienda en general tomar en cuenta las siguientes caractersticas del mismo antes de intentar usarla:

Su espacio de bsqueda (i.e., sus posibles soluciones) debe estar delimitado dentro de un cierto rango.

Debe poderse definir una funcin de aptitud que nos indique qu tan buena o mala es una cierta respuesta.

Las soluciones deben codificarse de una forma que resulte relativamente fcil de implementar en la computadora.

El primer punto es muy importante, y lo ms recomendable es intentar resolver problemas que tengan espacios de bsqueda discretos aunque stos sean muy grandes. Sin embargo, tambin podr intentarse usar la tcnica con espacios de bsqueda continuos, pero preferentemente cuando exista un rango de soluciones relativamente pequeo.

La funcin de aptitud no es ms que la funcin objetivo de nuestro problema de optimizacin. El algoritmo gentico nicamente maximiza, pero la minimizacin puede realizarse fcilmente utilizando el recproco de la funcin maximizante (debe cuidarse, por supuesto, que el recproco de la funcin no genere una divisin por cero). Una caracterstica que debe tener esta funcin es que tiene 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.

La codificacin ms comn de las soluciones es a travs de cadenas binarias, aunque se han utilizado tambin nmeros reales y letras. El primero de estos esquemas ha gozado de mucha popularidad debido a que es el que propuso originalmente Holland, y adems porque resulta muy sencillo de implementar.

1.7. Marco de Desarrollo

Antes de continuar ahondando en la tcnica de los Algoritmos Genticos sera interesante dejarla situada dentro de un marco ms amplio. Nos referimos a la rama de la Inteligencia Artificial que se ha denominado Computacin Evolutiva.

El trmino Computacin Evolutiva se refiere al estudio de los fundamentos y aplicaciones de ciertas tcnicas heursticas de bsqueda basadas en los principios naturales de la evolucin. Una gran variedad de algoritmos evolutivos han sido propuestos pero principalmente pueden clasificarse en: Algoritmos Genticos, Programacin Evolutiva, Estrategias Evolutivas, Sistemas Clasificadores y Programacin Gentica. Esta clasificacin se basa sobre todo en detalles de desarrollo histrico ms que en el hecho de un funcionamiento realmente diferente, de hecho las bases biolgicas en las que se apoyan son esencialmente las mismas. Las diferencias entre ellos se centra en los operadores que se usan en cada caso y en general en la forma de implementar la seleccin, reproduccin y sustitucin de individuos en una poblacin.

Aunque los detalles de la evolucin no han sido completamente comprendidos, incluso hoy en da, existen algunos puntos en los que se fundamentan:

La evolucin es un proceso que opera a nivel de cromosomas, y no a nivel de individuos. Cada individuo es codificado como un conjunto de cromosomas.

La seleccin 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 reproduccin. Es en esta etapa donde se producen la mutacin, que es la causante de que los cromosomas de los hijos puedan ser diferentes a los de los padres, y el cruce, que combina los cromosomas de los padres para que los hijos tengan cromosomas diferentes.

De forma breve, pasamos a comentar cada una de los algoritmos mencionados anteriormente, para que el lector pueda tener una idea de las similitudes y diferencias entre ellos.

Los Algoritmos Genticos resuelven los problemas generando poblaciones sucesivas a las que se aplican los operadores de mutacin y cruce. Cada individuo representa una solucin al problema, y se trata de encontrar al individuo que represente a la mejor solucin.

La Programacin Gentica funciona igual que la tcnica anterior pero se centra en el estudio de problemas cuya solucin es un programa. De manera que los individuos de la poblacin son programas que se acercan ms o menos a realizar una tarea que es la solucin.

La Programacin Evolutiva es otro enfoque de los algoritmos genticos, en este caso el estudio se centra en conseguir operadores genticos que imiten lo mejor posible a la naturaleza, en cada caso, ms que en la relacin de los padres con su descendencia. En este caso no se utiliza el operador de cruce, tomando la mxima importancia el operador de mutacin.

Estrategias Evolutivas se centran en el estudio de problemas de optimizacin e incluyen una visin del aprendizaje en dos niveles: a nivel de genotipo, y a nivel de fenotipo. Y por ltimo los Sistemas Clasificadores engloban el estudio de problemas en los que la solucin buscada se corresponde con toda una poblacin.

Para finalizar se muestra un esquema en el que se sitan las tcnicas mencionadas con respecto a otros procedimientos de bsqueda conocidos.

1.8 Comparacin con otros mtodos de optimizacin

Algoritmos Genticos y Matemticos

Existen problemas de optimizacin que pueden ser resueltos por la implementacin de un algoritmo tradicional. En este caso lo ms conveniente es utilizarlo.

Por ejemplo: Si tenemos la funcin "Es el doble de" , sta puede ser interpretada como :

Ecuacin 1

Esto tambin es vlido para funciones booleanas (retornan un valor de Verdadero o Falso ). Por ejemplo la funcin "Es mayor que" , puede ser interpretada como

Ecuacin 2

Para resolver un problema que requiera como solucin saber solamente cual nmero es mas grande, resulta mas eficaz utilizar el algoritmo matemtico directamente.

Sin embargo , stos no son aplicables a problemas que posean algunas de estas caractersticas:

La funcin representativa del problema no es continua. En este caso el mismo no es computable. Los algoritmos genticos pueden trabajar con todo tipo de funciones ya que encontrarn un mnimo aceptable si no es posible encontrar el ptimo.

La funcin representativa es dinmica: La relacin entre las variable cambia dependiendo de los valores que tomen las mismas. Esta relacin puede ser advertida o no. Las reglas del tipo

"X es igual a Y si el valor de X es chico;

X es 1.5 de y si el valor de X es grande

no se sabe que pasa para valores medios de X"

no pueden ser convertidas en un algoritmo algebraico ya que existen valores que se desconocen. A diferencia de un algoritmo tradicional , un algoritmo gentico puede ser diseado para trabajar bajo estas condiciones.

Algoritmos Genticos y Mtodos Enumerativos

Existe la posibilidad terica de encontrar soluciones a problemas a optimizacin enumerando todas las soluciones posibles para todos los casos y posteriormente buscando la misma en la base de datos resultante. Los problemas se limitan entonces a un sistema de bsqueda eficiente del caso concreto. Por ejemplo los libros con tablas de logaritmos tradicionales constan de una larga serie de clculos para todos los valores usuales. La solucin consiste simplemente en buscar en la lista el nmero decimal y retornar el logaritmo dado.

La memorizacin de las tablas de multiplicar que se ensean a los nios es otro ejemplo usual. Se espera que ante la pregunta Cunto es siete por cinco? los nios respondan instantneamente "35" sin tener que estar calculando mentalmente la multiplicacin.

Este mtodo es factible siempre que el nmero de valores sea manejable. De otra manera el simple clculo de los mismos se vuelve imposible. Ejemplo: Generar una tabla que contenga todas las movidas de todos los partidos posibles de un juego de damas resultara imposible de hacer en la prctica.

La " memorizacin " de una serie de datos no es otra cosa que la construccin en la memoria del equivalente a una base de datos en donde se busca la pregunta y se encuentra automticamente la respuesta.

Los algoritmos genticos usan heurstica para la resolucin de problemas , lo cual limita drsticamente el nmero de datos a utilizar.

Algoritmos Genticos y Sistemas Expertos

Un Sistema Experto es un programa de computadora que encuentra soluciones a problemas del tipo condicional con la estructura:

Si ocurren los hechos A,B,C,D , cual sera el valor del suceso E

Ejemplo: Si un anlisis mdico detecta los sntomas A , B , C y D en un paciente , Cual ser la enfermedad del sujeto?

Ejemplo: Si el anlisis geolgico de una capa de suelo detecta la presencia de los compuestos qumicos A , B , C y D Es factible que exista petrleo en la misma?.

Si bien existen en la literatura ejemplos de la utilidad de sta tcnica , las reglas deben ser provistas por un especialista ( o varios ) en el tema. Por ende , se requiere que los conocimientos estn disponibles, que sean estructurados o factibles de ser estructurados ( convertidos a reglas heursticas ) y que los hechos de la realidad sean relativamente estticos , es decir que las causas para arribar a una determinada conclusin no cambien , ya que cada vez que esto sucede , los expertos deben reelaborrar las reglas , lo cual dificulta y retarda considerablemente la operatoria del sistema.

Las condiciones bsicas necesarias para la implementacin efectiva de un sistema experto pueden observarse en el cuadro GA005.

Los Sistemas Expertos tuvieron su apogeo en la dcada de los 80`s , aproximadamente de 1979 a 1985. En esa poca se los lleg a considerar verdaderas panaceas que resolveran muchos de los problemas cotidianos del hombre. Incluso se formaron en ese entonces varias compaas con el objeto especfico de realizarlos y comercializarlos. Algunos fueron exitosos y funcionaron bien , pero las dificultades planteadas anteriormente no tardaron en aparecer. En particular:

Existen temas en los cuales el conocimiento no es esttico , sino que la aparicin de nueva informacin altera las pautas o reglas de inferencia de los resultados. La necesidad permanentes de reevaluar las reglas por medio de expertos humanos lleva al sistema a una operatoria lenta y burocrtica. Cada conocimiento nuevo implica reentrenar manualmente el sistema. Los Sistemas Expertos demostraron no ser tiles en este campo.

Existen temas en los cuales la interrelacin de ciertas variables no es conocida. Si la informacin disponible de cierto asunto es limitada , y no se conoce el comportamiento de algunas de sus variables , el Sistema experto tendr grandes dificultades de programarse ya que sus reglas sern imprecisas.

El Cuadro GA5 muestra las condiciones bsicas necesarias para la implementacin efectiva de un sistema experto

Condiciones bsicas necesarias para la implementacin efectiva de un sistema experto

Los expertos no siempre estructuran su conocimiento. Existen numerosas personas que razonan por mtodos empricos. Esto hace que les resulte muy difcil traducir sus pensamientos o su mtodo deductivo a reglas que la computadora pueda interpretar. Un Sistema experto no podr llegar a resultados valederos cuando los especialistas en un tema no puedan tener estructurados sus pensamientos. Por ejemplo: supngase que se quiera programar un sistema experto para calificar obras de arte. Difcilmente se encontrar un crtico de arte que pueda estructurar las razones por las cuales considera "buena" o "mala" a una obra de arte. En general las palabras que pueda decir resultarn a los odos del programador del Sistema como una serie de subjetividades imposibles de sistematizar.

Luego de observar todo esto, se empez a considerar a los Sistemas expertos como aptos solamente para entornos reducidos y con condiciones de ejecucin acotadas. La idea del Sistema Experto como " resolvedor universal de problemas " qued sepultada.

Si bien la investigacin bsica de los algoritmos genticos es contempornea a la de los sistemas expertos , la renovada importancia que se les dio en el mbito cientfico se produjo en paralelo a la desvalorizacin que sufrieron estos ltimos.

Los algoritmos genticos se revalorizaron ya que poseen las siguientes ventajas competitivas:

Solo necesitan asesoramiento del experto cuando se agregan o suprimen variables al modelo. Los Sistemas Expertos requieren la presencia del mismo ante cada modificacin del entorno.

Los algoritmos genticos solo requieren el asesoramiento del experto para identificar las variables pertinentes , aunque no es necesario que stos definan sus valores ni sus relaciones (las reglas) iniciales o finales. Los Sistemas Expertos solo trabajan con las reglas y valores que les dictan los seres humanos.

Algoritmos Genticos y Redes Neuronales

Una red neuronal es el intento de poder realizar una simulacin computacional del comportamiento de partes del cerebro humano mediante la rplica en pequea escala de los patrones que ste desempea para la formacin de resultados a partir de los sucesos percibidos. El cerebro consta de unidades llamadas neuronas, las cuales estn conectadas entre si formando una red (de ah la denominacin " red neuronal ")

Concretamente, se trata de poder analizar y reproducir el mecanismo de aprendizaje de sucesos que poseen los animales ms evolucionados.

La red simula grupos de neuronas , llamados " capas " las cuales estn relacionadas unas con otras. Los datos se introducen en la primera capa , llamada "capa de entradas" Cada capa transfiere la informacin a sus vecinas., teniendo un peso o ponderacin para los valores , lo que va modificando los mismos en su paso a travs de la red

Cuando los datos llegan a la ltima de las capas , llamada " capa de salida " el valor resultante es tomado como el resultado de la red. La red puede ser entrenada para diversos usos , entre ellos como mecanismo de optimizacin. En este sentido, se puede expresar que seran un modelo alternativo competitivo con los algoritmos genticos , si se las programara para este fin. En rigor de verdades , la literatura sugiere que se podran hacer modelos mixtos o hbridos en donde se combinen las ventajas de las redes neuronales y los algoritmos genticos , aunque hay muy poco material disponible en este campo. Tal vez esto se deba al hecho que los GA y el estudio de las redes forman dos ramas o escuelas separadas dentro de la inteligencia artificial , por lo que existe una preferencia en los investigadores en perfeccionar alguno de los dos modelos antes que tratar de unirlos. zxas