Está en la página 1de 9

Qu ofrece Autentia Real Business Solutions S.L?

Somos su empresa de Soporte a Desarrollo Informtico. Ese apoyo que siempre quiso tener...

Avenida de Castilla,1 - Edificio Best Point - Oficina 21B 28830 San Fernando de Henares (Madrid) tel./fax: +34 91 675 33 06 info@autentia.com - www.autentia.com

1. Desarrollo de componentes y proyectos a medida 2. Auditora de cdigo y recomendaciones de mejora 3. Arranque de proyectos basados en nuevas tecnologas
1. Definicin de frameworks corporativos. 2. Transferencia de conocimiento de nuevas arquitecturas. 3. Soporte al arranque de proyectos. 4. Auditora preventiva peridica de calidad. 5. Revisin previa a la certificacin de proyectos. 6. Extensin de capacidad de equipos de calidad. 7. Identificacin de problemas en produccin.
3a

Gran Empresa
Tecnologa Desarrollo Sistemas

RFP

Concurso Consultora 1 Consultora 2 Consultora 3 Equipo propio desarrollo

Verificacin previa

Produccin
Certificacin o Pruebas

Piloto

3b

autentia

4. Cursos de formacin (impartidos por desarrolladores en activo)


Spring MVC, JSF-PrimeFaces /RichFaces, HTML5, CSS3, JavaScript-jQuery Control de autenticacin y acceso (Spring Security) UDDI Web Services Rest Services Social SSO SSO (Cas) JPA-Hibernate, MyBatis Motor de bsqueda empresarial (Solr) ETL (Talend) Direccin de Proyectos Informticos. Metodologas giles Patrones de diseo TDD

Gestor portales (Liferay) Gestor de contenidos (Alfresco) Aplicaciones hbridas Tareas programadas (Quartz) Gestor documental (Alfresco) Inversin de control (Spring)

BPM (jBPM o Bonita) Generacin de informes (JasperReport) ESB (Open ESB)

Compartimos nuestro conociemiento en: www.adictosaltrabajo.com

Para ms informacin vistenos en: www.autentia.com

Introduccin a los algoritmos genticos: como implementar un algoritmo gentico e... Pgina 1 de 8

E-mail: Contrasea:

Deseo registrarme Entrar He olvidado mis datos de acceso Inicio Quines somos Tutoriales Formacin Comparador de salarios Nuestro libro

Charlas Ms Ests en: Inicio Tutoriales Introduccin a los algoritmos genticos: como implementar un algoritmo gen... DESARROLLADO POR: Jose Carlos Lpez

Catlogo de servicios Autentia

Ingeniero Tcnico en Informtica

Anuncios Google

Herencia

Genetica

Antecedentes

Fecha de publicacin del tutorial: 2009-02-26


Share | Regstrate para votar

Introduccin a los algoritmos genticos: como implementar un algoritmo gentico en JAVA


ndice de contenidos.
1. 2. 3. 4. 5. 6. 7. Qu son los algoritmos genticos?. Antecedentes histricos. Representacin. Algoritmo. Funcin de evaluacin y funcin de aptitud (fitness). Operadores genticos. Y cmo puedo implementar un algoritmo gentico en Java?.

ltimas Noticias
Comic Flash sobre Las factorias de software retos y oportunidades Mi primer coderetreat, Chispas!!! Entregamos nuestro primer diploma ... Comic Flash de Head Hunting XI Charla Autentia - Mule - Recordatorio

1. Qu son los algoritmos genticos?.


Basados en modelos computacionales de la evolucin biolgica natural, los algoritmos genticos pertenecen a la clase de los algoritmos evolutivos, junto con la programacin evolutiva, la evolucin de estrategias y la programacin gentica. Los algoritmos genticos (AGs) son mecanismos de bsqueda basados en las leyes de la seleccin natural y de la gentica. Combinan la supervivencia de los individuos mejor adaptados junto con operadores de bsqueda genticos como la mutacin y el cruce, de ah que sean comparables a una bsqueda biolgica. Fueron desarrollados por John Holland y Rechemberg que crearon algoritmos de optimizacin imitando los principios bsicos de de la naturaleza. Estos algoritmos se utilizan con xito para gran variedad de problemas que no permiten una solucin eficiente a travs de la aplicacin de tcnicas convencionales.

