feat(operators): expand permutation toolkit

Adds eight operators for permutation (Vec<usize>) decisions:

Initializers
- ShuffledPermutation { n } — random shuffles of [0..n)
- ShuffledMultisetPermutation { repeats_per_id } — random shuffles
  of an arbitrary multiset (e.g., JSS operation strings)

Crossovers (strict permutations only)
- OrderCrossover (OX)
- PartiallyMappedCrossover (PMX)
- CycleCrossover (CX)
- EdgeRecombinationCrossover (ERX)

Mutations (preserve both strict permutations and multisets)
- InversionMutation
- InsertionMutation
- ScrambleMutation

All are re-exported from the prelude. Comprehensive unit tests + doctests
included; the pre-existing SwapMutation is untouched.
This commit is contained in:
2026-05-13 19:33:29 -06:00
parent 31e3757ad0
commit 1d1187f20b
2 changed files with 897 additions and 7 deletions
+5 -3
View File
@@ -19,9 +19,11 @@ pub use crate::pareto::{
};
pub use crate::operators::{
BitFlipMutation, BoundedGaussianMutation, ClampToBounds, CompositeVariation, GaussianMutation,
LevyMutation, PolynomialMutation, ProjectToSimplex, RealBounds, SimulatedBinaryCrossover,
SwapMutation,
BitFlipMutation, BoundedGaussianMutation, ClampToBounds, CompositeVariation, CycleCrossover,
EdgeRecombinationCrossover, GaussianMutation, InsertionMutation, InversionMutation,
LevyMutation, OrderCrossover, PartiallyMappedCrossover, PolynomialMutation, ProjectToSimplex,
RealBounds, ScrambleMutation, ShuffledMultisetPermutation, ShuffledPermutation,
SimulatedBinaryCrossover, SwapMutation,
};
pub use crate::algorithms::{