Resolviendo problemas con algoritmos geneticos
Upcoming SlideShare
Loading in...5
×
 

Resolviendo problemas con algoritmos geneticos

on

  • 5,643 views

Platica acerca de algoritmos geneticos en Cicol 2004

Platica acerca de algoritmos geneticos en Cicol 2004

Statistics

Views

Total Views
5,643
Slideshare-icon Views on SlideShare
5,631
Embed Views
12

Actions

Likes
0
Downloads
121
Comments
0

2 Embeds 12

http://www.slideshare.net 10
http://www.linkedin.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Resolviendo problemas con algoritmos geneticos Resolviendo problemas con algoritmos geneticos Presentation Transcript

    • Optimizando programas con algoritmos Resolviendo problemas con algoritmos gen´ticos e gen´ticos e Algoritmo Gen´tico e Implementando . . . Mauro Parra Miranda Aplicaciones en . . . mauro@ciencias.unam.mx Recursos utiles ´ Home Page My brain is open. T´ ıtulo Paul Erd¨so http://www.gnulinux.biz/mauro/ Atr´s a P´gina 1 de 18 a Pant. Completa Cerrar Salir
    • Optimizando programas 1. Algoritmo Gen´tico e con algoritmos Un algoritmo gen´tico es un m´todo probabil´ e e ıstico que mantiene gen´ticos e 1 n una poblaci´n de individuos Pt = {xt , . . . , xt } para cada iteraci´n o o Algoritmo Gen´tico e t. Implementando . . . Aplicaciones en . . . Cada individuo representa una soluci´n potencial del problema o Recursos utiles ´ que se este resolviendo. Cada soluci´n xi es evaluada de alguna o t manera para conocer su desempe˜o con respecto a la poblaci´n n o actual. Home Page T´ ıtulo Una nueva poblaci´n (la t+1) es generada a trav´s de la selecci´n o e o de los individuos mejor adaptados (o sea, las mejores soluciones). Algunos individuos de la poblaci´n son alterados por algunos oper- o Atr´s a adores, llamados operadores gen´ticos. e P´gina 2 de 18 a Pant. Completa Los operadores gen´ticos m´s usados son la cruza y mutaci´n. La e a o Cerrar cruza consiste en combinar dos soluciones, mientras que la mutaci´n o Salir es alterar ligeramente una soluci´n de manera aleatoria. o
    • Optimizando 1. Generar poblaci´n Aleatoria (uniformemente distribuida, de pref- o programas erencia). con algoritmos 2. Calificar a los individuos de la poblaci´n o gen´ticos e 3. Aplicar los operadores gen´ticos a la poblaci´n actual para e o Algoritmo Gen´tico e generar una nueva poblaci´n, que sustituir´ a la actual. o a Implementando . . . 4. Si el n´mero de generaciones (iteraciones) no es suficiente ´ no u o Aplicaciones en . . . se ha llegado a la respuesta Regresar al paso 2. Recursos utiles ´ 5. Mostrar las mejores respuestas. Home Page Los operadores gen´ticos son aquellas operaciones que nos permiten e T´ ıtulo generar a la nueva poblaci´n. Tradicionalmente, se aplican 3: o Atr´s a Elitismo. Un porcentaje de la poblaci´n actual se translada a o P´gina 3 de 18 a la nueva poblaci´n. Al menos debe de estar el mejor individuo o actual, ya que de esa manera no se pierde informaci´n. o Pant. Completa Cerrar Cruza. Con probabilidad pc se combina el genoma de dos indi- Salir viduos previamente seleccionados.
    • Optimizando Mutaci´n. Con probabilidad pm se modifica el genoma de un o programas individuo, antes de a˜adirlo a la nueva poblaci´n. n o con algoritmos gen´ticos e Obviamente, es com´n aplicar otros operadores, como por ejem- u plo: Algoritmo Gen´tico e Implementando . . . Aplicaciones en . . . 1. Generaci´n de algunos individuos nuevos de manera aleatoria. o Recursos utiles ´ 2. Correcci´n de soluciones (usualmente en problemas de grafi- o cas). Home Page 3. Migraci´n de individuos si es que esta corriendo de forma par- o T´ ıtulo alela. 4. Obtenci´n de estadisticas. o Atr´s a 5. Reconfiguraci´n autom´tica de los par´metros. o a a P´gina 4 de 18 a 6. ...y m´s. a Pant. Completa Cerrar Salir
    • Optimizando programas 2. Implementando un algoritmo gen´tico e con algoritmos gen´ticos e La parte interesante de un algoritmo gen´tico es que solamente e se requiere implementar una sola vez. Realmente lo unico que cam- ´ Algoritmo Gen´tico e bia es la codificaci´n del dominio del problema y c´mo evaluar o o Implementando . . . qu´ soluci´n propuesta es mejor (normalmente, con respecto a la e o Aplicaciones en . . . poblaci´n). o Recursos utiles ´ Por ejemplo, un problema dif´ de resolver pero f´cil de enten- ıcil a der es el problema de 3-SAT. El problema consiste en que tienes Home Page expresiones como la siguiente: T´ ıtulo e = (x1 ∨ ¬x3 ∨ x4 ) ∧ (x2 ∨ x6 ∨ x3 ) ∧ . . . ∧ (x1 2 ∨ x1 ∨ x3 ) y tienes que generar una tabla de valores que satisfaga la expresi´n. o Atr´s a En este caso, basta con: P´gina 5 de 18 a x1 = true, x3 = true Pant. Completa Cerrar y lo dem´s puede quedar como se desee. a Salir
    • Optimizando El tama˜o del espacio de b´squeda de posibles soluciones esta n u programas n con dado por 2 donde n es el n´mero de variables booleanas que in- u tervienen en la expresi´n. Para n = 8, el espacio de b´squeda es o u algoritmos de tama˜o 256, mientras que para n = 32 es de 4, 294, 967, 296 n gen´ticos e (n = 64; 18, 446, 700, 000, 000, 000, 000) . Algoritmo Gen´tico e Implementando . . . Aplicaciones en . . . Recursos utiles ´ Home Page T´ ıtulo Atr´s a P´gina 6 de 18 a Pant. Completa Cerrar Salir
    • Optimizando En este problema, es sencillo generar soluciones: programas con algoritmos public class Individuo{ gen´ticos e BitSet genotype; Algoritmo Gen´tico e ... Individuo(int size){ Implementando . . . Random rnd = Aplicaciones en . . . new Random(java.util.Calendar.getTimeInMillis()); Recursos utiles ´ genotype = new BitSet(size); for(int i = 0; i < size; i++){ Home Page if(rnd.nextDouble() > 0.5) T´ ıtulo genotype.set(i); } } ... Atr´s a } P´gina 7 de 18 a Pant. Completa Cerrar Salir
    • Optimizando Cada bit corresponde al valor de cada variable booleana xi : programas con genotype.get(i) == xi algoritmos gen´ticos e Una de las formas de evaluar la soluci´n es la siguiente: o Algoritmo Gen´tico e Implementando . . . counter = 1 Aplicaciones en . . . Recursos utiles ´ Revisar si cada subexpresi´n de tipo: o (xi ∨ xj ∨ xk ) Home Page T´ ıtulo es verdadera seg´n el genotipo. En tal caso, counter + +. u Al terminar, obtener como medida de desempe˜o a n counter Atr´s a f= total de subexpresiones P´gina 8 de 18 a Pant. Completa Cerrar Salir
    • Optimizando En tal caso, dara un valor de 0,5 cuando tengas la mitad de las programas subexpresiones resueltas y un valor de 1 cuando hayas resuelto el con problema. algoritmos gen´ticos e Seleccionamos un par de individuos de la poblaci´n, que seran o Algoritmo Gen´tico e en los que aplicaremos los operadores geneticos. Implementando . . . Aplicaciones en . . . La forma cl´sica de seleccionar un par de individuos es la selecci´n a o Recursos utiles ´ de ruleta, esto es, tal como en los concursos de la televisi´n, tenemos o una ruleta dividida acorde con el desempe˜o de cada individuo y n luego le damos un par de vueltas para ver a qui´n escogeremos. En e Home Page c´digo: o T´ ıtulo Atr´s a P´gina 9 de 18 a Pant. Completa Cerrar Salir
    • Optimizando programas public class Poblation{ con private Individuo population[]; algoritmos ... gen´ticos e public Individuo select(){ Algoritmo Gen´tico e double sum = 0.0, tope=0.0, suma=0.0; Implementando . . . for(int i=0; i<population.length; i++) sum+=population[i].getFitness(); Aplicaciones en . . . tope = rnd.nextDouble()*sum; Recursos utiles ´ for(int i = 0; i<population.length; i++){ suma+=population[i].getFitness(); Home Page if (suma>=tope) T´ ıtulo return population[i]; } } Atr´s a ... P´gina 10 de 18 a } Pant. Completa Cerrar Lo cual nos regresa un individuo al azar. Cuando tengamos dos, Salir
    • Optimizando podemos aplicar los operadores gen´ticos. Tradicionalmente se apli- e programas can tres: elitismo, cruza y mutaci´n. o con algoritmos public class Poblation{ gen´ticos e ... public Individuo[] elitism(double percent){ Algoritmo Gen´tico e int number = (int)(this.getSize()*percent); Implementando . . . Individuo arr[]; Aplicaciones en . . . arr = new Individuo[number]; Recursos utiles ´ this.sort(); for(int i = 0; i<number; i++){ Home Page arr[i] = population[i]; T´ ıtulo } return arr; } Atr´s a ... P´gina 11 de 18 a } Pant. Completa Cerrar Salir
    • Optimizando programas public class Individuo{ con ... algoritmos public Individuo crossover(Individuo e, double pc){ gen´ticos e Individuo n; Algoritmo Gen´tico e BitSet nbs = this.getGenome(); Implementando . . . BitSet obs = e.getGenome(); Aplicaciones en . . . if(rnd.nextDouble()<pc){ Recursos utiles ´ for(int i = (nbs.length()/2); i<nbs.length(); i++){ nbs.set(i, obs.get(i)); } Home Page } T´ ıtulo n = new Individuo(nbs); return n; } Atr´s a ... P´gina 12 de 18 a } Pant. Completa Cerrar Salir
    • Optimizando programas public class Individuo{ con ... algoritmos public Individuo mutate(double pm){ gen´ticos e Individuo n; Algoritmo Gen´tico e BitSet bs = this.getGenome(); Implementando . . . for(int i = 0; i<bs.length(); i++){ Aplicaciones en . . . if (rnd.nextDouble()<pm){ Recursos utiles ´ bs.flip(i); } } Home Page n = new Individuo(bs); T´ ıtulo return n; } ... Atr´s a } P´gina 13 de 18 a Pant. Completa Notese que el plan aqu´ es explotar (elitismo, cruza) el conocimien- ı Cerrar to adquirido y explorar (mutaci´n) el espacio de posibles soluciones. o Salir
    • Optimizando Un algoritmo gen´tico es f´cilmente paralelizable. En ocasiones, e a programas las funciones de evaluaci´n de desempe˜o podr´ requerir mucho o n ıan con tiempo para ser evaluadas, por lo que se asigna un individuo por algoritmos procesador disponible. gen´ticos e Algoritmo Gen´tico e Implementando . . . Aplicaciones en . . . Recursos utiles ´ Home Page T´ ıtulo Atr´s a P´gina 14 de 18 a Pant. Completa Cerrar Salir
    • Optimizando programas 3. Aplicaciones en Software con algoritmos 1. Creaci´n de horarios (sin colisiones) o gen´ticos e 2. An´lisis Financiero (Explotando el an´lisis t´cnico) a a e Algoritmo Gen´tico e 3. Solucionar ecuaciones diferenciales ordinarias (¿sin dolor?) Implementando . . . 4. Dise˜o de robots (Basilisc) n Aplicaciones en . . . Recursos utiles ´ 5. Descubrimiento de estrategias para Teor´ de juegos (El dilema ıa del prisionero, Oligopolios) Home Page 6. Adaptando lineas de producci´n o T´ ıtulo 7. Generar m´sica u 8. Optimizando el dise˜o de PCBs (Printed Circuit Boards, usando n TSP) Atr´s a P´gina 15 de 18 a 9. Optimizando el dise˜o de procesadores (usando TSP: Travelling n Salesman Problem) Pant. Completa Cerrar 10. Control de tr´fico a´reo a e Salir
    • Optimizando 11. Creaci´n de rutas de repartici´n optimas (gr´ficas planas!) o o a programas con 12. Creaci´n de algoritmos para mantener la consistencia del color o algoritmos en retinas artificiales. gen´ticos e Algoritmo Gen´tico e Implementando . . . Aplicaciones en . . . Recursos utiles ´ Home Page T´ ıtulo Atr´s a P´gina 16 de 18 a Pant. Completa Cerrar Salir
    • Optimizando programas 4. Recursos utiles ´ con algoritmos http://www.gnulinux.biz/mauro/ gen´ticos e “Genetic Algorithms + Data Structures = Evolution Programs”. Zbigniew Michalewicz. Springer. Algoritmo Gen´tico e Implementando . . . “Evolutionary Programming IV”. John R. McDonnell, et al. Aplicaciones en . . . MIT Press. Recursos utiles ´ “Evolutionary Programming V”. Lawrence J. Fogel, et al. MIT Press. Home Page “Applications of Evolutionary Computing”. Egbert Boers, et al. T´ ıtulo Springer. “Genetic Programming”. Julian Miller, et al. Springer. Atr´s a The Genetic Algorithms archive. P´gina 17 de 18 a http://www.aic.nrl.navy.mil/galist/ Pant. Completa Basilisc. Cerrar http://ganso5.fi-b.unam.mx/basilisc/basilisc.html Salir
    • Optimizando Genetic Algorithms Warehouse. programas http://geneticalgorithms.ai-depot.com/Applications.html con algoritmos Adaptaci´n de lineas de producci´n. o o gen´ticos e http://www.ici.ro/ici/revista/sic2000 4/art01.htm Algoritmo Gen´tico e “A grammar based Genetic Programming technique applied to music generation”. Jeffrey Putnam. jefu@nmt.edu Implementando . . . Aplicaciones en . . . GaLib Recursos utiles ´ http://lancet.mit.edu/ga/ Genetic Programming Home Page http://www.genetic-programming.org/ T´ ıtulo “Software that writes software”. Alexis Willihnganz. http://www.genetic-programming.com/published/Salon081099.html Atr´s a P´gina 18 de 18 a Pant. Completa Cerrar Salir