Molyneaux–Leyland–Favrat (MLF)

The MLF1 and MLF2 constructors implement two test problems introduced by Molyneaux, Favrat, and Leyland [24]. Huband et al. later cataloged both problems as MLF1 and MLF2 [9].

Corrected MLF1 formulation

Equation (2) of [24] prints the common factor as 1 * x/20. Huband et al. identify MLF1 as containing a typographical error and give the corrected factor $1+x/20$ in Table XVI [9]. MLF1 implements this corrected formulation, which is also consistent with the objective amplitudes shown in Figures 3 and 4 of the original paper.

Overview

Both constructors have fixed dimensions and register analytical Jacobians. Objective Hessians are not registered. The catalog metadata classifies every objective as not strictly convex (:not_strictly_convex).

ProblemnvarnobjRegistered boundsRecommended working box
MLF112$[0,20]$
MLF222None$[-100,100]^2$

MLF2 is unconstrained: its recommended box is not registered in the returned MOProblem and is not a domain stated in [24]. It provides a practical finite search region when an algorithm requires one.

Mathematical formulations

MLF1

Let $F:[0,20]\to\mathbb{R}^2$ be defined by $F(x)=(f_1(x),f_2(x))$. The corrected objectives are

\[\begin{aligned} f_1(x) &= \left(1+\frac{x_1}{20}\right)\sin(x_1),\\ f_2(x) &= \left(1+\frac{x_1}{20}\right)\cos(x_1). \end{aligned}\]

MLF2

Molyneaux, Favrat, and Leyland [24] formulate MLF2 as a maximization problem. MOProblems.jl follows its minimization convention by implementing the negative of each source objective. Thus, let $F:\mathbb{R}^2\to\mathbb{R}^2$ be the implemented minimization vector $F(x)=(f_1(x),f_2(x))$. Its components are

\[\begin{aligned} f_1(x) ={}& -5 + \frac{1}{200}\left[ \left(x_1^2+x_2-11\right)^2 +\left(x_1+x_2^2-7\right)^2\right],\\ f_2(x) ={}& -5 + \frac{1}{200}\left[ \left(4x_1^2+2x_2-11\right)^2 +\left(2x_1+4x_2^2-7\right)^2\right]. \end{aligned}\]

This sign change preserves the Pareto-optimal decision set, while reflecting the Pareto front through the origin. Values in the source maximization convention are obtained as -eval_f(prob, x).

Usage

julia> using MOProblems

julia> using Random

julia> prob = MLF2();

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> source_values = -values;

julia> J = eval_jacobian(prob, x);

julia> (length(values), size(J), length(source_values))
(2, (2, 2), 2)

Constructor reference

MOProblems.MLF1Function
MLF1()

Construct the fixed one-variable, two-objective MLF1 problem.

The variable bound is [0, 20]. The constructor uses the corrected formulation reported by Huband et al. An analytical Jacobian is registered; objective Hessians are not registered.

source
MOProblems.MLF2Function
MLF2()

Construct the fixed two-variable, two-objective MLF2 problem.

The problem has no explicit variable bounds. Its objectives are the negatives of the maximization objectives in Molyneaux, Favrat, and Leyland, giving an equivalent minimization problem. [-100, 100]^2 is the recommended working box. An analytical Jacobian is registered; objective Hessians are not registered.

source