feat(tsp): add cycle, no and partially mapped crossovers
refactor(tsp): split to multiple files out of tsp.rs
refactor(tsp): put plotting to main to not repeat code
feat(tsp): add ea binary algorithm
tests(tsp): adapt to new binarystring -> node permutation implementation
tests(tsp): add test for verify_solution
feat(tsp): add move node perturbation
fix(tsp): properly implement binary string -> node permutation fitness
feat(tsp): allow crossing bounds in reverse subsequence perturbation
Currently subsequence perturbation was capable only of changes
inside of bounds (left, right), but allow it going through
the right bound, ie. from element 8 to element 1 - swapping
8 with 1, 9 with 0, 10 with 10... this generalizes the perturbation.
Also, change the behavior to generate an index and a length instead
of two indices. This allows for constraining the length of
subsequences.
feat: add possibility to evolve strategy during evolution_algorithm
feat(tsp): Output csv statistics
chore: remove city ids from chart
feat(tsp): add BinaryString representation of TSP
tests(tsp): add tests for reverse subsequence
fix(tsp): reverse properly in reverse subsequence perturbatio
feat: add loading of optimal cost from solutions.txt
feat: add edge recombination crossover
chore: add instances to run the algorithm on
feat(tsp): add data loading