feat: split params out of PerturbationOperator to allow for non-'static PerturbationOperator This means PerturbationOperators can now hold non-'static references. Right away, utilize this in the Random2OptPerturbation for the TSPInstance.
feat: add a lot of algorithm showcases
feat(lib): add n consecutive bit flip perturbation for binary string
refactor: generalize apply_to_mutations
refactor(lib): allow modifying mutation perturbation
refactor(lib): add methods to get wrapped perturbations instead of traits. Remove WrapperPerturbation and ListWrapperPerturbation in favor of wrapped and wrapped_mut functions on PerturbationOperator. This allows for easier handling as it's not easy to downcast Any into WrapperPerturbation or ListWrapperPerturbation. So instead always return dyn PerturbationOperator instead of dyn Any. Use dyn Any only for downstasting to concrete types. This finally allows for apply_to_mutations to be implemented under MutationPerturbation, allowing to modify the arguments.
feat: add utilities to perturbation to iterate through wrappers easily Make PerturbationOperator implement Any, allowing it to be downcasted. Make WrapperPerturbation for perturbations that wrap other perturbations, such as the mutation perturbation and bounded perturbation. Make ListWrapperPerturbation for pertrubations that wrap multiple pertrubations, such as the combined perturbation. This should allow for easily looking through perturbations, finding all perturbations of a specific type and modifying them. One use case can be for changing the probability of a mutation perturbation during evolution.
feat(binary_string): add single bit perturbation, flip perturbation
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.
refactor: do perturbation in place instead of cloning
feat: add mutation and combined perturbations
chore: move env to codes/eoa_lib
refactor: Add dimension generic to BinaryString
feat: add simple plotting of local search
feat: add evolutionary strategies to local search
fix: put Rng to Box instead of generics
feat: add PatternPerturbation Move by +/- d in random single coordinate.
feat: add uniform constructor for RandomDistributionPerturbation
feat: remove min, max from bounded perturbation
feat: add BoundedPerturbation applies bounds on real numbers when performing the perturbation.