Description Usage Arguments Details Value Mutation Parameters Recombination parameters Selection parameters Stop criteria Problem description Random Seed Showpars Author(s) References Examples
Modular implementation of the Differential Evolution Algorithm for the experimental investigation of the effects of different operators on the performance of the algorithm.
1 2 3 4 |
popsize |
population size |
mutpars |
list of named mutation parameters.
See |
recpars |
list of named recombination parameters.
See |
selpars |
list of named selection parameters.
See |
stopcrit |
list of named stop criteria parameters.
See |
probpars |
list of named problem parameters.
See |
seed |
seed for the random number generator.
See |
showpars |
parameters that regulate the echoing of progress indicators
See |
This routine is used to launch a differential evolution algorithm for the minimization of a given problem instance using different variants of the recombination, mutation and selection operators. The input parameters that describe those operators receive list objects describing the operator variants to be used in a given optimization procedure.
A list object containing the final population (sorted by performance) , the performance vector, and some run statistics.
mutpars
is used to inform the routine the type of differential
mutation to use, as well as any mutation-related parameter values. The
current version accepts the following options:
mutation_best
mutation_rand
mutation_mean
mutation_none
mutation_current_to_pbest
(incl. special case
current-to-best
)
mutation_wgi
mutpars
receives a list object with name field mutpars$name
(containing the name of the function to be called, e.g.,
name = "mutation_rand"
) as well as whatever parameters that function
may require/accept (e.g., mutpars$f = 0.7
, mutpars$nvecs = 2
,
etc.). See the specific documentation of each function for details.
Some examples are provided in the Examples
section below.
As with the mutation parameters, recpars
is used to define the
desired recombination strategy. The current version accepts the following
options:
recombination_arith
recombination_bin
recombination_blxAlphaBeta
(incl. special cases
blxAlpha
and flat
)
recombination_eigen
recombination_exp
recombination_geo
recombination_lbga
recombination_linear
recombination_mmax
recombination_npoint
recombination_none
recombination_onepoint
recombination_pbest
recombination_sbx
recombination_wright
recpars
receives a list object with name field recpars$name
(containing the name of the function to be called, e.g.,
name = "recombination_bin"
) as well as whatever parameters that
function may require/accept (e.g., recpars$cr = 0.8
,
recpars$minchange = TRUE
, etc.). See the specific documentation of
each function for details.
Some examples are provided in the Examples
section below.
selpars
follows the same idea as mutpars
and recpars
,
and is used to define the selection operators. Currently, only the standard
DE selection, selection_standard
, is implemented.
stopcrit
is similar to recpar
and the other list arguments,
but with the difference that multiple stop criteria can be defined for the
algorithm. The names of the stop criteria to be used are passed in the
stopcrit$names
field, which must contain a character vector. Other
parameters to be used for stopping the algorithm (e.g., the maximum number
of iterations stopcrit$maxiter
) can also be included as
stopcrit
fields. Currently implemented criteria are:
"stop_maxiter"
(requires additional field
stopcrit$maxiter = ?
with the maximum number of iterations).
"stop_maxeval"
(requires additional field
stopcrit$maxevals = ?
with the maximum number of function calls).
See check_stop_criteria
for details.
The probpars
parameter receives a list with all definitions related
to the problem instance to be optimized. There are three required fields in
this parameter:
probpars$name
, the name of the function that represents the
problem to be solved.
probpars$xmin
, a vector containing the lower bounds of all
optimization variables (i.e., a vector of length M, where M is the
dimension of the problem).
probpars$xmax
, a vector containing the upper bounds of all
optimization variables.
This list can also contain the following optional arguments
probpars$matrixEval
, indicates what kind of input is expected
by the function provided in probpars$name
. Valid entries are
"vector"
, "colMatrix"
and "rowMatrix"
.
Defaults to probpars$matrixEval = "rowMatrix"
Important: the objective function routine must receive either a vector or a matrix of vectors to be evaluated in the form of an input parameter named either "x" or "X" or "Pop" (any one of the three is allowed).
The seed
argument receives the desired seed for the PRNG. This value
can be set for reproducibility purposes. The value of this parameter defaults
to NULL, in which case the seed is arbitrarily set using
as.numeric(Sys.time())
.
showpars
is a list containing parameters that control the printed
output of ExpDE
. Parameter showpars
can have the following
fields:
showpars$show.iters = c("dots", "numbers", "none")
: type of
output. Defaults to "numbers"
.
showpars$showevery
: positive integer that determines how
frequently the routine echoes something to the terminal. Defaults
to 1
.
Felipe Campelo (fcampelo@ufmg.br) and Moises Botelho (moisesufop@gmail.com)
F. Campelo, M. Botelho, "Experimental Investigation of Recombination Operators for Differential Evolution", Genetic and Evolutionary Computation Conference, July 20-24, 2016, Denver/CO. DOI: 10.1145/2908812.2908852
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | # DE/rand/1/bin with population 40, F = 0.8 and CR = 0.5
popsize <- 100
mutpars <- list(name = "mutation_rand", f = 0.8)
recpars <- list(name = "recombination_bin", cr = 0.5, minchange = TRUE)
selpars <- list(name = "selection_standard")
stopcrit <- list(names = "stop_maxiter", maxiter = 100)
probpars <- list(name = "sphere",
xmin = rep(-5.12,10), xmax = rep(5.12,10))
seed <- NULL
showpars <- list(show.iters = "numbers", showevery = 1)
ExpDE(popsize, mutpars, recpars, selpars, stopcrit, probpars, seed, showpars)
# DE/wgi/1/blxAlpha
recpars <- list(name = "recombination_blxAlphaBeta", alpha = 0.1, beta = 0.1)
mutpars <- list(name = "mutation_wgi", f = 0.8)
ExpDE(popsize, mutpars, recpars, selpars, stopcrit, probpars)
# DE/best/1/sbx
recpars <- list(name = "recombination_sbx", eta = 10)
mutpars <- list(name = "mutation_best", f = 0.6, nvecs = 1)
ExpDE(popsize, mutpars, recpars, selpars, stopcrit, probpars)
# DE/best/1/eigen/bin
recpars <- list(name = "recombination_eigen",
othername = "recombination_bin",
cr = 0.5, minchange = TRUE)
showpars <- list(show.iters = "dots", showevery = 10)
stopcrit <- list(names = "stop_maxeval", maxevals = 10000)
ExpDE(popsize, mutpars, recpars, selpars, stopcrit, probpars, seed = 1234)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.