DEoptim.control {RcppDE} | R Documentation |
Control various aspects of the DEoptim implementation
Description
Allow the user to set some characteristics of the
Differential Evolution optimization algorithm implemented
in DEoptim
.
Usage
DEoptim.control(VTR = -Inf, strategy = 2, bs = FALSE, NP = 50,
itermax = 200, CR = 0.5, F = 0.8, trace = TRUE,
initialpop = NULL, storepopfrom = itermax + 1,
storepopfreq = 1, p = 0.2, c = 0, reltol = sqrt(.Machine$double.eps),
steptol = itermax)
Arguments
VTR |
the value to be reached. The optimization process
will stop if either the maximum number of iterations |
strategy |
defines the Differential Evolution
strategy used in the optimization procedure: |
bs |
if |
NP |
number of population members. Defaults to |
itermax |
the maximum iteration (population generation) allowed.
Default is |
CR |
crossover probability from interval [0,1]. Default
to |
F |
step-size from interval [0,2]. Default to |
trace |
Printing of progress occurs? Default to |
initialpop |
an initial population used as a starting
population in the optimization procedure. May be useful to speed up
the convergence. Default to |
storepopfrom |
from which generation should the following
intermediate populations be stored in memory. Default to
|
storepopfreq |
the frequency with which populations are stored.
Default to |
p |
when |
c |
when |
reltol |
relative convergence tolerance. The algorithm stops if
it is unable to reduce the value by a factor of |
steptol |
see |
Details
This defines the Differential Evolution strategy used in the optimization procedure, described below in the terms used by Price et al. (2006); see also Mullen et al. (2009) for details.
-
strategy = 1
: DE / rand / 1 / bin.
This strategy is the classical approach for DE, and is described inDEoptim
. -
strategy = 2
: DE / local-to-best / 1 / bin.
In place of the classical DE mutation the expressionv_{i,g} = old_{i,g} + (best_{g} - old_{i,g}) + x_{r0,g} + F \cdot (x_{r1,g} - x_{r2,g})
is used, where
old_{i,g}
andbest_{g}
are thei
-th member and best member, respectively, of the previous population. This strategy is currently used by default. -
strategy = 3
: DE / best / 1 / bin with jitter.
In place of the classical DE mutation the expressionv_{i,g} = best_{g} + jitter + F \cdot (x_{r1,g} - x_{r2,g})
is used, where
jitter
is defined as 0.0001 *rand
+ F. -
strategy = 4
: DE / rand / 1 / bin with per vector dither.
In place of the classical DE mutation the expressionv_{i,g} = x_{r0,g} + dither \cdot (x_{r1,g} - x_{r2,g})
is used, where
dither
is calculated asF + \code{rand} * (1 - F)
. -
strategy = 5
: DE / rand / 1 / bin with per generation dither.
The strategy described for4
is used, butdither
is only determined once per-generation. any value not above: variation to DE / rand / 1 / bin: either-or algorithm.
In the case thatrand
< 0.5, the classical strategystrategy = 1
is used. Otherwise, the expressionv_{i,g} = x_{r0,g} + 0.5 \cdot (F + 1) \cdot (x_{r1,g} + x_{r2,g} - 2 \cdot x_{r0,g})
is used.
Value
The default value of control
is the return value of
DEoptim.control()
, which is a list (and a member of the S3
class
DEoptim.control
) with the above elements.
Note
Further details and examples of the R package DEoptim can be found in Mullen et al. (2009) and Ardia et al. (2010).
Please cite the package in publications.
Author(s)
For RcppDE: Dirk Eddelbuettel.
For DEoptim: David Ardia, Katharine Mullen katharine.mullen@nist.gov, Brian Peterson and Joshua Ulrich.
References
Price, K.V., Storn, R.M., Lampinen J.A. (2006) Differential Evolution - A Practical Approach to Global Optimization. Berlin Heidelberg: Springer-Verlag. ISBN 3540209506.
Mullen, K.M., Ardia, D., Gil, D.L, Windover, D., Cline, J. (2009) DEoptim: An R Package for Global Optimization by Differential Evolution. URL https://www.ssrn.com/abstract=1526466
Ardia, D., Boudt, K., Carl, P., Mullen, K.M., Peterson, B.G. (2010) Differential Evolution (DEoptim) for Non-Convex Portfolio Optimization. URL https://www.ssrn.com/abstract=1584905
See Also
DEoptim
and DEoptim-methods
.
Examples
## set the population size to 20
DEoptim.control(NP = 20)
## set the population size, the number of iterations and don't
## display the iterations during optimization
DEoptim.control(NP = 20, itermax = 100, trace = FALSE)