Schütze–Laumanns–Coello Coello–Dellnitz–Talbi (SLCDT)
This family comprises SLCDT1 and SLCDT2, from the numerical results of Schütze, Laumanns, Coello Coello, Dellnitz, and Talbi [30].
Overview
Both constructors have fixed dimensions and registered componentwise variable bounds. SLCDT1 takes perturbation coefficient λ, which selects the bounds; SLCDT2 takes no parameters.
| Problem | λ | nvar | nobj | Lower bound | Upper bound |
|---|---|---|---|---|---|
SLCDT1 | 0 | 2 | 2 | -0.5 | 0.5 |
SLCDT1 | any other value (default 0.85) | 2 | 2 | -1.5 | 1.5 |
SLCDT2 | — | 10 | 3 | -1.0 | 1.0 |
The two rows for SLCDT1 reproduce the two settings used in the source, which pairs $\lambda=0$ with the domain $[-0.5,0.5]^2$ and $\lambda=0.85$ with $[-1.5,1.5]^2$.
Analytical Jacobians are registered for both constructors. Hessians are not registered. The catalog metadata classifies every objective of SLCDT1 and SLCDT2 as not strictly convex (:not_strictly_convex).
Mathematical formulations
SLCDT1
Let $F:\mathbb{R}^2 \to \mathbb{R}^2$ be defined by $F(x,y)=(f_1(x,y,\lambda),f_2(x,y,\lambda))$. The objectives are
\[\begin{aligned} f_1(x,y,\lambda) &= \frac{1}{2}\left(\sqrt{1+(x+y)^2}+\sqrt{1+(x-y)^2}+x-y\right) + \lambda\,e^{-(x-y)^2},\\ f_2(x,y,\lambda) &= \frac{1}{2}\left(\sqrt{1+(x+y)^2}+\sqrt{1+(x-y)^2}-x+y\right) + \lambda\,e^{-(x-y)^2}. \end{aligned}\]
SLCDT2
Let $F:\mathbb{R}^{10} \to \mathbb{R}^3$ be defined by $F(x)=(f_1(x),f_2(x),f_3(x))$. The objectives are
\[f_i(x) = \sum_{\substack{j=1\\ j\neq i}}^{10}\left(x_j-a_j^i\right)^2 + \left(x_i-a_i^i\right)^4, \qquad i = 1,2,3,\]
where
\[\begin{aligned} a^1 &= (1,1,1,1,\ldots),\\ a^2 &= (-1,-1,-1,-1,\ldots),\\ a^3 &= (1,-1,1,-1,\ldots), \end{aligned}\]
and $a^1,a^2,a^3 \in \mathbb{R}^{10}$.
Usage
julia> using MOProblems
julia> using Random
julia> prob1 = SLCDT1();
julia> lower1, upper1 = recommended_bounds(prob1);
julia> rng = MersenneTwister(1234);
julia> α1 = rand(rng, prob1.nvar);
julia> x1 = lower1 .+ α1 .* (upper1 .- lower1);
julia> values1 = eval_f(prob1, x1);
julia> J1 = eval_jacobian(prob1, x1);
julia> prob1b = SLCDT1(lambda = 0.0);
julia> prob2 = SLCDT2();
julia> lower2, upper2 = recommended_bounds(prob2);
julia> α2 = rand(rng, prob2.nvar);
julia> x2 = lower2 .+ α2 .* (upper2 .- lower2);
julia> values2 = eval_f(prob2, x2);
julia> J2 = eval_jacobian(prob2, x2);
julia> (length(values1), size(J1), length(values2), size(J2))
(2, (2, 2), 3, (3, 10))Constructor reference
MOProblems.SLCDT1 — Function
SLCDT1(; lambda::Real = 0.85)Construct the fixed two-variable, two-objective SLCDT1 problem, with perturbation coefficient lambda.
The variables are bounded in [-0.5, 0.5]^2 when lambda == 0, and in [-1.5, 1.5]^2 for every other value of lambda (including the default). An analytical Jacobian is registered; objective Hessians are not registered.
MOProblems.SLCDT2 — Function
SLCDT2()Construct the fixed ten-variable, three-objective SLCDT2 problem.
The variables are bounded in [-1, 1]^10. An analytical Jacobian is registered; objective Hessians are not registered.