SlideShare una empresa de Scribd logo
1 de 8
UNIVERSIDAD LAICA ELOY ALFARO
DE MANABI
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERIA ELECTRICA
TAREA DE PROGRAMACIÓN I
PROF: Ing. Washington García, Mg.
Alumno: Ronald Barcia Macías
Curso: 2
do
semestre “A”
Algoritmos Genéticos
La capacidad del ser humano para predecir el comportamiento de su entorno se ha ido
incrementando con el paso del tiempo. De igual modo, ha comprendido que si bien
eracapaz de controlar muchos aspectos de su vida, y su interacción con lo que le rodeaba,
no lo era para otros tantos.
La inteligencia artificial es responsable de muchos de esos logros. Los pioneros de esta
ciencia estaban tan interesados en la electrónica, como en la biología, y por eso sus
aplicaciones iban desde calcular trayectorias de misiles, a tratar de modelar el cerebro, de
imitar el proceso de aprendizaje humano, y de simular la evolución biológica.
Los años ochenta marcan el florecimiento del interés de la comunidad científica por estos
temas computacionales inspirados en la biología, que han visto como su desarrollo les
llevaba a cosas inimaginables, primero en el campo de las Redes Neuronales, luego en el
del Aprendizaje, y por último en lo que ahora se conoce como “computación evolutiva”, de
la que los algoritmos genéticos constituyen su máximo exponente.
Los programas evolutivos fueron presentados en 1994 por Michalewicz, cuando propuso
incorporar conocimiento específico del problema a resolver en las estructuras de datos.
Así, los Programas Evolutivos son métodos que incorporan directamente conocimiento
específico a los Algoritmos Genéticos, puesto que permiten la utilización de estructuras de
datos naturales. Esto permite, a su vez, la utilización de operadores genéticos sensibles al
contexto, con el fin de mejorar la eficiencia del algoritmo de búsqueda sin perder gran
parte de la propiedad de generalización.
Los Algoritmos Genéticos son métodos adaptativos que pueden usarse para resolver
problemas de búsqueda y optimización. Están basados en el proceso genético de los
organismos vivos.
A lo largo de las generaciones, las poblaciones evolucionan en la naturaleza de acorde con
los principios de la selección natural y la supervivencia de los más fuertes, postulados por
Darwin (1859). Por imitación de este proceso, los Algoritmos Genéticos son capaces de ir
creando soluciones para problemas del mundo real. La evolución de dichas soluciones
hacia valores óptimos del problema depende en buena medida de una adecuada
codificación de las mismas.En la naturaleza los individuos de una población compiten entre
sí en la búsqueda de recursos tales como comida, agua y refugio. Incluso los miembros de
una misma especie compiten a menudo en la búsqueda de un compañero. Aquellos
individuos que tienen más éxito en sobrevivir y en atraer compañeros tienen mayor
probabilidad de generar un gran número de descendientes. Por el contrario individuos
poco dotados producirán un menor número de descendientes. Esto significa que los genes
de los individuos mejor adaptados se propagaran en sucesivas generaciones hacia un
número de individuos creciente. La combinación de buenas características provenientes de
diferentes ancestros, puede a veces producir descendientes "superindividuos", cuya
adaptación es mucho mayor que la de cualquiera de sus ancestros. De esta manera, las
especies evolucionan logrando unas características cada vez mejor adaptadas al entorno
en el que viven.
El tema central en las investigaciones sobre algoritmos genéticos, ha sido larobustez, el
equilibrio necesario entre la eficiencia y la eficacia suficiente para la supervivencia en
entornos diferentes. Las implicaciones que tiene la robustez en los sistemas artificiales son
variadas. Si se puede conseguir que un sistema artificial sea más robusto, se podrán
reducir, e incluso eliminar, los costes por rediseños. Y si se es capaz de lograr niveles altos
de adaptación, los sistemas podrán desarrollar sus funciones mejor y durante más tiempo.
Sin embargo, ante la robustez, eficiencia y flexibilidad de los sistemas biológicos, sólo
podemos sentarnos a contemplar, y maravillarnos; mentiríamos si dijéramos que somos
capaces de igualarlos.
El poder de los Algoritmos Genéticos proviene del hecho de que se trata de una técnica
robusta, y pueden tratar con éxito una gran variedad de problemas provenientes de
diferentes áreas, incluyendo aquellos en los que otros métodos encuentran dificultades. Si
bien no se garantiza que el Algoritmos Genéticos encuentre la solución óptima del
problema, existe evidencia evidencia empírica de que se encuentran soluciones de un
nivel aceptable, en untiempo competitivo con el resto de algoritmos de optimización
combinatoria.
En el caso de que existan técnicas especializadas para resolver un determinado
problema, lo más probable es que superen al Algoritmos Genético, tanto en rapidez
como en eficacia.El gran campo de aplicación de los Algoritmos Genéticos se relaciona
con aquellos problemas para los cuales no existen técnicas especializadas. Incluso en el
caso en que dichas técnicas existan, y funcionen bien, pueden efectuarse mejoras de
las mismas hibridándolas con los Algoritmos Genéticos.
Un algoritmo genético es un método de búsqueda dirigida basada en probabilidad.
Bajo una condición muy débil (que el algoritmo mantenga elitismo, es decir, guarde
siempre al mejor elemento de la población sin hacerle ningún cambio) se puede
demostrar que el algoritmo converge en probabilidad al óptimo. En otras palabras, al
aumentar el número de iteraciones, la probabilidad de tener el óptimo en la población
tiende a 1.
¿Por qué utilizar Algoritmos Genéticos en la Optimización?
La razón del creciente interés por los Algoritmos Genéticos es que estos son un método
global y robusto de búsqueda de las soluciones de problemas. La principal ventaja de
estas características es el equilibrio alcanzado entre la eficiencia y eficacia para resolver
diferentes y muy complejos problemas de grandes dimensiones.
Lo que aventaja a los Algoritmos Genéticos frente a otros algoritmos tradicionales de
búsqueda es que se diferencian de estos en los siguientes aspectos:
 Trabajan con una codificación de un conjunto de parámetros, no con los
