Optimizando programas con algoritmos geneticos

Mauro Parra-Miranda
Mauro Parra-MirandaSoftware Developer at Appcelerator
Optimizando
                                                  programas
                                                         con
                                                   algoritmos
Optimizando programas 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
1 of 18

Recommended

Resolviendo problemas con algoritmos geneticos by
Resolviendo problemas con algoritmos geneticosResolviendo problemas con algoritmos geneticos
Resolviendo problemas con algoritmos geneticosMauro Parra-Miranda
10.2K views18 slides
Inteligencia Artificial Clase 5 by
Inteligencia Artificial Clase 5Inteligencia Artificial Clase 5
Inteligencia Artificial Clase 5UNEFA
2.6K views24 slides
Sistema Dfv by
Sistema DfvSistema Dfv
Sistema Dfvmuestraempresarial2
615 views14 slides
Aneglic by
AneglicAneglic
Aneglicmarianglica
257 views5 slides
Exportaciones Bolivianas Baten Un Nuevo RéCord by
Exportaciones Bolivianas Baten Un Nuevo RéCordExportaciones Bolivianas Baten Un Nuevo RéCord
Exportaciones Bolivianas Baten Un Nuevo RéCordbcaballeroc
344 views17 slides
carteles by
cartelescarteles
cartelesguest03cd6a
132 views40 slides

More Related Content

Viewers also liked

Menús Digitales Inalambricos by
Menús Digitales InalambricosMenús Digitales Inalambricos
Menús Digitales Inalambricosmuestraempresarial2
156 views10 slides
Time Line by
Time LineTime Line
Time LineChelseaRose
376 views16 slides
Invdivertidos5 by
Invdivertidos5Invdivertidos5
Invdivertidos5Jose Flores Fabara
366 views10 slides
GRUPOE_APLICINFO_09 by
GRUPOE_APLICINFO_09GRUPOE_APLICINFO_09
GRUPOE_APLICINFO_09edmudvayne
339 views20 slides
Grupo Investigador de Problemas en Enfermedades Infecciosas by
Grupo Investigador de Problemas en Enfermedades InfecciosasGrupo Investigador de Problemas en Enfermedades Infecciosas
Grupo Investigador de Problemas en Enfermedades Infecciosasfegave
1.2K views49 slides
Ingeniería en Sistemas by
Ingeniería en SistemasIngeniería en Sistemas
Ingeniería en SistemasMauro Parra-Miranda
334 views11 slides

More from Mauro Parra-Miranda

Configuraciones inseguras by
Configuraciones insegurasConfiguraciones inseguras
Configuraciones insegurasMauro Parra-Miranda
55 views10 slides
Cloudevel - Microsoft Azure - 101 by
Cloudevel - Microsoft Azure - 101Cloudevel - Microsoft Azure - 101
Cloudevel - Microsoft Azure - 101Mauro Parra-Miranda
38 views46 slides
¿Cómo crear un dream team de ciberseguridad? by
¿Cómo crear un dream team de ciberseguridad?¿Cómo crear un dream team de ciberseguridad?
¿Cómo crear un dream team de ciberseguridad?Mauro Parra-Miranda
121 views14 slides
Startuplie - un ejercicio de sinceridad en español by
Startuplie - un ejercicio de sinceridad en españolStartuplie - un ejercicio de sinceridad en español
Startuplie - un ejercicio de sinceridad en españolMauro Parra-Miranda
69 views28 slides
Usando azure para escalar tu producto by
Usando azure para escalar tu productoUsando azure para escalar tu producto
Usando azure para escalar tu productoMauro Parra-Miranda
77 views21 slides
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk by
AWS Summit Mexico City 2018 - Usando Elastic BeanstalkAWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic BeanstalkMauro Parra-Miranda
173 views13 slides

More from Mauro Parra-Miranda(20)

Startuplie - un ejercicio de sinceridad en español by Mauro Parra-Miranda
Startuplie - un ejercicio de sinceridad en españolStartuplie - un ejercicio de sinceridad en español
Startuplie - un ejercicio de sinceridad en español
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk by Mauro Parra-Miranda
AWS Summit Mexico City 2018 - Usando Elastic BeanstalkAWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk
Cómo crear un dream team técnico - CPMX4 - 2013 by Mauro Parra-Miranda
Cómo crear un dream team técnico - CPMX4 - 2013Cómo crear un dream team técnico - CPMX4 - 2013
Cómo crear un dream team técnico - CPMX4 - 2013
Desarrollando Apps móviles con Titanium Studio by Mauro Parra-Miranda
Desarrollando Apps móviles con Titanium StudioDesarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium Studio
Mauro Parra-Miranda1.9K views
Desarrollando Apps móviles con Titanium Studio by Mauro Parra-Miranda
Desarrollando Apps móviles con Titanium StudioDesarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium Studio
Mauro Parra-Miranda2.9K views

Recently uploaded

