private void algoritmo(){
       Cromosoma mejor;
       int max = 1;
       for(int i = 0; i < individuos; ++i){
          poblacion[i] = new Cromosoma();
          poblacion[i].generarCodificacion();
       }
       calcularAptitud();
       ordenar();
       mejor = mejor();
       ++ciclo;
       while(ciclo <= 200 && aptitud[individuos-1] != 2*dimension+16){
          max = 1;
          // seleccion de padres y cruce
          Cromosoma[] hijos = new Cromosoma[50];
          for(int i = 0; i < 50; ++i){
             for(int j = 0; j < individuos; ++j){
                // seleccion de padres
                padres[j] = aptitud[j]*(j+1);
                max += aptitud[j]*(j+1);
                progenitor[j] = true;
             }
             hijos[i] = new Cromosoma();
             hijos[i].cruce(seleccionarPadres(max),seleccionarPadres(max));
             //mutacion
             hijos[i].mutacion();
          }
          //sustitucion de individuos
          sustitucion(hijos);
          calcularAptitud();
          ordenar();
          mejor = mejor();
          ++ciclo;
       }
       empezar = true;
    }