Das–Dennis (DD)
The DD1 constructor implements the numerical biobjective example from Indraneel Das and J. E. Dennis, “Normal-Boundary Intersection: A New Method for Generating the Pareto Surface in Nonlinear Multicriteria Optimization Problems” [4].
Overview
DD1 has five variables, two objectives, two equality constraints, and one inequality constraint. It has no explicit variable bounds. The constraint mapping follows the convention
\[l_c \leq c(x) \leq u_c.\]
| Problem | nvar | nobj | ncon_eq | ncon_ineq | Registered bounds | Recommended working box |
|---|---|---|---|---|---|---|
DD1 | 5 | 2 | 2 | 1 | none | $[-20,20]^5$ |
Analytical Jacobians and Hessians are registered for both objectives and all constraints. The catalog metadata classifies the first objective as strictly convex (:strictly_convex) and the second as not strictly convex (:not_strictly_convex).
recommended_bounds returns $[-20,20]^5$, a box recommended by the package developers for experiments that need a bounded region. It is not added to prob.bounds and does not replace the three general constraints: the box was chosen so that feasible points exist inside it, not so that every point of it is feasible.
Mathematical formulation
Let $F:\mathbb{R}^5 \to \mathbb{R}^2$ be defined by $F(x)=(f_1(x),f_2(x))$. The objectives are
\[\begin{aligned} f_1(x) &= x_1^2+x_2^2+x_3^2+x_4^2+x_5^2,\\ f_2(x) &= 3x_1+2x_2-\frac{x_3}{3}+0.01(x_4-x_5)^3. \end{aligned}\]
The traditional equality and inequality constraint functions are
\[\begin{aligned} h_1(x) &= x_1+2x_2-x_3-0.5x_4+x_5-2 = 0,\\ h_2(x) &= 4x_1-2x_2+0.8x_3+0.6x_4+0.5x_5^2 = 0,\\ g_1(x) &= x_1^2+x_2^2+x_3^2+x_4^2+x_5^2-10 \leq 0. \end{aligned}\]
In the evaluation API, these functions are stored as
\[c(x)=\begin{bmatrix}h_1(x) & h_2(x) & g_1(x)\end{bmatrix}^{\mathsf T}, \qquad l_c=\begin{bmatrix}0&0&-\infty\end{bmatrix}^{\mathsf T}, \qquad u_c=\begin{bmatrix}0&0&0\end{bmatrix}^{\mathsf T}.\]
Usage
The point below satisfies the two equalities and the inequality.
julia> using MOProblems
julia> prob = DD1();
julia> x = [1 / 3, 0.0, -5 / 3, 0.0, 0.0];
julia> objectives = eval_f(prob, x);
julia> constraints = eval_c(prob, x);
julia> all(prob.lcon .- 1e-12 .<= constraints .<= prob.ucon .+ 1e-12)
true
julia> objective_jacobian = eval_jacobian(prob, x);
julia> constraint_jacobian = eval_constraint_jacobian(prob, x);
julia> objective_hessians = eval_hessian(prob, x);
julia> constraint_hessians = eval_constraint_hessian(prob, x);
julia> (length(objectives), length(constraints), size(objective_jacobian),
size(constraint_jacobian), length(objective_hessians),
size(objective_hessians[1]), length(constraint_hessians),
size(constraint_hessians[1]))
(2, 3, (2, 5), (3, 5), 2, (5, 5), 3, (5, 5))The constraint values are interpreted together with prob.lcon and prob.ucon.
Constructor reference
MOProblems.DD1 — Function
DD1()Construct the fixed five-variable, two-objective DD1 problem.
The problem has two equality constraints and one inequality constraint. It has no explicit variable bounds. Analytical Jacobians and Hessians are registered for both the objectives and the constraints.