Learn R Programming

copulaedas (version 1.2.1)

edaRun: Main Loop of an EDA

Description

Main loop of an EDA.

Usage

edaRun(eda, f, lower, upper)

Arguments

eda
EDA instance.
f
Objective function.
lower
Lower bounds of the variables of the objective function.
upper
Upper bounds of the variables of the objective function.

Value

  • An EDAResult instance.

Details

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 that implement the main parts of the EDA. It is a simplified version of the implementation of the edaRun function.

gen <- 0 fEvals <- 0 terminate <- FALSE

while (!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) }

References

Gonz�lez-Fern�ndez Y and Soto M (2012). copulaedas: An R Package for Estimation of Distribution Algorithms Based on Copulas. Preprint http://arxiv.org/abs/1209.5429{arXiv:1209.5429 [cs.NE]}.

See Also

EDA, EDAResult, edaIndepRuns.

Examples

Run this code
setMethod("edaReport", "EDA", edaReportSimple)
setMethod("edaTerminate", "EDA",
    edaTerminateCombined(edaTerminateMaxGen,
        edaTerminateEval))

DVEDA <- VEDA(vine = "DVine", copulas = c("normal"),
    indepTestSigLevel = 0.01, margin = "norm",
    popSize = 200, maxGens = 50, fEval = 0, 
    fEvalTol = 1e-03)
DVEDA@name <- "D-vine Estimation of Distribution Algorithm"

result <- edaRun(DVEDA, fSphere, rep(-600, 5), rep(600, 5))

show(result)

Run the code above in your browser using DataLab