'store two fitness lists, `fit` and ``fitre`` reevaluating some
solutions in `X`.
``self.evaluations`` evaluations are done for each reevaluated
fitness value.
See `__call__()`, where `reeval()` is called.'

def reeval(self, X, fit, func, ask, args=()):

    self.fit = list(fit)
    self.fitre = list(fit)
    self.idx = self.indices(fit)
    if (not len(self.idx)):
        return self.idx
    evals = (int(self.evaluations) if self.f_aggregate else 1)
    fagg = (np.median if (self.f_aggregate is None) else self.f_aggregate)
    for i in self.idx:
        if self.epsilon:
            if self.parallel:
                self.fitre[i] = fagg(func(ask(evals, X[i], self.epsilon), *args))
            else:
                self.fitre[i] = fagg([func(ask(1, X[i], self.epsilon)[0], *args) for _k in xrange(evals)])
        else:
            self.fitre[i] = fagg([func(X[i], *args) for _k in xrange(evals)])
    self.evaluations_just_done = (evals * len(self.idx))
    return (self.fit, self.fitre, self.idx)