parámetros mismos.
 Trabajan con un conjunto de puntos, no con un único punto y su entorno (su
técnica de búsqueda es global.) Utilizan un subconjunto del espacio total, para
obtener información sobre el universo de búsqueda, a través de las evaluaciones
de la función a optimizar. Esas evaluaciones se emplean de forma eficiente para
clasificar los subconjuntos de acuerdo con su idoneidad.
 No necesitan conocimientos específicos sobre el problema a resolver; es decir,
no están sujetos a restricciones. Por ejemplo, se pueden aplicar a funciones no
continuas, lo cual les abre un amplio campo de aplicaciones que no podrían ser
tratadas por los métodos tradicionales.
 Utilizan operadores probabilísticos, en vez de los típicos operadores
determinísticos de las técnicas tradicionales.
 Resulta sumamente fácil ejecutarlos en las modernas arquitecturas masivas en
paralelo.
 Cuando se usan para problemas de optimización, resultan menos afectados por
los máximos locales que las técnicas tradicionales.
Ahora bien; un esquema del funcionamiento general de un algoritmo genético podría ser
el siguiente:
Algoritmo Genético:
- Generar una población inicial.
- Iterar hasta un criterio de parada.
- Evaluar cada individuo de la población.
- Seleccionar los progenitores.
- Aplicar el operador de cruce y mutación a estos progenitores.
- Incluir la nueva descendencia para formar una nueva generación.
BEGIN/* Algoritmo Genético Simple */
Generar una población inicial.
Computar la función de evaluación de cada individuo.
WHILE NOTTerminado DO
BEGIN/* Producir nueva generación */
FORTamaño población/2 DO
BEGIN/*Ciclo Reproductivo */
Seleccionar dos individuos de la anterior generación,para el cruce
(probabilidad de selección proporcional a la función de evaluación del
individuo).
Cruzarcon cierta probabilidad los dos individuos obteniendo dos
descendientes.
Mutar los dos descendientes con cierta probabilidad.
Computar la función de evaluación de los dos descendientes mutados.
Insertar los dos descendientes mutados en la nueva generación.
END
IF la población ha convergido THEN
Terminado := TRUE
END
END
Funcionamiento
Los algoritmos entre el conjunto de soluciones de un problema, llamado fenotipo, y el
conjunto de individuos de una población natural, codificando la información de cada
solución en una cadena, generalmente binaria, llamada cromosoma. Los símbolos que
forman la cadena son llamados los genes. Cuando la representación de los cromosomas
se hace con cadenas de dígitos binarios se le conoce como genotipo. Los cromosomas
evolucionan a través de iteraciones, llamadas generaciones. En cada generación, los
cromosomas son evaluados usando alguna medida de aptitud. Las siguientes
generaciones (nuevos cromosomas), operadores genéticos, de sobrecruzamiento y de
mutación.
¿Cuándo usar estos algoritmos?
Los algoritmos genéticos son de probada eficacia en caso de querer calcular funciones
no derivables (o de derivación muy compleja) aunque su uso es posible con cualquier
función.
Deben tenerse en cuenta también las siguientes consideraciones:
Si la función a optimizar tiene muchos máximos/mínimos locales se requerirán
más iteraciones del algoritmo para "asegurar" el máximo/mínimo global.
Si la función a optimizar contiene varios puntos muy cercanos en valor al
óptimo, solamente podemos "asegurar" que encontraremos uno de ellos (no
necesariamente el óptimo).
Funcionamiento de un algoritmo genético básico
Un algoritmo genético puede presentar diversas variaciones, dependiendo de cómo se
aplican los operadores genéticos (cruzamiento, mutación), de cómo se realiza la
selección y de cómo se decide el reemplazo de los individuos para formar la nueva
población. En general, el pseudocódigo consiste de los siguientes pasos:
Algoritmo genético i: inicialización, f(X): evaluación, ?: condición de término, Se:
selección, Cr: cruzamiento, Mu: mutación, Re: reemplazo, X*: mejor solución.
Inicialización: Se genera aleatoriamente la población inicial, que está
constituida por un conjunto de cromosomas los cuales representan las posibles
soluciones del problema. En caso de no hacerlo aleatoriamente, es importante
garantizar que dentro de la población inicial, se tenga la diversidad estructural de
estas soluciones para tener una representación de la mayor parte de la población
posible o al menos evitar la convergencia prematura.
Evaluación: A cada uno de los cromosomas de esta población se aplicará la
función de aptitud para saber cómo de "buena" es la solución que se está
codificando.
Condición de término El AG se deberá detener cuando se alcance la solución
óptima, pero ésta generalmente se desconoce, por lo que se deben utilizar otros
criterios de detención. Normalmente se usan dos criterios: correr el AG un
número máximo de iteraciones (generaciones) o detenerlo cuando no haya
cambios en la población. Mientras no se cumpla la condición de término se hace
lo siguiente:
o Selección Después de saber la aptitud de cada cromosoma se procede a
elegir los cromosomas que serán cruzados en la siguiente generación.
Los cromosomas con mejor aptitud tienen mayor probabilidad de ser
seleccionados.
o Recombinación o Cruzamiento La recombinación es el principal
operador genético, representa la reproducción sexual, opera sobre dos
cromosomas a la vez para generar dos descendientes donde se combinan
las características de ambos cromosomas padres.
o Mutación modifica al azar parte del cromosoma de los individuos, y
permite alcanzar zonas del espacio de búsqueda que no estaban cubiertas
por los individuos de la población actual.
o Reemplazo una vez aplicados los operadores genéticos, se seleccionan
los mejores individuos para conformar la población de la generación
siguiente
Aplicaciones
Diseño automatizado, incluyendo investigación en diseño de materiales y diseño
multiobjetivo de componentes automovilísticos: mejor comportamiento ante
choques, ahorros de peso, mejora de aerodinámica, etc.
Diseño automatizado de equipamiento industrial.
Diseño automatizado de sistemas de comercio en el sector financiero.
Construcción de árboles filogenéticos.
Optimización de carga de contenedores.
Diseño de sistemas de distribución de aguas.
Diseño de topologías de circuitos impresos.
Diseño de topologías de redes computacionales.
En Teoría de juegos, resolución de equilibrios.
Análisis de expresión de genes.
Aprendizaje de comportamiento de robots.
Aprendizaje de reglas de Lógica difusa.
Análisis lingüístico, incluyendo inducción gramática, y otros aspectos de
Procesamiento de lenguajes naturales, tales como eliminación de ambigüedad de
sentido.
Infraestructura de redes de comunicaciones móviles.
Optimización de estructuras moleculares.
Planificación de producción multicriteria.
Predicción.
Aplicación de Algoritmos Genéticos al Dilema del prisionero Iterado
Optimización de sistemas de compresión de datos, por ejemplo, usando
wavelets.
Predicción de Plegamiento de proteínas.
Optimización de Layout.
Predicción de estructura de ARN.
En bioinformática, Alineamiento múltiple de secuencias.
Aplicaciones en planificación de procesos industriales, incluyendo planificación
job-shop.
Selección óptima de modelos matemáticos para la descripción de sistemas
biológicos.
Manejo de residuos sólidos.
Ingeniería de software.
Construcción de horarios en grandes universidades, evitando conflictos de
clases.
Problema del viajante.
Hallazgo de errores en programas.
Optimización de producción y distribución de energía eléctrica.
Diseño de redes geodésicas (Problemas de diseño).
Calibración y detección de daños en estructuras civiles.
Un ejemplo simple de algoritmo genético
Sea X el problema a resolver. Dada una representación de candidatas a soluciones en una
cadena de bits, un algoritmo genético simple, tal y como se describe en Mitchell M. (1998),
trabajaría del siguiente modo:
1. Comenzar con una población P generada aleatoriamente de n cromosomas de lbit.
2. Calcular la capacidad f(x) para cada cromosoma x de P.
3. Repetir los siguientes pasos hasta que se hayan creado n descendientes:
a. Seleccionar un par de cromosomas padre de P, siendo la probabilidad de
selección una función creciente de la capacidad. La selección se realiza
“con remplazamiento”, es decir, que el mismo cromosoma puede ser
seleccionado en más de una ocasión para ser padre.
b. Con probabilidad pc (probabilidad de cruce, o tasa de cruce), cruzar el par
en un punto elegido aleatoriamente (con probabilidad uniforme) para
formar dos descendientes. Si no tiene lugar ningún cruce, formar dos
descendientes que sean copias exactas de sus respectivos padres.
(Obsérvese que aquí la probabilidad de cruce se define como la
probabilidad de que dos padres se crucen sobre un único punto. Hay otras
versiones de algoritmos genéticos que son de “cruces en múltiples puntos”,
en los que la tasa de cruce para una pareja de padres es el n º de puntos en
los que tiene lugar un cruce).
c. Mutar los dos descendientes en cada lugar con probabilidad pm
(probabilidad de mutación, o tasa de mutación), y colocar los cromosomas
resultantes en lanueva población P’.Si n es impar, se puede rechazar
aleatoriamente a un miembro de la nuevapoblación.
4. Remplazar la población actual P con la nueva P’.
5. Volver al paso 2.
Cada iteración del proceso recibe el nombre de generación. Lo usual es iterar el algoritmo
de 50 a 500 o más veces. El conjunto completo de generaciones se llama serie.Al concluir
una serie, a menudo se encuentran entre la población uno o más cromosomas con elevada
capacidad. Como la aleatoriedad juega un importante papel en cada serie, dos series con
diferentes números aleatorios en el origen darán lugar generalmente a comportamientos
diferentes. Los investigadores en algoritmos genéticos acostumbran a reportar estadísticas
(tales como el mejor potencial hallado en una serie, y la generación donde se encontró el
individuo con la mejor capacidad, etc.) evaluadas sobre muchas series diferentes del
algoritmo genético sobre el mismo problema. El procedimiento arriba descrito es en
realidad la base de la mayoría de las aplicaciones de los Algoritmos Genéticos. Desde
luego, quedan muchos detalles importantes en los que se debería profundizar, como cuál
ha de ser el tamaño de la población, y cuáles las probabilidades de cruce (pc) y de
mutación (pm). De esos “detalles”dependerá, en gran parte, el éxito o fracaso del
Algoritmo Genético que estemos aplicando. Asimismo, podemos encontrar otros
Algoritmos Genéticos mucho más complejos (y eficaces) que el que se ha utilizado, como
aquellos que trabajan sobre otras representaciones además de las cadenas de bits, o los
que emplean otros operadores de cruce y mutación, pero se pretende realizar una primera
aproximación del lector al campo de los Algoritmos Genéticos, no desarrollar un completo
estudio del mismo.
Como se ha podido observar, una de las principales ventajas de los AG puede
observarse en su sencillez; puesto que se necesita muy poca información sobre el
espacio de búsqueda ya que se trabaja sobre un conjunto de soluciones o parámetros
codificados (hipótesis o individuos). Al igual que sus campos de aplicación, se puede
afirmar que es un método muy completo de optimización, puesto que sus áreas de
estudio son muy amplias, y se puede ver generalizado en muchos sucesos cotidianos.
Se ha observado de igual forma que los AG están indicados para resolver todo tipo de
problemas que se puedan expresar como un problema de optimización donde se
define una representación adecuada para las soluciones y para la función a optimizar.
Se busca una solución por aproximación de la población, en lugar de una aproximación
punto a punto.
http://eddyalfaro.galeon.com/geneticos.html
www.sc.ehu.es/ccwbayes/docencia/mmcc/docs/temageneticos.pdf
http://geneura.ugr.es/~jmerelo/ie/ags.html
www.nebrija.es/~cmalagon/ia/apuntes/algoritmosgeneticos.pdf
www.uv.es/asepuma/X/J24C.pdf
C++ para ingeniería y ciencias, 2da Ed - Gary J. Bronson
Como Programar en C y Java 4ta Edición - Deitel

