fix: put Rng to Box instead of generics
feat: add test for local search with PatternPerturbation
feat: add PatternPerturbation
Move by +/- d in random single coordinate.
feat: add uniform constructor for RandomDistributionPerturbation
feat: remove min, max from bounded perturbation
tests: add test for Linear fitness function
feat: add BoundedPerturbation
applies bounds on real numbers when performing the perturbation.
feat: add RandomDistributionPerturbation
For vectors of reals, perturb by a random distribution with
expectation in 0.
feat: add real fitness functions
Add linear, step, rastrigin, griewank and schwefel fitness functions
along with the tests for them.
Try using static vector where appropriate, but use OVector for those
where filling with zeros won't work. This is mostly a constrain for
the tests... rather than a real constrain. In the end the dimensions
will be given for each problem.
refactor: extend local search to accept any inputs
Instead of accepting only BinaryString, accept anything.
Extend the operators to accept anything.
tests: move all tests to separate submodules
tests: add rosenbrock test
feat: add MaximizingOperator
chore: guard test imports by #[cfg(test)]
chore: split types and functions to separate module files
tests: let EqualTerminatingCondition remember matches to return even if no longer equal
tests: For local search test, wait 100 cycles after optimum found
feat: add AndTerminatingConditions that ands multiple conditions
chore: rename NoMatchForTerminatingCondition to NoBetterForTerminatingCondition