~ruther/ctu-fee-eoa

738df68495b38337d5bb4e1d9f5ffb9e9ecf4303 — Rutherther a month ago a880c1b
fix: tournament replacement strategy could be using wrong indices
1 files changed, 3 insertions(+), 8 deletions(-)

M codes/eoa_lib/src/replacement.rs
M codes/eoa_lib/src/replacement.rs => codes/eoa_lib/src/replacement.rs +3 -8
@@ 244,7 244,7 @@ impl TournamentReplacement {
    }
}

impl<TInput, TResult: Copy> Replacement<TInput, TResult> for TournamentReplacement {
impl<TInput, TResult: Copy + Debug> Replacement<TInput, TResult> for TournamentReplacement {
    fn replace(
        &mut self,
        parents: EvaluatedPopulation<TInput, TResult>,


@@ 261,13 261,8 @@ impl<TInput, TResult: Copy> Replacement<TInput, TResult> for TournamentReplaceme
        let selected = self.selection.select(count, &population, better_than)
            .collect::<Vec<_>>();

        let mut population = population.deconstruct();

        for (write_idx, read_idx) in selected.into_iter().enumerate() {
            population.swap(read_idx, write_idx);
        }

        population.truncate(count);
        let population = population.deconstruct();
        let population = extract_by_indices(population, selected);

        EvaluatedPopulation::from_vec(population)
    }