Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
Gerencia de proyectos
Next
Download to read offline and view in fullscreen.

Share

Computación evolutiva no tradicional

Download to read offline

Una historia de probar cosas nuevas en computación evolutiva a lo largo de muchos años. Charla dada en la Complutense el 8 de septiembre de 2011

Computación evolutiva no tradicional

  1. 1. Computación evolutiva en entornos no tradicionales JJ Merelo Universidad de Granada Http://facebook.com/jjmerelo
  2. 2. Entorno tradicional
  3. 3. Entorno no tradicional
  4. 4. ¿Por qué? <ul><li>Buscar nuevos paradigmas bioinspirados.
  5. 5. Conseguir ciclos de computación en desuso.
  6. 6. Entender la esencia de los algoritmos bioinspirados. </li></ul>
  7. 7. ¿Qué vamos a ver? Diferentes formas de llevar a cabo EAs en entornos no tradicionales
  8. 8. Un ejemplo parásito para abrir boca $parcial =( $parcial ? &quot;$parcial+&quot; : &quot;&quot; ) . &quot;log($i*$i*exp($i))+sqrt($i)&quot; ; if ( $opt ) { print eval $parcial , &quot; n &quot; ; } else { my $s = uri_escape ( $parcial ); my $url = &quot;http://google.com/search?q=$s & btnG=B % C3 % BAsqueda&quot; ; my $response = $browser -> get ( $url ); die &quot;Canâ't get $url -- &quot; , $response -> status_line unless $response -> is_success ; my ( $resultado )= ( $response -> decoded_content = ~ m {< b > . + ? = ( . + ? )</ b ></ td >}); $resultado = ~ s {(< font size =- 2 > </ font >)}{} g ; print &quot;$i => Resultado es $resultado n &quot; ;
  9. 9. Otro par de ejemplos secuenciales <ul><li>Un algoritmo genético en PowerPoint 97
  10. 10. Y también en una cámara Canon . </li></ul>
  11. 11. Las mulas no nadan <ul><li>Pero pueden servir para computación distribuida.
  12. 12. Las redes P2P (entre pares) reflejan la complejidad del mundo actual..
  13. 13. Son redes dinámicas, ad-hoc, y superpuestas a las redes normales. </li></ul>
  14. 14. Topología P2P Red superpuesta Red física
  15. 15. Modelo de capas para computación evolutiva distribuida P2P PCs conectados a internet Red superpuesta P2P Sistema de agentes Computación evolutiva
  16. 16. Agentes evolutivos: ¿Cómo funcionan? <ul><li>Basado en DREAM (Distributed Resource Evolutionary Algorithm Machine)
  17. 17. Algoritmo evolutivo estructurado espacialmente
  18. 18. Cada agente estructura un sólo individuo
  19. 19. La vecindad se autoorganiza usando el protocolo Newscast </li><ul><li>Cada nodo tiene conocimiento finito del resto de los nodos, e intercambia información con los que conoce </li></ul><li>En la implementación básica: agente == hebra </li></ul>
  20. 20. Pero ¿esto funciona?
  21. 21. ¿Y porqué no en AJAX? function migrate ( pop ) { request = new XMLHttpRequest (); var peticion_str = 'http://geneura.ugr.es/~jmerelo/proyectos/ga-js/cgi/get_guy.cgi?chromosome=' + pop [ 0 ]. chromosome + &quot;&fitness=&quot; + pop [ 0 ]. fitness ; masca = null ; request . open ( 'GET' , peticion_str , true ); request . onreadystatechange = add_to_population ; request . send ( null ); } function add_to_population () { if ( request . readyState == 4 ) { if ( request . status == 200 ) { var json = request . responseText ; eval ( &quot;masca = &quot; + json ); document . getElementById ( 'ga-2' ). innerHTML = json ; if ( masca [ 'generaciones' ] > 0 ) { run_ga ( masca [ 'generaciones' ] ); } } } }
  22. 22. AJAX al rescate <ul><li>Javascript sólo no es suficiente para usar el navegador como entorno de computación distribuida.
  23. 23. Hace falta un sistema de comunicación asíncrono
  24. 24. AJAX=Asynchronous Javascript & XML. </li></ul>
  25. 25. AJAX al alcance de todos <ul><li>La mayoría de los navegadores incluyen JavaScript.
  26. 26. El modelo de objetos también es compatible.
  27. 27. Requisito: objeto XMLHttpRequest en el navegador. </li></ul>
  28. 28. Venga, va, ¿cómo funciona?
  29. 29. Por las vías pasa el tren <ul><li>Ruby on Rails es un entorno de desarrollo ágil basado en el paradigma MVC, el lenguaje Ruby, AJAX y un gestor de bases de datos (MySQL, por ejemplo). </li></ul>
  30. 30. ¿Qué es DCoR? <ul><li>Un sistema de computación distribuida que usa AJAX sobre Ruby on Rails para problemas, principalmente, de computación evolutiva.
  31. 31. La distribución se realiza entre cliente/servidor, y también podría hacerse entre diferentes servidores.
  32. 32. Las pruebas nos permitirán establecer su factibilidad, y el entorno más favorable para la misma, así como una línea base de prestaciones. </li></ul>Se busca logo molón. Razón, aquí.
  33. 33. Los experimentos, en casa y con gaseosa <ul><li>Problema Royal Road </li><ul><li>Maximizar el número de unos de una cadena binaria por grupos. </li></ul></ul>=3 1 1 1 =0 1 0 1
  34. 34. Montaje experimental <ul><li>Pruebas con cliente/servidor en el mismo ordenador (Linux) y en diferentes ordenadores (servidor:Linux, cliente:Windows). </li></ul>
  35. 35. Resultados distribución carga
  36. 36. Vámonos de excursión <ul><li>Problema de la mochila binaria </li><ul><li>Maximizar el peso del contenido de una mochila respetando restricciones. </li></ul><li>Experimentos en una instalación doméstica </li></ul>
  37. 37. Escalado
  38. 38. Presentando AGAJAJ <ul><li>Asynchronous Genetic Algorithm with JavaScript and JSON
  39. 39. Se trata, una vez más, de usar el navegador para computación distribuida masiva.
  40. 40. En este caso, todo el algoritmo evolutivo se ejecuta en el navegador </li></ul>
  41. 41. O volviendo a la carretera real
  42. 42. El efecto Microsiervos
  43. 43. Be fluid, my friend “ FluidDB is an openly writable shared database” http://fluidinfo.com/about
  44. 44. FluidDB nació de la computación evolutiva <ul><li>La compañía la creó Terry Jones. </li></ul><ul><li>“ FluidDB es una sola maraña de cosas.”
  45. 45. “ FluidDB permite que los datos sean sociales.”
  46. 46. “ Modelo de control único pero potente”
  47. 47. Reutilización simple de la información. </li></ul>
  48. 48. ¿Cómo funciona? Thing fluiddb/about Another Thing http://wcci2010.org jjmerelo/likes dwcorne/stars 5 The sound of music
  49. 49. Fluidificando algoritmos evolutivos Thing fluiddb/about Another Thing 0100 1001 1100 1101 jjmerelo/exp-xyz/fitness dwcorne/exp-abc/fitness 33 22 0110 0001 1111 1101 jjmerelo/exp-xyz/current
  50. 50. Ejecutando un EA fluido 0010101100 001010000 0010101100 0010101100 1110101100 1101101100 0011101100 0010101100 0010101100 1011101100 0011101100 0010101100
  51. 51. Software libre <ul><li>El software te lo puedes bajar de http://sl.ugr.es/001U
  52. 52. Implementado en Perl
  53. 53. 1600 evaluaciones
  54. 54. Población = 2/32
  55. 55. Problema = MaxOnes (64 bits) </li></ul>
  56. 56. Número de reproducciones con éxito
  57. 57. Por ahora va bien El fitness se incrementa de forma continua
  58. 58. Usar el pool calculado mejora los resultados Esta es la primera Segunda ejecución
  59. 59. El tamaño del lote es importante Esta es la primera Esta es la segunda
  60. 60. También en Dropbox <ul><li>Primero lo describimos
  61. 61. Cómo se implementa un algoritmo evolutivo distribuido en él.
  62. 62. Medidas de aceleración sobre diferentes ordenadores
  63. 63. Diferencias entre modos de conexión. . </li></ul>
  64. 64. Dropbox
  65. 65. Nubes tormentosas experimentales <ul><li>1 a 4 ordenadores diferentes..
  66. 66. Conexión Gigabit Ethernet o WiFi + WPA.
  67. 67. Dropbox actualizado a la última versión
  68. 68. Funciones de fitness: MMDP, P-Peaks y Trap. </li></ul>
  69. 69. Nuboso, con posibilidad de evolución Individuo Evaluaciones/nodo
  70. 70. Atrapado en las nubes Ethernet WiFi
  71. 71. MMDP Ethernet WiFi
  72. 72. Resultados iniciales MMDP Computers Gens for Migration success(%) 1 100 83% 2 100 95% 4 100 100% 1 200 70% 2 200 88% 4 200 100% 1 400 80% 2 400 90% 4 400 100%
  73. 73. Resultados iniciales P-PEAKS Computers Gens for Migration success(%) 1 20 100% 2 20 100% 4 20 100% 1 40 100% 2 40 100% 4 40 100% 1 60 100% 2 60 100% 4 60 100% <ul><li>No hay ninguna diferencia en la tasa de éxito. </li></ul>
  74. 74. Resultados MMDP
  75. 75. Resultados de P-Peaks
  76. 76. Conclusiones <ul><li>Dropbox se puede usar para distribuir algoritmos evolutivos
  77. 77. El equilibrado de carga es automático.
  78. 78. La red importa.
  79. 79. Buen escalado.
  80. 80. ¿Significará un algoritmo mejor? </li></ul>¡Sí!
  81. 81. Eso no es todo <ul><li>Algoritmos genéticos en OSGi </li><ul><li>Elección dinámica de servicios
  82. 82. Interactividad con el usuario </li></ul><li>Otros servicios web: REST, SOAP </li><ul><li>Optimización como servicio </li></ul><li>Multicomputadora móvil </li><ul><li>Algoritmos evolutivos sobre J2ME/BlueTooth </li></ul><li>Algoritmos evolutivos en Erlang </li><ul><li>Sistema de hebras súper eficiente </li></ul></ul>
  83. 83. ¿Hay alguna conclusión? No
  84. 84. ¿Hay alguna conclusión? Perdón, sí
  85. 85. Pero ¿cuál? <ul><li>También hay que explorar en computación evolutiva, no sólo explotar.
  86. 86. Cada nuevo paradigma ataca las suposiciones de una forma diferente. </li><ul><li>¿Población? ¿Generación? ¿Entrecruzamiento? </li></ul><li>Te enseña a buscar la forma más eficiente de programar el algoritmo evolutivo </li><ul><li>Sin perder la esencia del mismo. </li></ul></ul>
  87. 87. Deja que la Naturaleza sea tu guía
  88. 88. Muchas gracias @jjmerelo http://geneura.wordpress.com Eso es todo
  • fernand0

    Sep. 9, 2011

Una historia de probar cosas nuevas en computación evolutiva a lo largo de muchos años. Charla dada en la Complutense el 8 de septiembre de 2011

Views

Total views

1,448

On Slideshare

0

From embeds

0

Number of embeds

14

Actions

Downloads

18

Shares

0

Comments

0

Likes

1

×