Mutation operators add random variation to genomes.
use fugue_evo::operators::mutation::{
PolynomialMutation, GaussianMutation, BitFlipMutation
};For real-valued genomes. Bounded perturbations.
let mutation = PolynomialMutation::new(eta);
let mutation = PolynomialMutation::new(eta).with_probability(0.1);| Parameter | Type | Range | Description |
|---|---|---|---|
eta |
f64 |
1-100+ | Distribution index |
probability |
f64 |
0-1 | Per-gene mutation probability |
Distribution index effects:
- Low eta (1-5): Large mutations
- Medium eta (15-25): Balanced
- High eta (50+): Small mutations
Default probability: 1/n (one gene on average)
Adds Gaussian noise to genes.
let mutation = GaussianMutation::new(sigma);
let mutation = GaussianMutation::new(sigma).with_probability(0.1);| Parameter | Type | Description |
|---|---|---|
sigma |
f64 |
Standard deviation of noise |
probability |
f64 |
Per-gene mutation probability |
Note: May violate bounds. Use with BoundedMutationOperator or clamp manually.
For binary genomes. Flips each bit with probability.
let mutation = BitFlipMutation::new(probability);| Parameter | Type | Description |
|---|---|---|
probability |
f64 |
Per-bit flip probability |
Typical values: 0.01-0.05 (1-5% per bit)
For permutations. Swaps two random positions.
let mutation = SwapMutation::new(probability);For permutations. Reverses a random segment.
let mutation = InversionMutation::new(probability);Before: [1, 2, 3, 4, 5, 6]
↓ reverse [2,5]
After: [1, 5, 4, 3, 2, 6]
For permutations. Moves element to new position.
let mutation = InsertionMutation::new(probability);| Genome | Operator | Typical Probability |
|---|---|---|
| RealVector | Polynomial | 1/n or 0.1 |
| RealVector | Gaussian | 1/n or 0.1 |
| BitString | BitFlip | 0.01-0.05 |
| Permutation | Swap | 0.1-0.3 |
| Permutation | Inversion | 0.1-0.3 |
SimpleGABuilder::<RealVector, f64, _, _, _, _, _>::new()
.mutation(PolynomialMutation::new(20.0).with_probability(0.1))
// ...For mutations respecting bounds:
// Polynomial automatically respects bounds when used with SimpleGA
// Manual bounded mutation
mutation.mutate_bounded(&mut genome, &bounds, &mut rng);- Custom Operators
- Hyperparameter Learning - Learn mutation rates