Commit Graph
2 Commits
Author SHA1 Message Date
swaits d8a7d33d9a chore: silence clippy nits in new SBX/PolyMut code
- PolynomialMutation::vary: `#[allow(clippy::needless_range_loop)]`
  on the per-dimension loop — body indexes both `self.bounds[j]` and
  `child[j]` so a range index is the cleanest option.
- Operator tests: replace `x >= lo && x <= hi` with
  `(lo..=hi).contains(&x)` per clippy's manual_range_contains lint.
2026-05-04 19:47:53 -06:00
swaits cc1b44b34e feat(operators): add CompositeVariation pipeline (crossover → mutation)
Generic two-stage Variation operator: runs an inner crossover-style
operator on the parents, then applies an inner mutation-style operator
to each resulting child. Lets users build the canonical NSGA-II
operator stack — `SimulatedBinaryCrossover` followed by
`PolynomialMutation` — by composing the existing primitives instead
of bundling a one-off SbxPolyMut struct.

Lives in src/operators/composite.rs to keep type-specific operator
files unchanged. Generic over decision type and over both inner
operators.
2026-05-04 19:44:58 -06:00