Más contenido relacionado

Similar a Algoritmos genéticos 2 s lun 30 sep-13

Trabajo algoritmo genetico uba
Trabajo algoritmo genetico uba Trabajo algoritmo genetico uba
Trabajo algoritmo genetico uba yucci2323
 
Xpin algoritmos genéticos
Xpin   algoritmos genéticosXpin   algoritmos genéticos
Xpin algoritmos genéticosprofesorgavit0
 
Apunte Algoritmos Geneticos
Apunte Algoritmos GeneticosApunte Algoritmos Geneticos
Apunte Algoritmos GeneticosESCOM
 
Introducción a los Algoritmos Genéticos
Introducción  a los Algoritmos GenéticosIntroducción  a los Algoritmos Genéticos
Introducción a los Algoritmos Genéticosdrk28
 
Trabajo+completo+de+inteligencia+algoritmo+genetico
Trabajo+completo+de+inteligencia+algoritmo+geneticoTrabajo+completo+de+inteligencia+algoritmo+genetico
Trabajo+completo+de+inteligencia+algoritmo+geneticoRufino meri?
 
Algoritmos Genéticos
Algoritmos GenéticosAlgoritmos Genéticos
Algoritmos GenéticosJohnDoe25248
 
Algoritmo genetico
Algoritmo geneticoAlgoritmo genetico
Algoritmo geneticoRufino meri?
 
