R6 implementation of the Artificial Immune Network algorithm. This is the core bHIVE algorithm using C++ backends for performance-critical operations. Supports composable modules for somatic hypermutation, idiotypic network regulation, germinal center selection, and more.
Super class
bHIVE::ImmuneAlgorithm -> AINet
Methods
Method new()
Create a new AINet algorithm instance.
Usage
AINet$new(
nAntibodies = 20,
beta = 5,
epsilon = 0.01,
maxIter = 50,
k = 3,
affinityFunc = "gaussian",
distFunc = "euclidean",
affinityParams = list(alpha = 1, c = 1, p = 2, Sigma = NULL),
mutationDecay = 1,
mutationMin = 0.01,
maxClones = Inf,
stopTolerance = 0,
noImprovementLimit = Inf,
initMethod = "sample",
shm = NULL,
init = NULL,
activation = NULL,
idiotypic = NULL,
germinalCenter = NULL,
microenvironment = NULL,
memory = NULL,
verbose = TRUE
)Arguments
nAntibodiesInteger. Initial antibody population size.
betaNumeric. Clone multiplier.
epsilonNumeric. Suppression distance threshold.
maxIterInteger. Maximum iterations.
kInteger. Top-k antibodies to clone per data point.
affinityFuncCharacter. Affinity function name.
distFuncCharacter. Distance function name.
affinityParamsList. Parameters for affinity/distance functions.
mutationDecayNumeric. Per-iteration mutation rate decay.
mutationMinNumeric. Minimum mutation rate.
maxClonesNumeric. Maximum clones per antibody.
stopToleranceNumeric. Early stopping tolerance.
noImprovementLimitInteger. Early stopping patience.
initMethodCharacter. Initialization method.
shmAn SHMEngine instance or NULL for default uniform mutation.
initA VDJLibrary instance or NULL for default initialization.
activationAn ActivationGate instance or NULL.
idiotypicAn IdiotypicNetwork instance or NULL.
germinalCenterA GerminalCenter instance or NULL.
microenvironmentA Microenvironment instance or NULL.
memoryA MemoryPool instance or NULL.
verboseLogical. Print progress.
Method fit()
Fit the AINet algorithm to data.
Examples
# Clustering with Iris data
data(iris)
X <- as.matrix(iris[, 1:4])
model <- AINet$new(nAntibodies = 15, maxIter = 10, verbose = FALSE)
model$fit(X, task = "clustering")
table(model$result$assignments)
#>
#> 1 2 3 4 5 6 7 8 9 10 11 12 13 14
#> 14 12 22 7 14 8 12 4 14 11 11 14 1 6
# Classification
model2 <- AINet$new(nAntibodies = 20, maxIter = 10, verbose = FALSE)
model2$fit(X, iris$Species, task = "classification")
mean(model2$result$assignments == as.character(iris$Species))
#> [1] 0.8933333
# Predict on new data
preds <- model2$predict(X[1:10, ])
