Mutation sigma annealing #123

Closed
opened 2026-08-29 19:04:19 +02:00 by SirStone · 1 comment
Owner

What to build

Replace the constant mutation sigma with a decay schedule so that mutations are large early (exploration) and small late (exploitation).

Currently Sigma = 0.03 is constant for all generations. Over 100 generations, accumulated mutation variance approaches the initialization range, destabilizing late-game optimization.

Acceptance criteria

  • mutate uses sigma = initialSigma * exp(-generation / annealingHalfLife)
  • Default annealingHalfLife = 50 generations
  • Constant Sigma = 0.03 preserved as fallback for experimentation
  • Formula tested against known convergence behavior (e.g., sigma approaches ~0.004 at generation 100)
  • Existing when isMainModule self-check in ga.nim still passes

Blocked by

None - can start immediately

Parent

Closes part of #118

## What to build Replace the constant mutation sigma with a decay schedule so that mutations are large early (exploration) and small late (exploitation). Currently Sigma = 0.03 is constant for all generations. Over 100 generations, accumulated mutation variance approaches the initialization range, destabilizing late-game optimization. ## Acceptance criteria - mutate uses sigma = initialSigma * exp(-generation / annealingHalfLife) - Default annealingHalfLife = 50 generations - Constant Sigma = 0.03 preserved as fallback for experimentation - Formula tested against known convergence behavior (e.g., sigma approaches ~0.004 at generation 100) - Existing when isMainModule self-check in ga.nim still passes ## Blocked by None - can start immediately ## Parent Closes part of #118
SirStone added the ready-for-agent label 2026-08-29 19:05:49 +02:00
Author
Owner

Implemented in commit a730a9e

Summary: Replaced constant mutation sigma with decay schedule: sigma = initialSigma * exp(-generation / annealingHalfLife). Default annealingHalfLife=50 generations provides exploration early (large mutations) and exploitation late (small mutations).

Files:

  • vapourbot_garage/src/vapourbot/ga.nim - mutate() function sigma decay formula
Implemented in commit a730a9e **Summary:** Replaced constant mutation sigma with decay schedule: sigma = initialSigma * exp(-generation / annealingHalfLife). Default annealingHalfLife=50 generations provides exploration early (large mutations) and exploitation late (small mutations). **Files:** - `vapourbot_garage/src/vapourbot/ga.nim` - mutate() function sigma decay formula
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: SirStone/SirRoboGarage#123