SAmDE: Self Adaptive mutation DE (SAmDE)

Description Usage Arguments Details Value References Examples

View source: R/Selfadaptive_MutationDE.R

Description

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.

Usage

1
SAmDE(funcname, lo, up, n, NP, n_gen, ...)

Arguments

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

Details

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.

Value

The output of the function DEbase is a list (of length 3) containing the following elements:

References

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

Examples

 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)

FilippoPic/DEoptimPIC documentation built on Feb. 14, 2022, 5:12 a.m.