slickEcr | R Documentation |
Mostly ecr::ecr
, with some simplifications and extensions.
slickEcr
does mostly what ecr::ecr
does, with different default values at places.
Note that fitness.fun
must be a "smoof
" function.
initEcr
only evaluates fitness for the initial population and does not perform any
mutation or selection.
continueEcr
continues a run for another number of generations
. Only ecr.object
(a result from a previous initEcr
, slickEcr
, or continueEcr
call) and
generations
must be given, the other arguments are optional. If they were set
in a previous slickEcr
or continueEcr
call, the values from the
previous run are used. Otherwise it is possible to supply any combination of these values
to set them to new values.
Note, for fidelity
, that the generation continues counting from previous runs,
so if initEcr
was ran for 5 generations and continueEcr
is called with
a fidelity
with first column values c(1, 8)
, then the fidelity given in the
first row is applied for 2 generations, after which the fidelity given in the
second row applies.
slickEcr( fitness.fun, lambda, population, mutator, recombinator, generations = 100, parent.selector = selSimple, survival.selector = selNondom, p.recomb = 0.7, p.mut = 0.3, survival.strategy = "plus", n.elite = 0, fidelity = NULL, unbiased.fidelity = TRUE, log.stats = NULL, log.stats.newinds = c(list(runtime = list("mean", "sum")), if (!is.null(fidelity)) list(fidelity = list("sum"))) ) initEcr( fitness.fun, population, fidelity = NULL, log.stats = NULL, log.stats.newinds = c(list(runtime = list("mean", "sum")), if (!is.null(fidelity)) list(fidelity = list("sum"))), unbiased.fidelity = TRUE ) continueEcr( ecr.object, generations, lambda = NULL, mutator = NULL, recombinator = NULL, parent.selector = NULL, survival.selector = NULL, p.recomb = NULL, p.mut = NULL, survival.strategy = NULL, n.elite = NULL, fidelity = NULL, unbiased.fidelity = NULL )
fitness.fun |
|
lambda |
|
population |
|
mutator |
|
recombinator |
|
generations |
|
parent.selector |
|
survival.selector |
|
p.recomb |
|
p.mut |
|
survival.strategy |
|
n.elite |
|
fidelity |
|
unbiased.fidelity |
|
log.stats |
|
log.stats.newinds |
|
ecr.object |
|
[MosmafsResult]
the terminated optimization state.
library("mlr") library("magrittr") library("mlrCPO") # Define tasks task.whole <- create.hypersphere.data(3, 2000) %>% create.classif.task(id = "sphere") %>% task.add.permuted.cols(10) rows.whole <- sample(2000) task <- subsetTask(task.whole, rows.whole[1:500]) task.hout <- subsetTask(task.whole, rows.whole[501:2000]) # Create learner lrn <- makeLearner("classif.rpart", maxsurrogate = 0) # Create parameter set to optimize over ps <- pSS( maxdepth: integer[1, 30], minsplit: integer[2, 30], cp: numeric[0.001, 0.999]) # Create fitness function fitness.fun <- makeObjective(lrn, task, ps, cv5, holdout.data = task.hout) # Receive parameter set from fitness function ps.objective <- getParamSet(fitness.fun) # Define mutators and recombinators mutator <- combine.operators(ps.objective, numeric = ecr::setup(mutGauss, sdev = 0.1), integer = ecr::setup(mutGaussInt, sdev = 3), selector.selection = mutBitflipCHW) crossover <- combine.operators(ps.objective, numeric = recPCrossover, integer = recPCrossover, selector.selection = recPCrossover) # Initialize population and evaluate it initials <- sampleValues(ps.objective, 32, discrete.names = TRUE) run.init <- initEcr(fitness.fun = fitness.fun, population = initials) # Run NSGA-II for 5 generations with run.init as input run.gen <- continueEcr(run.init, generations = 5, lambda = 5, mutator = mutator, recombinator = crossover, parent.selector = selSimple, survival.selector = selNondom, p.recomb = 0.7, p.mut = 0.3, survival.strategy = "plus") # Or instead of initEcr and continueEcr use the shortcut function slickEcr run.simple <- slickEcr( fitness.fun = fitness.fun, lambda = 5, population = initials, mutator = mutator, recombinator = crossover, generations = 5) print(run.simple)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.