private void reproduccion() {
        int sel_cruce[] = new int[tam_pob];
        int num_sel_cruce=0;
        float prob;
        int punto_cruce;
        TIndividuo hijo1 ;
        TIndividuo hijo2 ;
        int i;
        for (i = 0; i<tam_pob; i++) {
            prob=rnd.nextFloat();
            if (prob < prob_cruce) {
                sel_cruce[num_sel_cruce] = i;
                num_sel_cruce++;
            }
        }
        
        if ((num_sel_cruce % 2) == 1)
            num_sel_cruce--;
        punto_cruce=rnd.nextInt(lcrom);
        for (i = 0; i<num_sel_cruce; i++) {
            hijo1 = new TIndividuo(Pob[sel_cruce[i]], Pob[sel_cruce[i+1]], lcrom, precision, punto_cruce);
            hijo2 = new TIndividuo(Pob[sel_cruce[i+1]], Pob[sel_cruce[i]], lcrom, precision, punto_cruce);
            log.writeReproducciones(Pob[sel_cruce[i]], Pob[sel_cruce[i+1]], hijo1, hijo2, punto_cruce);
            Pob[sel_cruce[i]] = hijo1;
            Pob[sel_cruce[i+1]] = hijo2;
        }
        log.writeReproduccionesEnd();
    }