Docs


Tuning the mutation rate

When to widen the mutation range and how to read a stalled fitness chart.

Last updated June 3, 2026

A common pattern: your single-objective run looks great for the first 20-ish generations, then the fitness chart flatlines for the rest of the run. The genetic algorithm has converged onto a local plateau and crossover alone is no longer producing better children. Mutation is the only operator that can break out โ€” and yours is probably too conservative.

Spotting the symptom

Open the result page and look at the Fitness evolution chart. You're looking for two shapes:

  • Healthy โ€” fitness rises steeply early, then climbs in smaller-and-smaller steps. New best fitnesses still appear in the second half.
  • Stalled โ€” fitness rises steeply early, then forms a perfectly flat top with no improvement for many generations.

If your chart is the second shape and the best-fitness is far from the target, mutation is suspect.

The two knobs

Two parameters live on every quick form and on the full submission form:

  • random_mutation_min_val and random_mutation_max_val set the range of the random delta added to a gene during mutation.
  • mutation_num_genes (or mutation_percent_genes) sets how many genes per individual are touched.

A safe widening recipe

  1. Start by reading the current values. On a quick-start form they default to -0.5 .. 0.5 for floating-point genes.
  2. Double the range โ€” -1.0 .. 1.0 โ€” and resubmit. Keep everything else identical.
  3. Look at the new fitness chart. If the plateau is gone and you can see a clear inflection upward halfway through the run, you found it.
  4. If the chart is now noisy (fitness oscillates wildly), you went too wide โ€” pull the range back by 25 %.

Open a side-by-side comparison of the two runs so you can show the delta to a teammate.

Why not just maximise mutation?

Mutation too high is just random search. You lose the evolutionary part of the algorithm because no good parent can survive across generations intact. The sweet spot is just wide enough to escape plateaus, not wide enough to drown signal.

Thanks for the feedback!