Skip to main content

Mode

Struct Mode 

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

Stateful constrained MODE optimizer.

Objective columns precede constraint columns in every row passed to tell; constraints are feasible when they are non-positive.

Implementations§

Source§

impl Mode

Source

pub fn try_new( fitfun: Fitness, nobj: usize, ncon: usize, ints: Option<Vec<bool>>, p: &ModeParams, ) -> Result<Self, &'static str>

Construct MODE after validating dimensions, bounds, population size, probabilities, and the optional integer mask.

§Errors

Returns an error if the fitness dimension or bounds are inconsistent, if nobj is zero, if the population size is below four, if any probability parameter is outside its valid range, or if a supplied integer mask does not have one entry per decision variable.

Source

pub fn new( fitfun: Fitness, nobj: usize, ncon: usize, ints: Option<Vec<bool>>, p: &ModeParams, ) -> Self

Construct MODE, panicking on invalid configuration. Applications that accept user input should prefer Mode::try_new.

§Panics

Panics on any configuration Mode::try_new rejects.

Source

pub fn dim(&self) -> usize

Number of decision variables.

Source

pub fn nobj(&self) -> usize

Number of objective columns.

Source

pub fn ncon(&self) -> usize

Number of constraint columns.

Source

pub fn popsize(&self) -> usize

Number of individuals evaluated per batch.

Source

pub fn stop(&self) -> i32

Current termination code.

Source

pub fn ask(&mut self) -> Vec<Vec<f64>>

Ask for popsize offspring rows.

§Panics

Panics if a previous batch is still pending, that is if ask is called twice without an intervening tell. Use Mode::try_ask to receive that as an error instead.

Source

pub fn try_ask(&mut self) -> Result<Vec<Vec<f64>>, &'static str>

Fallible ask variant for interfaces that need to report call-order errors rather than panic.

§Errors

Returns an error if the previously asked batch has not been told yet.

Source

pub fn tell(&mut self, ys: &[Vec<f64>]) -> i32

Tell objective+constraint values for the offspring from ask.

§Panics

Panics if no batch is pending, if ys does not have popsize rows, or if a row width differs from nobj + ncon. Use Mode::try_tell to receive these as errors instead.

Source

pub fn try_tell(&mut self, ys: &[Vec<f64>]) -> Result<i32, &'static str>

Fallible tell variant validating call order and matrix shape.

§Errors

Returns an error if no batch is pending, if ys does not have popsize rows, or if a row width differs from nobj + ncon.

Source

pub fn tell_switch( &mut self, ys: &[Vec<f64>], nsga_update: bool, pareto_update: f64, ) -> i32

Tell values while switching the population-update mode.

§Panics

Panics on everything Mode::tell panics on, and additionally if pareto_update is not finite. Use Mode::try_tell_switch for the fallible form.

Source

pub fn try_tell_switch( &mut self, ys: &[Vec<f64>], nsga_update: bool, pareto_update: f64, ) -> Result<i32, &'static str>

Fallible tell_switch variant validating the update probability and pending batch.

§Errors

Returns an error if pareto_update is not finite, or for any condition Mode::try_tell rejects.

Source

pub fn set_population(&mut self, xs: &[Vec<f64>], ys: &[Vec<f64>]) -> i32

Replace the candidate population and tell its values.

§Panics

Panics if the population size is below four, or if xs/ys shapes do not match the configured dimension and value width. Use Mode::try_set_population for the fallible form.

Source

pub fn try_set_population( &mut self, xs: &[Vec<f64>], ys: &[Vec<f64>], ) -> Result<i32, &'static str>

Fallible set_population variant validating dimensions and population sizes.

§Errors

Returns an error if the population size is below four, if xs and ys have different lengths, if a decision row width differs from the configured dimension, or if a value row width differs from nobj + ncon.

Source

pub fn population(&self) -> Vec<Vec<f64>>

Current population (rows = individuals).

Source

pub fn result(&self) -> ModeResult

Return a snapshot of the current population and its values.

Auto Trait Implementations§

§

impl Freeze for Mode

§

impl RefUnwindSafe for Mode

§

impl Send for Mode

§

impl Sync for Mode

§

impl Unpin for Mode

§

impl UnsafeUnpin for Mode

§

impl UnwindSafe for Mode

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V