12.2 Standard Test Functions for Optimization Algorithms
Some of them are …
# Extended Rosenbrock Function
= function(x)
Rosenbrock
{# Extern: DimX
# DimX must be positive multiple of 2
= vector(length=DimX)
f
for (i in 1:(DimX/2)) {
2*i-1] = 10 * (x[2*i] - x[2*i-1]^2)
f[2*i] = 1 - x[2*i-1]
f[
}
return(sum(f^2))
}
= function(n=2)
InitRosen
{<<- n
DimX = vector(length=n+2)
x0 for (i in 1:((n+2)/3)) {
3*i-2] = -1
x0[3*i-1] = 2
x0[3*i] = 1
x0[
}return(x0[1:n])
}
############################################
# Extended Powell Singular Function
= function(x)
Powell
{# Extern: DimX
# DimX must be positive multiple of 4
= vector(length=DimX)
f
for (i in 1:(DimX/4)) {
4*i-3] = x[4*i-3] + 10*x[4*i-2]
f[4*i-2] = sqrt(5)*(x[4*i-1] - x[4*i])
f[4*i-1] = (x[4*i-2] - 2*x[4*i-1])^2
f[4*i] = sqrt(10)*(x[4*i-3]-x[4*i])^2
f[
}
return(sum(f^2))
}
= function(n=4)
InitPowell
{# n must be positive multiple of 4
# gradient and hessian are singular
<<- n
DimX = vector(length=n)
x0 for (i in 1:(n/4)) {
4*i-3] = 3
x0[4*i-2] = -1
x0[4*i-1] = 0
x0[4*i] = 1
x0[
}return(x0)
}
############################################
# Trigonometric Function
= function(x)
Trig
{# Extern: DimX
# DimX : any positive integer, typically 10
= vector(length=DimX)
f = vector(length=DimX)
subf
for (i in 1:DimX) {
for (j in 1:DimX) subf[j] = cos(x[j]) + i*(1-cos(x[i])) - sin(x[i])
= DimX - sum(subf)
f[i]
}
return(sum(f^2))
}
############################################
# Helical Valley Function
= function(x)
Valley
{if (x[1] > 0) {
= 1 / (2*pi) * atan(x[2]/x[1])
phi else if (x[1] < 0) {
} = 1 / (2*pi) * atan(x[2]/x[1]) + 0.5
phi else {
} = 0
phi
}= 10 * (x[3] - 10 * phi)
f1 = 10 * (sqrt(x[1]^2 + x[2]^2) - 1)
f2 = x[3]
f3 return(f1^2 + f2^2 + f3^2)
}
############################################
# Wood Function
= function(x)
Wood
{= 100 * (x[1]^2 - x[2])^2 + (1-x[1])^2 + 90*(x[3]^2-x[4])^2 + (1-x[3])^2 +
f 10.1 * ((1-x[2])^2+(1-x[4])^2) + 19.8 * (1-x[2])*(1-x[4])
return(f^2)
}