Utp i_ay_se_s10_algoritmo genéticos_
 Utp i_ay_se_s10_algoritmo genéticos_ Utp i_ay_se_s10_algoritmo genéticos_
Utp i_ay_se_s10_algoritmo genéticos_jcbenitezp
 
Inteligencia Artificial Clase 5
Inteligencia Artificial Clase 5Inteligencia Artificial Clase 5
Inteligencia Artificial Clase 5UNEFA
 
5 herramienta aprendizaje algoritmos geneticos entorno matlab
5 herramienta aprendizaje algoritmos geneticos entorno matlab5 herramienta aprendizaje algoritmos geneticos entorno matlab
5 herramienta aprendizaje algoritmos geneticos entorno matlabMaje Gonzalez
 
Algoritmos geneticos
Algoritmos geneticosAlgoritmos geneticos
Algoritmos geneticosYAn_dy
 
Algoritmos geneticos
Algoritmos geneticosAlgoritmos geneticos
Algoritmos geneticosKevin Medina
 
Algoritmo Genético
Algoritmo GenéticoAlgoritmo Genético
Algoritmo Genéticoandreaac2014
 

Similar a Algoritmos genéticos 2 s lun 30 sep-13 (20)

Trabajo algoritmo genetico uba
Trabajo algoritmo genetico uba Trabajo algoritmo genetico uba
Trabajo algoritmo genetico uba
 
