Skip to main content

Dtlz2

Struct Dtlz2 

Source
pub struct Dtlz2 { /* private fields */ }
Expand description

DTLZ2 (Deb, Thiele, Laumanns & Zitzler 2002): a scalable many-objective benchmark whose Pareto front is the unit hypersphere in the positive orthant (Σ fᵢ² = 1). On [0, 1]^n with M objectives and k = n − M + 1 distance variables,

g    = Σ_{i ≥ M} (xᵢ − 0.5)²
f_1  = (1+g) · cos(x₁ π/2) ··· cos(x_{M−1} π/2)
f_j  = (1+g) · cos(x₁ π/2) ··· sin(x_{M−j+1} π/2)
f_M  = (1+g) · sin(x₁ π/2)

The front is reached when g = 0 (all distance variables at 0.5); there the objective vector lies exactly on the unit sphere — the ground truth the NSGA-III test measures distance to.

Implementations§

Source§

impl Dtlz2

Source

pub fn new(m: usize, dim: usize) -> Self

m-objective DTLZ2 in dim variables (dim > m) on [0, 1]^dim. The recommended dim is m + 9 (so k = 10 distance variables).

Trait Implementations§

Source§

impl MultiProblem for Dtlz2

Source§

fn dim(&self) -> usize

Number of decision variables.
Source§

fn bounds(&self) -> &[Bound]

Per-variable inclusive bounds, length MultiProblem::dim.
Source§

fn n_objectives(&self) -> usize

Number of objectives (≥ 2 for a genuine multi-objective problem).
Source§

fn objectives(&self, x: &[f64]) -> Vec<f64>

The objective vector to minimize, length MultiProblem::n_objectives.

Auto Trait Implementations§

§

impl Freeze for Dtlz2

§

impl RefUnwindSafe for Dtlz2

§

impl Send for Dtlz2

§

impl Sync for Dtlz2

§

impl Unpin for Dtlz2

§

impl UnsafeUnpin for Dtlz2

§

impl UnwindSafe for Dtlz2

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.