Resolviendo problemas con algoritmos geneticos

8,613 views

Published on

Platica acerca de algoritmos geneticos en Cicol 2004

Published in: Technology
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total views
8,613
On SlideShare
0
From Embeds
0
Number of Embeds
20
Actions
Shares
0
Downloads
229
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

Resolviendo problemas con algoritmos geneticos

  1. 1. 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
  2. 2. 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
  3. 3. 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.
  4. 4. 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
  5. 5. 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
  6. 6. 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
  7. 7. 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
  8. 8. 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
  9. 9. 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
  10. 10. 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
  11. 11. 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
  12. 12. 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
  13. 13. 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
  14. 14. 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
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. 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

×