Spec: Multi-gun EvoBot — three guns, one selector, global-only weights #107
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
part-of: #99
Problem Statement
Evo_Bot currently has a single TOPO_Gun (fixed-topology ANN evolved by mutation-only GA) with per-enemy weight persistence. This approach doesn't generalize across opponents and offers no diversity of aiming strategies. The bot needs multiple competing gun systems with a real-time selector that converges on the best performer, using global-only weights.
Solution
Equip EvoBot with three guns — GF_Gun (guess-factor histogram), GA_Gun (mutation-only GA, current TOPO_Gun renamed), and CMA_Gun (full CMA-ES optimizer) — behind a virtual guns selector that uses angle-delta tracking to pick the best performer after a trust threshold of 10 observations. Strip per-enemy persistence entirely; one global weights file per learning gun. GF_Gun fires from tick 1 as default; after 10 angle-delta observations, the selector picks the best-scoring gun.
User Stories
global_ga.weightsand oneglobal_cma.weights— so that learned weights generalize across opponents.Implementation Decisions
cmaes.nim): standalone optimizer, does not replacega.nim— both coexist. Auto-sized λ based on dimensionality.HiddenDimas compile-time const.global_ga.weights, oneglobal_cma.weights. Per-enemy files and load-order fallback removed entirely.Testing Decisions
*_garage/tests/directories).Out of Scope
Further Notes