11"""
2- LTDZ ()
2+ LTDZ1 ()
33
4- Problem characteristics summary:
5- - 3 variables
6- - 3 objectives
7- - Objectives:
8- f₁(x) = -3 + (1 + x₃)cos(πx₁/2)cos(πx₂/2)
9- f₂(x) = -3 + (1 + x₃)cos(πx₁/2)sin(πx₂/2)
10- f₃(x) = -3 + (1 + x₃)cos(πx₁/2)sin(πx₁/2)
11- - Bounds: [0, 1] for all variables
4+ Construct the fixed-dimension `LTDZ1` benchmark with three variables and three
5+ objectives. Each variable is bounded by `[0, 1]`. An analytical Jacobian is
6+ registered; objective Hessians are not registered.
127
13- Referência:
14- M. Laumanns, L. Thiele, K. Deb, E. Zitzler, Combining Convergence and Diversity in Evolutionary
15- Multiobjective Optimization, Evolutionary Computation, 10(3):263–282, 2002. DOI: 10.1162/106365602760234108
8+ The constructor uses the third objective given for `LTDZ1` in Table XVI of
9+ Huband et al. (2006), rather than a literal transcription of Equation (8) in
10+ Laumanns et al. (2002). It negates all three maximization objectives to follow
11+ the package's minimization convention.
1612"""
17- function LTDZ ()
18- meta = META[" LTDZ " ]
19- n = default_nvar (meta) # 3
20- m = default_nobj (meta) # 3
13+ function LTDZ1 ()
14+ meta = META[" LTDZ1 " ]
15+ n = default_nvar (meta)
16+ m = default_nobj (meta)
2117
2218 f1 = function (x:: AbstractVector{T} ) where {T <: AbstractFloat }
2319 halfpi = T (π) / T (2 )
@@ -36,7 +32,7 @@ function LTDZ()
3632 f3 = function (x:: AbstractVector{T} ) where {T <: AbstractFloat }
3733 halfpi = T (π) / T (2 )
3834 a = x[1 ] * halfpi
39- return T (- 3 ) + (one (T) + x[3 ]) * cos (a) * sin (a)
35+ return T (- 3 ) + (one (T) + x[3 ]) * sin (a)
4036 end
4137
4238 df1_dx = function (g:: AbstractVector{T} , x:: AbstractVector{T} ) where {T <: AbstractFloat }
@@ -45,7 +41,7 @@ function LTDZ()
4541 b = x[2 ] * halfpi
4642 g[1 ] = - halfpi * (one (T) + x[3 ]) * sin (a) * cos (b)
4743 g[2 ] = - halfpi * (one (T) + x[3 ]) * cos (a) * sin (b)
48- g[3 ] = cos (a) * cos (b)
44+ g[3 ] = cos (a) * cos (b)
4945 return g
5046 end
5147
@@ -54,18 +50,17 @@ function LTDZ()
5450 a = x[1 ] * halfpi
5551 b = x[2 ] * halfpi
5652 g[1 ] = - halfpi * (one (T) + x[3 ]) * sin (a) * sin (b)
57- g[2 ] = halfpi * (one (T) + x[3 ]) * cos (a) * cos (b)
58- g[3 ] = cos (a) * sin (b)
53+ g[2 ] = halfpi * (one (T) + x[3 ]) * cos (a) * cos (b)
54+ g[3 ] = cos (a) * sin (b)
5955 return g
6056 end
6157
6258 df3_dx = function (g:: AbstractVector{T} , x:: AbstractVector{T} ) where {T <: AbstractFloat }
6359 halfpi = T (π) / T (2 )
6460 a = x[1 ] * halfpi
65- cosa = cos (a); sina = sin (a)
66- g[1 ] = halfpi * (one (T) + x[3 ]) * (cosa * cosa - sina * sina)
61+ g[1 ] = halfpi * (one (T) + x[3 ]) * cos (a)
6762 g[2 ] = zero (T)
68- g[3 ] = cosa * sina
63+ g[3 ] = sin (a)
6964 return g
7065 end
7166
@@ -77,4 +72,12 @@ function LTDZ()
7772 bounds = (zeros (n), ones (n)),
7873 jacobian = (df1_dx, df2_dx, df3_dx),
7974 )
80- end
75+ end
76+
77+ """
78+ LTDZ()
79+
80+ Alias for `LTDZ1()`. Fliege, Drummond, and Svaiter (2009) use the name `LTDZ`
81+ for this benchmark, while Huband et al. (2006) catalog it as `LTDZ1`.
82+ """
83+ LTDZ () = LTDZ1 ()
0 commit comments