EDAs are implemented using S4 classes with generic functions for its main
parts: seeding (edaSeed
), selection (edaSelect
),
learning (edaLearn
), sampling (edaSample
), replacement
(edaReplace
), local optimization (edaOptimize
),
termination (edaTerminate
), and reporting
(edaReport
). The following pseudocode illustrates the interactions
between all the generic functions. It is a simplified version of the
implementation of the edaRun
function.
gen <- 0
fEvals <- 0
terminate <- FALSEwhile (!terminate) {
gen <- gen + 1
if (gen == 1) {
model <- NULL
pop <- edaSeed(lower, upper)
# Set popEval to the evaluation of each solution in pop.
# Update fEvals.
r <- edaOptimize(gen, pop, popEval, f, lower, upper)
pop <- r$pop; popEval <- r$popEval
} else {
s <- edaSelect(gen, pop, popEval)
selectedPop <- pop[s, ]; selectedEval <- popEval[s]
model <- edaLearn(gen, model, selectedPop, selectedEval,
lower, upper)
sampledPop <- edaSample(gen, model, lower, upper)
# Set sampledEval to the evaluation of each solution
# in sampledPop. Update fEvals.
r <- edaOptimize(gen, sampledPop, sampledEval, f, lower, upper)
sampledPop <- r$pop; sampledEval <- r$popEval
r <- edaReplace(gen, pop, popEval, sampledPop, sampledEval)
pop <- r$pop; popEval <- r$popEval
}
edaReport(gen, fEvals, model, pop, popEval)
terminate <- edaTerminate(gen, fEvals, pop, popEval)
}