http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=jgap

07/10/2010

Introduccin a los algoritmos genticos: como implementar un algoritmo gentico e... Pgina 2 de 8

Tiene asimismo aplicaciones variadas en ingeniera, como es el diseo de piezas (turbinas, rotores, etc.), diseo y control de redes, planificacin de tareas, sntesis de mecanismos, diseo de tolerancias, etc. y aplicaciones en otros gremios como en sistemas de computacin paralelos (paralelizacin automtica de programas secuenciales), qumica (optimizacin de procesos de produccin, diseo tecnolgico y de instalaciones), negocios y comercio (modelizacin de sistemas econmicos complejos, prediccin de mercados), medicina (anlisis de datos en medicina, diagnstico automtico) o gestin (anlisis de datos en gestin, asistentes de gestin, sistemas automticos de decisin). Para la ingeniera, los algoritmos genticos y la programacin evolutiva en general presentan oportunidades de plantearse problemas que no permiten una solucin eficiente a travs de la aplicacin de tcnicas convencionales.

Histrico de NOTICIAS

ltimos Tutoriales
Cmo alcanzar el xito en el sector de la informtica. IAQ (Interesting Asked Questions), recordando la posicin del scroll con el soporte de jQuery. Publicar un repositorio Mercurial con Apache Liferay IDE Rendimiento en espacio y transferencia de un servidor Subversion

2. Antecedentes historicos.
Los algoritmos genticos tienen sus antecedentes en la biologa y comienzan con Charles Darwin, que con su libro El origen de las especies por medio de la seleccin natural o la preservacin de las razas favorecidas en su lucha por la vida, nos habla sobre los principios de la seleccin natural.

Los principios bsicos de los algoritmos genticos se derivan de las Leyes de la Vida Natural descritos por Darwin: Existe una poblacin de individuos con diferentes propiedades y habilidades. As mismo existe una limitacin sobre el nmero de individuos que existen en una determinada poblacin. La naturaleza crea nuevos individuos con propiedades similares a los individuos existentes. Los individuos ms prometedores se seleccionan ms a menudo para la reproduccin de acuerdo con la seleccin natural. Los algoritmos genticos imitan los principios de la vida descritos y los utilizan para propsitos de optimizacin. Una de las principales deficiencias del argumento de Darwin es que, a pesar de que la herencia juega un papel preponderante en su teora, no ofrece una explicacin acerca de su funcionamiento. Sin embargo, desde Mendel se conoce que la herencia se produce a travs del cdigo gentico presente en las clulas reproductivas.

ltimos Tutoriales del Autor


Tutorial de la API de Google Maps Validando XML contra Schema Crear un archivo JAR con java.util.jar Accediendo a rutinas C y C++ desde Oracle

3. Representacin.
Todos los organismos vivos estn constituidos por clulas, y cada clula contiene uno o ms cromosomas (cadenas de ADN), que le sirven como una especie de plano al organismo. Un cromosoma puede ser conceptualmente dividido en genes cada uno de los cuales codifica una protena. En trminos generales, se puede decir que un gen se codifica como si fuera un rasgo, como puede serlo el color de ojos. Cada gen se encuentra en una posicin particular del cromosoma, y est formado por alelos.

Hibernate 3 y los tipos de datos para cadenas largas

Sguenos a travs de:

http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=jgap

07/10/2010

Introduccin a los algoritmos genticos: como implementar un algoritmo gentico e... Pgina 3 de 8

ltimas ofertas de empleo


2010-08-30

Otras Electricidad BARCELONA.


2010-08-24

Otras Sin catalogar LUGO.


2010-06-25

T. Informacin - Analista / Programador BARCELONA.

Se supone que los individuos (posibles soluciones del problema), pueden representarse como un conjunto de parmetros (que denominaremos genes), los cuales agrupados forman una ristra de valores, a menudo referida como cromosoma. Debe existir una representacin de estos genes para poder utilizarlos posteriormente en el algoritmo gentico y dotarles de unos valores. Se pueden considerar tres tipos bsicos de representacin o codificacin de los genes: Binaria: en ella se utiliza un vector cuya longitud es la del nmero de genes de cada individuo y el valor que puede tomar cada elemento es un nmero binario.

