| @@ 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): |
|
| @@ 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): |
|