Miglierina–Molho–Recchioni (MMR)
This family comprises the MMR1 through MMR4 constructors. They implement, in order, Tests 1–4 from “Box-constrained multi-objective optimization: A gradient-like method without ‘a priori’ scalarization” [25].
Overview
All four constructors have two objectives and fixed dimensions. Their bounds are shown below.
| Problem | Source test | nvar | nobj | Lower bounds | Upper bounds |
|---|---|---|---|---|---|
MMR1 | 1 | 2 | 2 | [0.1, 0.0] | [1.0, 1.0] |
MMR2 | 2 | 2 | 2 | [0.0, 0.0] | [1.0, 1.0] |
MMR3 | 3 | 2 | 2 | [-1.0, -1.0] | [1.0, 1.0] |
MMR4 | 4 | 3 | 2 | [0.0, 0.0, 0.0] | [4.0, 4.0, 4.0] |
Analytical Jacobians are registered for all four constructors. Hessians are not registered. The catalog metadata classifies every objective in MMR1 through MMR4 as not strictly convex (:not_strictly_convex).
Mathematical formulations
The formulas below describe the objective functions implemented by the constructors. For each problem, let $F:\mathbb{R}^n \to \mathbb{R}^2$ be defined by $F(x)=(f_1(x),f_2(x))$.
MMR1
For $x \in [0.1,1]\times[0,1]$, the objectives are
\[\begin{aligned} f_1(x) &= x_1,\\ f_2(x) &= \frac{\psi(x_2)}{x_1}, \end{aligned}\]
where
\[\psi(x_2) = 2 - 0.8\exp\left[-\left(\frac{x_2-0.6}{0.4}\right)^2\right] - \exp\left[-\left(\frac{x_2-0.2}{0.04}\right)^2\right].\]
MMR2
For $x \in [0,1]^2$, the objectives are
\[\begin{aligned} f_1(x) &= x_1,\\ f_2(x) &= \psi(x_2)r(x_1,x_2), \end{aligned}\]
where
\[\begin{aligned} r(x_1,x_2) &= 1-\left(\frac{x_1}{\psi(x_2)}\right)^\alpha -\frac{x_1}{\psi(x_2)}\sin(2\pi q x_1),\\ \psi(x_2) &= 1+10x_2,\\ \alpha &= 2,\\ q &= 4. \end{aligned}\]
MMR3
For $x \in [-1,1]^2$, the objectives are
\[\begin{aligned} f_1(x) &= x_1^3,\\ f_2(x) &= (x_2-x_1)^3. \end{aligned}\]
MMR4
For $x \in [0,4]^3$, the objectives are
\[\begin{aligned} f_1(x) &= x_1-2x_2-x_3-\frac{36}{2x_1+x_2+2x_3+1},\\ f_2(x) &= -3x_1+x_2-x_3. \end{aligned}\]
Usage
julia> using MOProblems
julia> using Random
julia> prob = MMR1();
julia> lower, upper = recommended_bounds(prob);
julia> rng = MersenneTwister(1234);
julia> α = rand(rng, prob.nvar);
julia> x = lower .+ α .* (upper .- lower);
julia> values = eval_f(prob, x);
julia> J = eval_jacobian(prob, x);
julia> (length(values), size(J))
(2, (2, 2))Constructor reference
MOProblems.MMR1 — Function
MMR1()Construct the fixed two-variable, two-objective MMR1 problem.
The variables are bounded by 0.1 <= x[1] <= 1.0 and 0.0 <= x[2] <= 1.0. An analytical Jacobian is registered; objective Hessians are not registered.
MOProblems.MMR2 — Function
MMR2()Construct the fixed two-variable, two-objective MMR2 problem.
The variables are bounded in [0, 1]^2. An analytical Jacobian is registered; objective Hessians are not registered.
MOProblems.MMR3 — Function
MMR3()Construct the fixed two-variable, two-objective MMR3 problem.
The variables are bounded in [-1, 1]^2. An analytical Jacobian is registered; objective Hessians are not registered.
MOProblems.MMR4 — Function
MMR4()Construct the fixed three-variable, two-objective MMR4 problem.
The variables are bounded in [0, 4]^3. An analytical Jacobian is registered; objective Hessians are not registered.