Entera: en ella se utiliza un vector cuya longitud es la del nmero de genes de cada individuo y el valor que puede tomar cada elemento es un nmero

http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=jgap

07/10/2010

Introduccin a los algoritmos genticos: como implementar un algoritmo gentico e... Pgina 4 de 8

entero.

Real: en ella se utiliza un vector cuya longitud es la del nmero de genes de cada individuo y el valor que puede tomar cada elemento es un nmero real.

Un individuo es una solucin potencial al problema que se trata. Cada individuo contiene un cromosoma. A un conjunto de individuos se le denomina poblacin. El fitness de un individuo es la evaluacin de la funcin de evaluacin e indica qu tan bueno es el individuo (es decir, la solucin al problema) con respecto a los dems.

4. Algoritmo.
Desarrollado por John H. Holland, el algoritmo gentico opera entonces a nivel de genotipo de las soluciones mediante la siguiente secuencia: 1. Comenzar con una poblacin inicial, la cual puede ser generada de manera aleatoria. 2. Calcular el fitness (aptitud) de cada individuo. 3. Aplicar el operador de seleccin con base en el fitness de la poblacin. 4. Aplicar los operadores genticos de reproduccin, cruce y mutacin a la poblacin actual para generar a la poblacin de la siguiente generacin. 5. Ir al paso 2 hasta que la condicin de parada se satisfaga. 6. Cuando se cumple la condicin de parada, se devuelve al mejor individuo encontrado (bien el mejor de todas las generaciones, bien el mejor de la ltima generacin). Al igual que en muchas otras heursticas, el comportamiento del algoritmo gentico es altamente dependiente de los parmetros iniciales (tamao de la poblacin, porcentaje de cruce, porcentaje de mutacin, nmero de generaciones, etc.), por lo que ser necesario ajustar esos parmetros para tratar de mejorar la solucin para los objetivos del problema. A cada iteracin de este proceso se le denomina una generacin. Un algoritmo gentico tpicamente se itera de 50 a 500 o incluso ms generaciones. El conjunto entero de generaciones se denomina una ejecucin. Al final de una ejecucin existen a menudo uno o varios cromosomas altamente adecuados en la poblacin, y que pueden ser elegidos como solucin al problema. La funcin de evaluacin o de fitness de un problema es realmente la funcin que se desea optimizar. Su diseo es junto con el del genotipo, una de las caractersticas ms importantes a la hora de encontrar la mejor solucin a un problema.

http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=jgap

07/10/2010

Introduccin a los algoritmos genticos: como implementar un algoritmo gentico e... Pgina 5 de 8

Como se ha podido ver en el algoritmo, en cada generacin se selecciona a un conjunto de los mejores individuos (paso 3) y se les modifica para generar la siguiente generacin mediante los llamados operadores genticos (paso 4). Estos operadores son tres: reproduccin, cruce y mutacin. El operador de cruce intenta simular la reproduccin sexual, de tal manera que los individuos resultantes del cruce contendrn informacin de varios individuos. El operador de mutacin simula la mutacin biolgica, de tal manera que los individuos mutados sern ligeramente diferentes de los individuos originales. El operador de reproduccin simplemente copia sin modificacin un individuo de una generacin a la siguiente. As en la siguiente generacin, algunos individuos simplemente habrn sido copiados, y otros cruzados y/o mutados.

5. Funcin de evaluacin y funcin de aptitud (fitness).


La funcin de evaluacin generalmente es la funcin objetivo, es decir, es lo que se quiere llegar a optimizar (ej: nmero de aciertos, nmero de movimientos, etc.). Es necesario decodificar la solucin presente en el cromosoma para evaluarla. La funcin de aptitud (fitness) es la que permite valorar la aptitud de los individuos y debe tomar siempre valores positivos. Ambas funciones suelen ser iguales, pero puede ser que la funcin objetivo sea muy compleja, tome valores negativos, o no proporcione un valor numrico y, por lo tanto, sea necesario definir una funcin de aptitud diferente. En un algoritmo gentico la informacin ha de codificarse para poder trabajar adecuadamente con ella. Cmo hemos visto, existen numerosos sistemas de codificacin, aunque nosotros utilizaremos la codificacin real. Una vez definido el sistema de codificacin a emplear se ver cmo actan los operadores bsicos de seleccin, cruce y mutacin sobre este cdigo.

