void CHC()
    {
        t = 0;
        d = (double)L/4;
        //initalize P(t);
        rnd = new Random();
        parent = new Poblacion(M, L, rnd);
        compMin = this.getMinComparator();
        compMax = this.getMaxComparator();
        //evaluate structures in P(t); --on the go
        while(t<N) { //while termination condition not satisfied
            t = t + 1;
            candidate = select_r(parent);
            child = recombine(candidate);
            //evaluate structures in C'(t)
            //select_s P(t) from C'(t) and P(t-1)
            if(actual.equals(parent)) {
                d = d - 1;
                if(d<0) {
                    //diverge P(t)
                    d = r*(1-r)*L;
                }
            }
        }
    }