Somatic Hypermutation Engine implementing five biologically- inspired mutation strategies for the bHIVE artificial immune system.
Details
The five strategies are:
- uniform
Classic random Gaussian noise. Mutation rate = (1-affinity) * decay^(iter-1). This is the original bHIVE behavior.
- airs
AIRS-style affinity-proportional mutation. Rate = c * exp(-affinity / T). From Watkins & Timmis (AIRS2), achieving 50% better data reduction than uniform.
- hotspot
Feature-importance-weighted mutation. Features with higher gradient magnitude mutate more, analogous to AID targeting WRCY motifs in real SHM.
- energy
Energy-budget-constrained mutation. Total mutation magnitude bounded by E = E_0 * (1-affinity)^2, inspired by Kleinstein's E_SHM ~ N_Mut^2 model.
- adaptive
Per-feature adaptive mutation rate with moment tracking, directly implementing SHM as the Adam optimizer.
Public fields
methodCharacter. One of "uniform", "airs", "hotspot", "energy", "adaptive".
paramsNamed list of method-specific parameters.
m1_stateFirst moment state matrix (for adaptive method).
m2_stateSecond moment state matrix (for adaptive method).
Methods
Method new()
Create a new SHMEngine.
Usage
SHMEngine$new(
method = "uniform",
decay = 1,
mutationMin = 0.01,
c_rate = 1,
temperature = 0.5,
E_0 = 1,
base_rate = 0.1,
beta1 = 0.9,
beta2 = 0.999,
adam_epsilon = 1e-08
)Arguments
methodCharacter. Mutation strategy.
decayNumeric. Per-iteration mutation rate decay (uniform method).
mutationMinNumeric. Minimum mutation rate floor.
c_rateNumeric. Scaling constant (airs method).
temperatureNumeric. Temperature parameter (airs method).
E_0Numeric. Energy budget base (energy method).
base_rateNumeric. Base mutation rate (hotspot, adaptive methods).
beta1Numeric. First moment decay (adaptive method, like Adam).
beta2Numeric. Second moment decay (adaptive method, like Adam).
adam_epsilonNumeric. Numerical stability (adaptive method).
Examples
# Create different SHM engines
shm_uniform <- SHMEngine$new(method = "uniform")
shm_adaptive <- SHMEngine$new(method = "adaptive", base_rate = 0.1)
shm_airs <- SHMEngine$new(method = "airs", temperature = 0.3)
print(shm_adaptive)
#> <SHMEngine> method='adaptive'
#> base_rate: 0.1
#> beta1: 0.9
#> beta2: 0.999