Desarollo de sofware con algoritmos genéticos
Desarollo de sofware con algoritmos genéticosDesarollo de sofware con algoritmos genéticos
Desarollo de sofware con algoritmos genéticos
 
Xpin algoritmos genéticos
Xpin   algoritmos genéticosXpin   algoritmos genéticos
Xpin algoritmos genéticos
 
Apunte Algoritmos Geneticos
Apunte Algoritmos GeneticosApunte Algoritmos Geneticos
Apunte Algoritmos Geneticos
 
Introducción a los Algoritmos Genéticos
Introducción  a los Algoritmos GenéticosIntroducción  a los Algoritmos Genéticos
Introducción a los Algoritmos Genéticos
 
020 algoritmos2
020 algoritmos2020 algoritmos2
020 algoritmos2
 
Alejandra Quintana
Alejandra Quintana Alejandra Quintana
Alejandra Quintana
 
Algoritmos genéticos
Algoritmos genéticosAlgoritmos genéticos
Algoritmos genéticos
 
Trabajo+completo+de+inteligencia+algoritmo+genetico
Trabajo+completo+de+inteligencia+algoritmo+geneticoTrabajo+completo+de+inteligencia+algoritmo+genetico
Trabajo+completo+de+inteligencia+algoritmo+genetico
 
Jgap algritmos geneticosss
Jgap  algritmos geneticosssJgap  algritmos geneticosss
Jgap algritmos geneticosss
 
Algoritmos Genéticos
Algoritmos GenéticosAlgoritmos Genéticos
Algoritmos Genéticos
 
Algoritmo genetico
Algoritmo geneticoAlgoritmo genetico
Algoritmo genetico
 
Utp i_ay_se_s10_algoritmo genéticos_
 Utp i_ay_se_s10_algoritmo genéticos_ Utp i_ay_se_s10_algoritmo genéticos_
Utp i_ay_se_s10_algoritmo genéticos_
 
Agente inteligente
Agente inteligenteAgente inteligente
Agente inteligente
 
Inteligencia Artificial Clase 5
Inteligencia Artificial Clase 5Inteligencia Artificial Clase 5
Inteligencia Artificial Clase 5
 
5 herramienta aprendizaje algoritmos geneticos entorno matlab
5 herramienta aprendizaje algoritmos geneticos entorno matlab5 herramienta aprendizaje algoritmos geneticos entorno matlab
5 herramienta aprendizaje algoritmos geneticos entorno matlab
 
Algoritmos geneticos
Algoritmos geneticosAlgoritmos geneticos
Algoritmos geneticos
 
ALGORITMOS GENETICOS - BUSQUEDA TABÚ
ALGORITMOS GENETICOS - BUSQUEDA TABÚALGORITMOS GENETICOS - BUSQUEDA TABÚ
ALGORITMOS GENETICOS - BUSQUEDA TABÚ
 
Algoritmos geneticos
Algoritmos geneticosAlgoritmos geneticos
Algoritmos geneticos
 
Algoritmo Genético
Algoritmo GenéticoAlgoritmo Genético
Algoritmo Genético
 

