Description Usage Arguments Details Value References Examples
View source: R/Selfadaptive_MutationDE.R
Modified version of the base DE algorithm, proposed by Silva et al., which selects from a pool the mutation scheme
selecting between DE/rand/1
, DE/best/1
, DE/best/2
and DE/current-to-rand/1
.
1 |
funcname |
function to optimize |
lo |
lower bound (same for each component of the vector x) |
up |
upper bound (same for each component of the vector x) |
n |
problem size |
NP |
population size (should be ~ four times the size of the problem) |
n_gen |
number of generations (~ ten times the value of NP) |
... |
parameters to pass at objective function to optimize |
The probability for choosing a mutation scheme is updated by a DE/rand/1
mutation operator
on the probability vector, starting from a vector of 4 random values.
Mutation factor F
and crossover rate CR
are randomly selected between [0.7,1.1], and
[0.4,0.9] respectively.
The output of the function DEbase
is a list (of length 3) containing the following elements:
f_best
: the best value found by the algorithm for the last generation
x_best
: the vector which corresponds to the best overall function value
f
: the vector of the n_gen
optimal values found by the algorithm at each generation
R. C. P. Silva, R. A. Lopes, F.G. Guimaraes, Self adaptive mutation in the differential evolution, Proceedings of GECCO'11, 2011, Dublin, Ireland, pp. 1939–1946.
S. Das, S. Mullick, P. N. Suganthan, Recent advances in differential evolution– an updated survey. Swarm and evolutionary computation, vol. 23, 2016, pp. 1–30
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | ##implementation of the schwefel function
schwef <- function(x)
{
if(is.vector(x))
{
d <- length(x)
sum <- sum(x*sin(sqrt(abs(x))))
y <- 418.9829*d - sum
return(y)
}
if(is.matrix(x))
{
d <- ncol(x)
sum <- apply(x*sin(sqrt(abs(x))),1,sum)
y <- 418.9829*d - sum
return(y)
}
}
##application of DEbase function
set.seed(123)
d <- SAmDE(schwef,-500,500,10,40,400)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.