Code Duplication    Length = 19-22 lines in 2 locations

src/gradient_free_optimizers/optimizers/pop_opt/genetic_algorithm.py 1 location

@@ 83-104 (lines=22) @@
80
        self.p_current = self.individuals[nth_pop]
81
        return self.p_current.init_pos()
82
83
    @EvolutionaryAlgorithmOptimizer.track_new_pos
84
    def iterate(self):
85
        n_ind = len(self.individuals)
86
87
        if n_ind == 1:
88
            self.p_current = self.individuals[0]
89
            return self.p_current.iterate()
90
91
        self.sort_pop_best_score()
92
        rnd_int = random.randint(0, len(self.pop_sorted) - 1)
93
        self.p_current = self.pop_sorted[rnd_int]
94
95
        total_rate = self.mutation_rate + self.crossover_rate
96
        rand = np.random.uniform(low=0, high=total_rate)
97
98
        if rand <= self.mutation_rate:
99
            return self.p_current.iterate()
100
        else:
101
            if not self.offspring_l:
102
                self._crossover()
103
            self.p_current.pos_new = self.offspring_l.pop(0)
104
            return self.p_current.pos_new
105
106
    @EvolutionaryAlgorithmOptimizer.track_new_score
107
    def evaluate(self, score_new):

src/gradient_free_optimizers/optimizers/pop_opt/evolution_strategy.py 1 location

@@ 77-95 (lines=19) @@
74
        self.p_current = self.individuals[nth_pop]
75
        return self.p_current.init_pos()
76
77
    @EvolutionaryAlgorithmOptimizer.track_new_pos
78
    def iterate(self):
79
        self.n_ind = len(self.individuals)
80
81
        if self.n_ind == 1:
82
            self.p_current = self.individuals[0]
83
            return self.p_current.iterate()
84
85
        self.sort_pop_best_score()
86
        self.rnd_int = random.randint(0, len(self.pop_sorted) - 1)
87
        self.p_current = self.pop_sorted[self.rnd_int]
88
89
        total_rate = self.mutation_rate + self.crossover_rate
90
        rand = np.random.uniform(low=0, high=total_rate)
91
92
        if rand <= self.mutation_rate:
93
            return self.p_current.iterate()
94
        else:
95
            return self._cross()
96
97
    @EvolutionaryAlgorithmOptimizer.track_new_score
98
    def evaluate(self, score_new):