fix: constraint for ArithmeticCrossover
feat: Add BlendCrossover for reals
feat: add ArithmeticCrossover for reals
fix: make sure both parents are used for ovector one point
feat: add convenient function for stochastic ranking evaluation
refactor: add possibility to use different logic for obtaining best candidate
fix(eoa_lib): extract random distribution parameter out of perturbation
feat: add multi objective; NSGA
feat: add stochastic ranking
feat: add equal to BetterThan operator
feat: add multiple weights to constrained functions
feat: add number of constraints as a generic
feat: add possibility to map EvolutionResult evaluations
chore: remove Copy from requirement of TournamentSelection
refactor(tsp): Do not allocate in binary string fitness function
Currently the fit function has allocated for each individual!
That slows it down terribly!
This reimplements it to implement the fit_population, reusing
the same node permutation and same precedence_count
refactor(lib): Allow fitting whole population at once
The fitness function gets fit_population function. The default
implementation is going over fit() one by one, but it can be
reimplemented by specific types.
feat(lib): constraints along with evolutionary strategies
feat(lib): allow modifying fitness function in evolution_algorithm
chore: move population structs to separate module