Algoritmos genéticos 2 s lun 30 sep-13

  • 1. UNIVERSIDAD LAICA ELOY ALFARO DE MANABI FACULTAD DE INGENIERIA ESCUELA DE INGENIERIA ELECTRICA TAREA DE PROGRAMACIÓN I PROF: Ing. Washington García, Mg. Alumno: Ronald Barcia Macías Curso: 2 do semestre “A”
  • 2. Algoritmos Genéticos La capacidad del ser humano para predecir el comportamiento de su entorno se ha ido incrementando con el paso del tiempo. De igual modo, ha comprendido que si bien eracapaz de controlar muchos aspectos de su vida, y su interacción con lo que le rodeaba, no lo era para otros tantos. La inteligencia artificial es responsable de muchos de esos logros. Los pioneros de esta ciencia estaban tan interesados en la electrónica, como en la biología, y por eso sus aplicaciones iban desde calcular trayectorias de misiles, a tratar de modelar el cerebro, de imitar el proceso de aprendizaje humano, y de simular la evolución biológica. Los años ochenta marcan el florecimiento del interés de la comunidad científica por estos temas computacionales inspirados en la biología, que han visto como su desarrollo les llevaba a cosas inimaginables, primero en el campo de las Redes Neuronales, luego en el del Aprendizaje, y por último en lo que ahora se conoce como “computación evolutiva”, de la que los algoritmos genéticos constituyen su máximo exponente. Los programas evolutivos fueron presentados en 1994 por Michalewicz, cuando propuso incorporar conocimiento específico del problema a resolver en las estructuras de datos. Así, los Programas Evolutivos son métodos que incorporan directamente conocimiento específico a los Algoritmos Genéticos, puesto que permiten la utilización de estructuras de datos naturales. Esto permite, a su vez, la utilización de operadores genéticos sensibles al contexto, con el fin de mejorar la eficiencia del algoritmo de búsqueda sin perder gran parte de la propiedad de generalización. Los Algoritmos Genéticos son métodos adaptativos que pueden usarse para resolver problemas de búsqueda y optimización. Están basados en el proceso genético de los organismos vivos. A lo largo de las generaciones, las poblaciones evolucionan en la naturaleza de acorde con los principios de la selección natural y la supervivencia de los más fuertes, postulados por Darwin (1859). Por imitación de este proceso, los Algoritmos Genéticos son capaces de ir creando soluciones para problemas del mundo real. La evolución de dichas soluciones hacia valores óptimos del problema depende en buena medida de una adecuada codificación de las mismas.En la naturaleza los individuos de una población compiten entre sí en la búsqueda de recursos tales como comida, agua y refugio. Incluso los miembros de una misma especie compiten a menudo en la búsqueda de un compañero. Aquellos individuos que tienen más éxito en sobrevivir y en atraer compañeros tienen mayor probabilidad de generar un gran número de descendientes. Por el contrario individuos poco dotados producirán un menor número de descendientes. Esto significa que los genes de los individuos mejor adaptados se propagaran en sucesivas generaciones hacia un número de individuos creciente. La combinación de buenas características provenientes de diferentes ancestros, puede a veces producir descendientes "superindividuos", cuya adaptación es mucho mayor que la de cualquiera de sus ancestros. De esta manera, las especies evolucionan logrando unas características cada vez mejor adaptadas al entorno en el que viven.
  • 3. El tema central en las investigaciones sobre algoritmos genéticos, ha sido larobustez, el equilibrio necesario entre la eficiencia y la eficacia suficiente para la supervivencia en entornos diferentes. Las implicaciones que tiene la robustez en los sistemas artificiales son variadas. Si se puede conseguir que un sistema artificial sea más robusto, se podrán reducir, e incluso eliminar, los costes por rediseños. Y si se es capaz de lograr niveles altos de adaptación, los sistemas podrán desarrollar sus funciones mejor y durante más tiempo. Sin embargo, ante la robustez, eficiencia y flexibilidad de los sistemas biológicos, sólo podemos sentarnos a contemplar, y maravillarnos; mentiríamos si dijéramos que somos capaces de igualarlos. El poder de los Algoritmos Genéticos proviene del hecho de que se trata de una técnica robusta, y pueden tratar con éxito una gran variedad de problemas provenientes de diferentes áreas, incluyendo aquellos en los que otros métodos encuentran dificultades. Si bien no se garantiza que el Algoritmos Genéticos encuentre la solución óptima del problema, existe evidencia evidencia empírica de que se encuentran soluciones de un nivel aceptable, en untiempo competitivo con el resto de algoritmos de optimización combinatoria. En el caso de que existan técnicas especializadas para resolver un determinado problema, lo más probable es que superen al Algoritmos Genético, tanto en rapidez como en eficacia.El gran campo de aplicación de los Algoritmos Genéticos se relaciona con aquellos problemas para los cuales no existen técnicas especializadas. Incluso en el caso en que dichas técnicas existan, y funcionen bien, pueden efectuarse mejoras de las mismas hibridándolas con los Algoritmos Genéticos. Un algoritmo genético es un método de búsqueda dirigida basada en probabilidad. Bajo una condición muy débil (que el algoritmo mantenga elitismo, es decir, guarde siempre al mejor elemento de la población sin hacerle ningún cambio) se puede demostrar que el algoritmo converge en probabilidad al óptimo. En otras palabras, al aumentar el número de iteraciones, la probabilidad de tener el óptimo en la población tiende a 1. ¿Por qué utilizar Algoritmos Genéticos en la Optimización? La razón del creciente interés por los Algoritmos Genéticos es que estos son un método global y robusto de búsqueda de las soluciones de problemas. La principal ventaja de estas características es el equilibrio alcanzado entre la eficiencia y eficacia para resolver diferentes y muy complejos problemas de grandes dimensiones. Lo que aventaja a los Algoritmos Genéticos frente a otros algoritmos tradicionales de búsqueda es que se diferencian de estos en los siguientes aspectos:  Trabajan con una codificación de un conjunto de parámetros, no con los parámetros mismos.  Trabajan con un conjunto de puntos, no con un único punto y su entorno (su técnica de búsqueda es global.) Utilizan un subconjunto del espacio total, para obtener información sobre el universo de búsqueda, a través de las evaluaciones de la función a optimizar. Esas evaluaciones se emplean de forma eficiente para clasificar los subconjuntos de acuerdo con su idoneidad.
  • 4.  No necesitan conocimientos específicos sobre el problema a resolver; es decir, no están sujetos a restricciones. Por ejemplo, se pueden aplicar a funciones no continuas, lo cual les abre un amplio campo de aplicaciones que no podrían ser tratadas por los métodos tradicionales.  Utilizan operadores probabilísticos, en vez de los típicos operadores determinísticos de las técnicas tradicionales.  Resulta sumamente fácil ejecutarlos en las modernas arquitecturas masivas en paralelo.  Cuando se usan para problemas de optimización, resultan menos afectados por los máximos locales que las técnicas tradicionales. Ahora bien; un esquema del funcionamiento general de un algoritmo genético podría ser el siguiente: Algoritmo Genético: - Generar una población inicial. - Iterar hasta un criterio de parada. - Evaluar cada individuo de la población. - Seleccionar los progenitores. - Aplicar el operador de cruce y mutación a estos progenitores. - Incluir la nueva descendencia para formar una nueva generación. BEGIN/* Algoritmo Genético Simple */ Generar una población inicial. Computar la función de evaluación de cada individuo. WHILE NOTTerminado DO BEGIN/* Producir nueva generación */ FORTamaño población/2 DO BEGIN/*Ciclo Reproductivo */ Seleccionar dos individuos de la anterior generación,para el cruce (probabilidad de selección proporcional a la función de evaluación del individuo). Cruzarcon cierta probabilidad los dos individuos obteniendo dos descendientes. Mutar los dos descendientes con cierta probabilidad. Computar la función de evaluación de los dos descendientes mutados. Insertar los dos descendientes mutados en la nueva generación. END IF la población ha convergido THEN Terminado := TRUE END END Funcionamiento Los algoritmos entre el conjunto de soluciones de un problema, llamado fenotipo, y el conjunto de individuos de una población natural, codificando la información de cada
  • 5. solución en una cadena, generalmente binaria, llamada cromosoma. Los símbolos que forman la cadena son llamados los genes. Cuando la representación de los cromosomas se hace con cadenas de dígitos binarios se le conoce como genotipo. Los cromosomas evolucionan a través de iteraciones, llamadas generaciones. En cada generación, los cromosomas son evaluados usando alguna medida de aptitud. Las siguientes generaciones (nuevos cromosomas), operadores genéticos, de sobrecruzamiento y de mutación. ¿Cuándo usar estos algoritmos? Los algoritmos genéticos son de probada eficacia en caso de querer calcular funciones no derivables (o de derivación muy compleja) aunque su uso es posible con cualquier función. Deben tenerse en cuenta también las siguientes consideraciones: Si la función a optimizar tiene muchos máximos/mínimos locales se requerirán más iteraciones del algoritmo para "asegurar" el máximo/mínimo global. Si la función a optimizar contiene varios puntos muy cercanos en valor al óptimo, solamente podemos "asegurar" que encontraremos uno de ellos (no necesariamente el óptimo). Funcionamiento de un algoritmo genético básico Un algoritmo genético puede presentar diversas variaciones, dependiendo de cómo se aplican los operadores genéticos (cruzamiento, mutación), de cómo se realiza la selección y de cómo se decide el reemplazo de los individuos para formar la nueva población. En general, el pseudocódigo consiste de los siguientes pasos: Algoritmo genético i: inicialización, f(X): evaluación, ?: condición de término, Se: selección, Cr: cruzamiento, Mu: mutación, Re: reemplazo, X*: mejor solución. Inicialización: Se genera aleatoriamente la población inicial, que está constituida por un conjunto de cromosomas los cuales representan las posibles soluciones del problema. En caso de no hacerlo aleatoriamente, es importante garantizar que dentro de la población inicial, se tenga la diversidad estructural de
  • 6. estas soluciones para tener una representación de la mayor parte de la población posible o al menos evitar la convergencia prematura. Evaluación: A cada uno de los cromosomas de esta población se aplicará la función de aptitud para saber cómo de "buena" es la solución que se está codificando. Condición de término El AG se deberá detener cuando se alcance la solución óptima, pero ésta generalmente se desconoce, por lo que se deben utilizar otros criterios de detención. Normalmente se usan dos criterios: correr el AG un número máximo de iteraciones (generaciones) o detenerlo cuando no haya cambios en la población. Mientras no se cumpla la condición de término se hace lo siguiente: o Selección Después de saber la aptitud de cada cromosoma se procede a elegir los cromosomas que serán cruzados en la siguiente generación. Los cromosomas con mejor aptitud tienen mayor probabilidad de ser seleccionados. o Recombinación o Cruzamiento La recombinación es el principal operador genético, representa la reproducción sexual, opera sobre dos cromosomas a la vez para generar dos descendientes donde se combinan las características de ambos cromosomas padres. o Mutación modifica al azar parte del cromosoma de los individuos, y permite alcanzar zonas del espacio de búsqueda que no estaban cubiertas por los individuos de la población actual. o Reemplazo una vez aplicados los operadores genéticos, se seleccionan los mejores individuos para conformar la población de la generación siguiente Aplicaciones Diseño automatizado, incluyendo investigación en diseño de materiales y diseño multiobjetivo de componentes automovilísticos: mejor comportamiento ante choques, ahorros de peso, mejora de aerodinámica, etc. Diseño automatizado de equipamiento industrial. Diseño automatizado de sistemas de comercio en el sector financiero. Construcción de árboles filogenéticos. Optimización de carga de contenedores. Diseño de sistemas de distribución de aguas. Diseño de topologías de circuitos impresos. Diseño de topologías de redes computacionales. En Teoría de juegos, resolución de equilibrios. Análisis de expresión de genes. Aprendizaje de comportamiento de robots. Aprendizaje de reglas de Lógica difusa. Análisis lingüístico, incluyendo inducción gramática, y otros aspectos de Procesamiento de lenguajes naturales, tales como eliminación de ambigüedad de sentido. Infraestructura de redes de comunicaciones móviles. Optimización de estructuras moleculares. Planificación de producción multicriteria. Predicción. Aplicación de Algoritmos Genéticos al Dilema del prisionero Iterado
  • 7. Optimización de sistemas de compresión de datos, por ejemplo, usando wavelets. Predicción de Plegamiento de proteínas. Optimización de Layout. Predicción de estructura de ARN. En bioinformática, Alineamiento múltiple de secuencias. Aplicaciones en planificación de procesos industriales, incluyendo planificación job-shop. Selección óptima de modelos matemáticos para la descripción de sistemas biológicos. Manejo de residuos sólidos. Ingeniería de software. Construcción de horarios en grandes universidades, evitando conflictos de clases. Problema del viajante. Hallazgo de errores en programas. Optimización de producción y distribución de energía eléctrica. Diseño de redes geodésicas (Problemas de diseño). Calibración y detección de daños en estructuras civiles. Un ejemplo simple de algoritmo genético Sea X el problema a resolver. Dada una representación de candidatas a soluciones en una cadena de bits, un algoritmo genético simple, tal y como se describe en Mitchell M. (1998), trabajaría del siguiente modo: 1. Comenzar con una población P generada aleatoriamente de n cromosomas de lbit. 2. Calcular la capacidad f(x) para cada cromosoma x de P. 3. Repetir los siguientes pasos hasta que se hayan creado n descendientes: a. Seleccionar un par de cromosomas padre de P, siendo la probabilidad de selección una función creciente de la capacidad. La selección se realiza “con remplazamiento”, es decir, que el mismo cromosoma puede ser seleccionado en más de una ocasión para ser padre. b. Con probabilidad pc (probabilidad de cruce, o tasa de cruce), cruzar el par en un punto elegido aleatoriamente (con probabilidad uniforme) para formar dos descendientes. Si no tiene lugar ningún cruce, formar dos descendientes que sean copias exactas de sus respectivos padres. (Obsérvese que aquí la probabilidad de cruce se define como la probabilidad de que dos padres se crucen sobre un único punto. Hay otras versiones de algoritmos genéticos que son de “cruces en múltiples puntos”, en los que la tasa de cruce para una pareja de padres es el n º de puntos en los que tiene lugar un cruce). c. Mutar los dos descendientes en cada lugar con probabilidad pm (probabilidad de mutación, o tasa de mutación), y colocar los cromosomas resultantes en lanueva población P’.Si n es impar, se puede rechazar aleatoriamente a un miembro de la nuevapoblación. 4. Remplazar la población actual P con la nueva P’. 5. Volver al paso 2.
  • 8. Cada iteración del proceso recibe el nombre de generación. Lo usual es iterar el algoritmo de 50 a 500 o más veces. El conjunto completo de generaciones se llama serie.Al concluir una serie, a menudo se encuentran entre la población uno o más cromosomas con elevada capacidad. Como la aleatoriedad juega un importante papel en cada serie, dos series con diferentes números aleatorios en el origen darán lugar generalmente a comportamientos diferentes. Los investigadores en algoritmos genéticos acostumbran a reportar estadísticas (tales como el mejor potencial hallado en una serie, y la generación donde se encontró el individuo con la mejor capacidad, etc.) evaluadas sobre muchas series diferentes del algoritmo genético sobre el mismo problema. El procedimiento arriba descrito es en realidad la base de la mayoría de las aplicaciones de los Algoritmos Genéticos. Desde luego, quedan muchos detalles importantes en los que se debería profundizar, como cuál ha de ser el tamaño de la población, y cuáles las probabilidades de cruce (pc) y de mutación (pm). De esos “detalles”dependerá, en gran parte, el éxito o fracaso del Algoritmo Genético que estemos aplicando. Asimismo, podemos encontrar otros Algoritmos Genéticos mucho más complejos (y eficaces) que el que se ha utilizado, como aquellos que trabajan sobre otras representaciones además de las cadenas de bits, o los que emplean otros operadores de cruce y mutación, pero se pretende realizar una primera aproximación del lector al campo de los Algoritmos Genéticos, no desarrollar un completo estudio del mismo. Como se ha podido observar, una de las principales ventajas de los AG puede observarse en su sencillez; puesto que se necesita muy poca información sobre el espacio de búsqueda ya que se trabaja sobre un conjunto de soluciones o parámetros codificados (hipótesis o individuos). Al igual que sus campos de aplicación, se puede afirmar que es un método muy completo de optimización, puesto que sus áreas de estudio son muy amplias, y se puede ver generalizado en muchos sucesos cotidianos. Se ha observado de igual forma que los AG están indicados para resolver todo tipo de problemas que se puedan expresar como un problema de optimización donde se define una representación adecuada para las soluciones y para la función a optimizar. Se busca una solución por aproximación de la población, en lugar de una aproximación punto a punto. http://eddyalfaro.galeon.com/geneticos.html www.sc.ehu.es/ccwbayes/docencia/mmcc/docs/temageneticos.pdf http://geneura.ugr.es/~jmerelo/ie/ags.html www.nebrija.es/~cmalagon/ia/apuntes/algoritmosgeneticos.pdf www.uv.es/asepuma/X/J24C.pdf C++ para ingeniería y ciencias, 2da Ed - Gary J. Bronson Como Programar en C y Java 4ta Edición - Deitel