6. Operadores genticos.
En su forma ms simple, un algoritmo gentico consta de los siguientes operadores genticos: seleccin, reproduccin, cruce (crossover) y mutacin. Seleccin El proceso de seleccin sirve para escoger a los individuos de la poblacin mejor adaptados, para que acten de progenitores de la siguiente generacin. En la naturaleza existen varios factores que intervienen para que un individuo pueda tener descendencia. El primero de todos es que consiga sobrevivir, ya sea porque no es devorado por depredadores, o porque sea capaz de procurarse alimento. Lo segundo es que encuentre pareja para reproducirse. El ltimo factor es que la combinacin de ambos individuos sea apta para crear un nuevo individuo. Sin embargo, en la realidad es posible que el mejor individuo no pueda reproducirse, pero otro individuo de peor calidad pueda conseguirlo. Aunque este hecho es menos probable, sigue siendo posible. En los algoritmos genticos, la seleccin es un conjunto de reglas que sirven para elegir a los progenitores de la siguiente generacin. Estos progenitores se reproducirn (cruzamiento gentico) y generarn descendencia. Un sistema muy utilizado en los algoritmos genticos es la seleccin por torneo. Este sistema consiste en escoger aleatoriamente de la poblacin un cierto nmero de individuos. De esos individuos se escoge el mejor de todos para ser el padre. Para escoger la madre se repite el proceso: se escoge aleatoriamente a un nmero de individuos de la poblacin y se elige al individuo con mejor calidad. Este sistema garantiza un mnimo de diversidad, ya que no siempre se elegir al mejor individuo de la poblacin para tener descendencia. Pero, por el contrario, existen grandes posibilidades de que ste tenga descendencia, ya que si es escogido en algn torneo, ser el vencedor.

http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=jgap

07/10/2010

Introduccin a los algoritmos genticos: como implementar un algoritmo gentico e... Pgina 6 de 8

Reproduccin En este contexto, se entender por reproduccin la clonacin de un individuo. Es decir, un individuo pasar a la siguiente generacin sin modificacin. De esta manera, la reproduccin es un operador gentico que se contrapone al cruce y la mutacin, puesto que estos ltimos modifican los individuos que pasan a la siguiente generacin. El objetivo de la reproduccin es mantener en la siguiente generacin a individuos con fitness alta de la presente generacin. Relacionado con el concepto de reproduccin est el de elitismo, el cual mantiene a los mejores individuos de una generacin a la siguiente, para que no se pierda su informacin. Cruce Durante esta fase se cruzan o mezclan los individuos seleccionados en la fase anterior. Es decir, los genes de los dos padres se mezclan entre s para dar lugar a los diferentes hijos. Existen diversos mtodos de cruce, pero los ms utilizados son los siguientes: Cruce basado en un punto: los dos individuos seleccionados para jugar el papel de padres, son recombinados por medio de la seleccin de un punto de corte, para posteriormente intercambiar las secciones que se encuentran a la derecha de dicho punto. Es decir, los genes del padre1 a la izquierda del punto de corte forman parte del hijo1 y los situados a la derecha formaran parte del hijo2, mientras que con el padre2 suceder lo contrario. Cruce punto a punto: este tipo de cruce es similar al anterior pero realizndose para cada gen de los padres. Por tanto, en este cruce los genes pares del padre1 formarn parte del hijo1 y los genes impares formarn parte del hijo2, mientras que para el padre2 suceder lo contrario. Cruce multipunto: en este tipo de cruce se selecciona aleatoriamente la cantidad de puntos que se van a utilizar para el cruce. De esta forma, y de manera anloga al anterior cruce, se irn intercambiando los genes para formar los dos nuevos hijos. Cruces especficos de codificaciones no binarias: Para este tipo de codificacin se pueden definir, adems de los anteriores, otros tipos de operadores de cruce: Media: el gen de la descendencia toma el valor medio de los genes de los padres. Tiene la desventaja de que nicamente se genera un descendiente en el cruce de dos padres. Media geomtrica: cada gen de la descendencia toma como valor la raz cuadrada del producto de los genes de los padres. Presenta el problema aadido de qu signo dar al resultado si los padres tienen signos diferentes. Extensin: se toma la diferencia existente entre los genes situados en las mismas posiciones de los padres y se suma el valor ms alto o se resta del valor ms bajo. Solventa el problema de generar un nico descendiente. Mutacin La mutacin se considera un operador bsico, que proporciona un pequeo elemento de aleatoriedad en los individuos de la poblacin. Si bien se admite que el operador de cruce es el responsable de efectuar la bsqueda a lo largo del espacio de posibles soluciones, el operador de mutacin es el responsable del aumento o reduccin del espacio de bsqueda dentro del algoritmo gentico y del fomento de la variabilidad gentica de los individuos de la poblacin. Existen varios mtodos para aplicar la mutacin a los individuos de una poblacin, pero el ms comnmente utilizado es el de mutar un porcentaje de los genes totales de la poblacin. Este porcentaje de genes a mutar se puede seleccionar de dos maneras, de forma fija, especificando el mismo porcentaje de mutacin a todas las generaciones del algoritmo gentico y de forma variable, es decir, modificando el porcentaje de mutacin de una generacin a otra, por ejemplo reducindolo. De esta manera, se consigue hacer una bsqueda ms amplia y global al principio e ir reducindola en las siguientes generaciones. Con otro tipo de codificaciones (por ejemplo codificacin real) existen otras opciones de mutacin, aplicadas con una probabilidad generalmente pequea:

