'Evaluate a given *individual* with the current benchmark
configuration.
:param indidivudal: The individual to evaluate.
:param count: Wether or not to count this evaluation in
the total evaluation count. (Defaults to
:data:`True`)'

def __call__(self, individual, count=True):

    possible_values = []
    for (func, pos, height, width) in zip(self.peaks_function, self.peaks_position, self.peaks_height, self.peaks_width):
        possible_values.append(func(individual, pos, height, width))
    if self.basis_function:
        possible_values.append(self.basis_function(individual))
    fitness = max(possible_values)
    if count:
        self.nevals += 1
        if (self._optimum is None):
            self._optimum = self.globalMaximum()[0]
            self._error = abs((fitness - self._optimum))
        self._error = min(self._error, abs((fitness - self._optimum)))
        self._offline_error += self._error
        if ((self.period > 0) and ((self.nevals % self.period) == 0)):
            self.changePeaks()
    return (fitness,)
