def select_one(self, population: Population) -> Individual: """Return single individual from population. Parameters ---------- population A Population of Individuals. Returns ------- Individual The selected Individual. """ candidates = self._preselection(population) cases = np.arange(len(population[0].error_vector)) shuffle(cases) if isinstance(self.epsilon, np.ndarray): ep = np.apply_along_axis(median_absolute_deviation, 0, population.all_error_vectors()) elif isinstance(self.epsilon, (float, int, np.int64, np.float64)): ep = self.epsilon while len(cases) > 0 and len(candidates) > 1: case = cases[0] errors_this_case = [i._error_vector[case] for i in candidates]
def _select_with_stream(self, population: Population, cases: CaseStream) -> Individual: candidates = one_individual_per_error_vector(population) ep = self.epsilon if isinstance(ep, bool) and ep: ep = self._epsilon_from_mad(population.all_error_vectors()) for case in cases: if len(candidates) <= 1: break errors_this_case = [i.error_vector[case] for i in candidates] best_val_for_case = min(errors_this_case)