TALLER DE ANÁLISIS DE ARTEFACTOS_.docx by
TALLER DE ANÁLISIS DE ARTEFACTOS_.docxTALLER DE ANÁLISIS DE ARTEFACTOS_.docx
TALLER DE ANÁLISIS DE ARTEFACTOS_.docxDilanTabares
6 views10 slides
actividadanlisisdeartefactos1-230424222159-fef7d8f3 (1).docx by
actividadanlisisdeartefactos1-230424222159-fef7d8f3 (1).docxactividadanlisisdeartefactos1-230424222159-fef7d8f3 (1).docx
actividadanlisisdeartefactos1-230424222159-fef7d8f3 (1).docxMaraJos722801
5 views6 slides
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ... by
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Francisco Javier Toscano Lopez
51 views29 slides
PRESENTACIÓN.pptx by
PRESENTACIÓN.pptxPRESENTACIÓN.pptx
PRESENTACIÓN.pptxsusanaasotoleiva
6 views1 slide
CÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptx by
CÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptxCÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptx
CÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptxdreadlockp5
8 views9 slides
MVelazco_Internet, Origenes y Evolucion.pptx by
MVelazco_Internet, Origenes  y Evolucion.pptxMVelazco_Internet, Origenes  y Evolucion.pptx
MVelazco_Internet, Origenes y Evolucion.pptxal223915
6 views39 slides

Recently uploaded(20)

TALLER DE ANÁLISIS DE ARTEFACTOS_.docx by DilanTabares
TALLER DE ANÁLISIS DE ARTEFACTOS_.docxTALLER DE ANÁLISIS DE ARTEFACTOS_.docx
TALLER DE ANÁLISIS DE ARTEFACTOS_.docx
DilanTabares6 views
actividadanlisisdeartefactos1-230424222159-fef7d8f3 (1).docx by MaraJos722801
actividadanlisisdeartefactos1-230424222159-fef7d8f3 (1).docxactividadanlisisdeartefactos1-230424222159-fef7d8f3 (1).docx
actividadanlisisdeartefactos1-230424222159-fef7d8f3 (1).docx
MaraJos7228015 views
CÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptx by dreadlockp5
CÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptxCÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptx
CÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptx
dreadlockp58 views
MVelazco_Internet, Origenes y Evolucion.pptx by al223915
MVelazco_Internet, Origenes  y Evolucion.pptxMVelazco_Internet, Origenes  y Evolucion.pptx
MVelazco_Internet, Origenes y Evolucion.pptx
al2239156 views
Tecnologías para la enseñanza virtual.pptx by exprosaavedra
Tecnologías para la enseñanza virtual.pptxTecnologías para la enseñanza virtual.pptx
Tecnologías para la enseñanza virtual.pptx
exprosaavedra14 views
fundamentos de electricidad electronica by Kevin619029
fundamentos de electricidad electronicafundamentos de electricidad electronica
fundamentos de electricidad electronica
Kevin6190295 views
Tecnologías para la enseñanza virtual by mpachecocodem
Tecnologías para la enseñanza virtual Tecnologías para la enseñanza virtual
Tecnologías para la enseñanza virtual
mpachecocodem9 views
Fundamentos de electricidad y electrónica.docx by DilanTabares
Fundamentos de electricidad y electrónica.docxFundamentos de electricidad y electrónica.docx
Fundamentos de electricidad y electrónica.docx
DilanTabares5 views
Tarea Curso Tecnologias para la enseñanza virtual.pptx by lesliealejandraContr
Tarea Curso Tecnologias para la enseñanza virtual.pptxTarea Curso Tecnologias para la enseñanza virtual.pptx
Tarea Curso Tecnologias para la enseñanza virtual.pptx
Tecnologías para la enseñanza virtual_cdc.pptx by CarmenerdelHuasco
Tecnologías para la enseñanza virtual_cdc.pptxTecnologías para la enseñanza virtual_cdc.pptx
Tecnologías para la enseñanza virtual_cdc.pptx
Fundamentos de Electricidad y Electronica 9-3 (1).docx by Samuel709479
Fundamentos de Electricidad y Electronica 9-3 (1).docxFundamentos de Electricidad y Electronica 9-3 (1).docx
Fundamentos de Electricidad y Electronica 9-3 (1).docx
Samuel7094795 views
Los principios de la Antropometria y Ergonomia.pdf by BenisBorges
Los principios de la Antropometria y Ergonomia.pdfLos principios de la Antropometria y Ergonomia.pdf
Los principios de la Antropometria y Ergonomia.pdf
BenisBorges6 views
Presentación: El impacto y peligro de la piratería de software by EmanuelMuoz11
Presentación: El impacto y peligro de la piratería de softwarePresentación: El impacto y peligro de la piratería de software
Presentación: El impacto y peligro de la piratería de software
EmanuelMuoz1117 views

Optimizando programas con algoritmos geneticos

  • 1. Optimizando programas con algoritmos Optimizando programas 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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