refactor: pass rng as argument
Instead of having the Rng stored
inside the structs, pass it through
the functions. This means it's no longer
necessary to pass perturbations etc. as mutable.
tests: add simple test for evolution on one_max
refactor: do perturbation in place instead of cloning
fix: tournament selection in case last wins returned wrong index
fix: tournament replacement strategy could be using wrong indices
feat: add best replacement
fix: return proper indices from tournament
feat: add mutation and combined perturbations
chore: make library out of eoa_lib
chore: move env to codes/eoa_lib
chore: remove unused rand::rng
refactor: use evaluated population in selection
feat: add evolution algorithm
feat: add pairing of parents
feat: Add replacement strategy
chore: update explanation comment
feat: add tournament selection