SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
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

Más contenido relacionado

Destacado (19)

Menús Digitales Inalambricos
Menús Digitales InalambricosMenús Digitales Inalambricos
Menús Digitales Inalambricos
 
Time Line
Time LineTime Line
Time Line
 
Invdivertidos5
Invdivertidos5Invdivertidos5
Invdivertidos5
 
GRUPOE_APLICINFO_09
GRUPOE_APLICINFO_09GRUPOE_APLICINFO_09
GRUPOE_APLICINFO_09
 
Grupo Investigador de Problemas en Enfermedades Infecciosas
Grupo Investigador de Problemas en Enfermedades InfecciosasGrupo Investigador de Problemas en Enfermedades Infecciosas
Grupo Investigador de Problemas en Enfermedades Infecciosas
 
Ingeniería en Sistemas
Ingeniería en SistemasIngeniería en Sistemas
Ingeniería en Sistemas
 
Redes Neuronales
Redes NeuronalesRedes Neuronales
Redes Neuronales
 
Publicidad On-Line
Publicidad On-LinePublicidad On-Line
Publicidad On-Line
 
Raviraj_Shinde
Raviraj_ShindeRaviraj_Shinde
Raviraj_Shinde
 
33808
3380833808
33808
 
PresentacióN1
PresentacióN1PresentacióN1
PresentacióN1
 
GRUPOF_APLICINFO_06
GRUPOF_APLICINFO_06GRUPOF_APLICINFO_06
GRUPOF_APLICINFO_06
 
Improperios
ImproperiosImproperios
Improperios
 
Metas Con Altura
Metas Con AlturaMetas Con Altura
Metas Con Altura
 
Hojas De Vida
Hojas De VidaHojas De Vida
Hojas De Vida
 
33805
3380533805
33805
 
33775
3377533775
33775
 
35644
3564435644
35644
 
Consejo facultad FCI 20 oct 2011
Consejo facultad FCI 20 oct 2011Consejo facultad FCI 20 oct 2011
Consejo facultad FCI 20 oct 2011
 

Más de Mauro Parra-Miranda

Cloudevel - Microsoft Azure - 101
Cloudevel - Microsoft Azure - 101Cloudevel - Microsoft Azure - 101
Cloudevel - Microsoft Azure - 101Mauro Parra-Miranda
 
¿Cómo crear un dream team de ciberseguridad?
¿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
 
Startuplie - un ejercicio de sinceridad en español
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
 
Usando azure para escalar tu producto
Usando azure para escalar tu productoUsando azure para escalar tu producto
Usando azure para escalar tu productoMauro Parra-Miranda
 
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk
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
 
Del startup al negocio, the missing manual
Del startup al negocio, the missing manualDel startup al negocio, the missing manual
Del startup al negocio, the missing manualMauro Parra-Miranda
 
Cómo crear un dream team técnico - CPMX4 - 2013
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 - 2013Mauro Parra-Miranda
 
Programando Windows Phone con Phonegap
Programando Windows Phone con PhonegapProgramando Windows Phone con Phonegap
Programando Windows Phone con PhonegapMauro Parra-Miranda
 
Mercado de Móviles: Una visión global
Mercado de Móviles: Una visión globalMercado de Móviles: Una visión global
Mercado de Móviles: Una visión globalMauro Parra-Miranda
 
Desarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium StudioDesarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium StudioMauro Parra-Miranda
 
Desarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium StudioDesarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium StudioMauro Parra-Miranda
 

Más de Mauro Parra-Miranda (20)

Configuraciones inseguras
Configuraciones insegurasConfiguraciones inseguras
Configuraciones inseguras
 
Cloudevel - Microsoft Azure - 101
Cloudevel - Microsoft Azure - 101Cloudevel - Microsoft Azure - 101
Cloudevel - Microsoft Azure - 101
 
¿Cómo crear un dream team de ciberseguridad?
¿Cómo crear un dream team de ciberseguridad?¿Cómo crear un dream team de ciberseguridad?
¿Cómo crear un dream team de ciberseguridad?
 
Startuplie - un ejercicio de sinceridad en español
Startuplie - un ejercicio de sinceridad en españolStartuplie - un ejercicio de sinceridad en español
Startuplie - un ejercicio de sinceridad en español
 
Usando azure para escalar tu producto
Usando azure para escalar tu productoUsando azure para escalar tu producto
Usando azure para escalar tu producto
 
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic BeanstalkAWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk
 
Fractura Sismo
Fractura SismoFractura Sismo
Fractura Sismo
 
Del startup al negocio, the missing manual
Del startup al negocio, the missing manualDel startup al negocio, the missing manual
Del startup al negocio, the missing manual
 
AppHack GDL 2013
AppHack GDL 2013AppHack GDL 2013
AppHack GDL 2013
 
Cómo crear un dream team técnico - CPMX4 - 2013
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
 
NodeJS @ ACS
NodeJS @ ACSNodeJS @ ACS
NodeJS @ ACS
 
Alloy Preview
Alloy PreviewAlloy Preview
Alloy Preview
 
Programando Windows Phone con Phonegap
Programando Windows Phone con PhonegapProgramando Windows Phone con Phonegap
Programando Windows Phone con Phonegap
 
Mercado de Móviles: Una visión global
Mercado de Móviles: Una visión globalMercado de Móviles: Una visión global
Mercado de Móviles: Una visión global
 
Economía de las Apps
Economía de las AppsEconomía de las Apps
Economía de las Apps
 
Mobileads
MobileadsMobileads
Mobileads
 
Frameworks iOS
Frameworks iOSFrameworks iOS
Frameworks iOS
 
Desarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium StudioDesarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium Studio
 
Desarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium StudioDesarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium Studio
 
Moviles
MovilesMoviles
Moviles
 

Último

EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 

Último (11)

EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 

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