http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=jgap

07/10/2010

Introduccin a los algoritmos genticos: como implementar un algoritmo gentico e... Pgina 7 de 8

Mutacin al azar: Modifica el valor de un gen asignando con un nuevo valor que se encuentra dentro de un determinado rango. El nuevo valor es independiente del valor previo del gen. Mutacin gaussiana: Dado un cromosoma p con un gen seleccionado para la mutacin i, se le aplica una distribucin normal N de media pi y desviacin estndar s (parmetro). Alternativamente se puede disminuir el valor de s a medida que aumenta el nmero de generaciones.

7. Y como puedo implementar un algoritmo gentico en Java?.


Para la implementacin de algoritmos genticos, disponemos de un framework para Java llamado JGAP (Java Genetic Algorithms Package) JGAP proporciona los mtodos y mecanismos bsicos para implementarlo. Fue diseado para que fuera muy fcil de usar, siendo altamente modular y configurable, llegando a ser realmente fcil crear incluso nuevos y personalizados operadores genticos. Se distribuye bajo licencia GPL. En su pgina web podemos encontrar gran variedad de ejemplos de uso y documentacin. A continuacin mostramos el diagrama de clases implementado en JGAP:

Como veis, ya estn implementados la mayora de operadores de los que hemos hablado anteriormente (cruce, seleccin, etc) y los tipos de genes ms comunes. De todas formas, siempre podrs crear los operadores y tipos de gen que necesites. El framework JGAP se encarga de ejecutar los operadores en cada ejecucin, devolviendo el individuo con mayor Fitness (permitindonos incluso obtener cualquier individuo de la poblacin en cualquier ejecucin).

http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=jgap

07/10/2010

Introduccin a los algoritmos genticos: como implementar un algoritmo gentico e... Pgina 8 de 8

En la siguiente direccin, podis ver lo fcil que sera implementar un algoritmo gentico desde cero. http://jgap.sourceforge.net/doc/tutorial.html

Anmate y comntanos lo que pienses sobre este TUTORIAL:


Puedes opinar o comentar cualquier sugerencia que quieras comunicarnos sobre este tutorial; con tu ayuda, podemos ofrecerte un mejor servicio.

Enviar comentario
(Slo para usuarios registrados)

Registrate y accede a esta y otras ventajas

COMENTARIOS

Esta obra est licenciada bajo licencia Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5

Copyright 2003-2010 All Rights Powered Reserved by Autentia | Texto | Contacto legal y condiciones de uso | Banners |

http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=jgap

07/10/2010

También podría gustarte