pub enum Bound {
NoBound,
LowerBound(f64),
UpperBound(f64),
LowerAndUpperBound(f64, f64),
}
Expand description
An enum that describes a bound/limit on a parameter in a minimization.
Bound
s take a generic T
which represents some scalar numeric value. They can be used by
bounded algorithms directly, or by some unbounded algorithms using parameter space
transformations.
Variants§
NoBound
(-inf, +inf)
LowerBound(f64)
(min, +inf)
UpperBound(f64)
(-inf, max)
LowerAndUpperBound(f64, f64)
(min, max)
Implementations§
Source§impl Bound
impl Bound
Sourcepub fn get_uniform(&self, rng: &mut Rng) -> f64
pub fn get_uniform(&self, rng: &mut Rng) -> f64
Get a value in the uniform distribution between lower
and upper
.
Sourcepub fn contains(&self, value: f64) -> bool
pub fn contains(&self, value: f64) -> bool
Checks whether the given value
is compatible with the bounds.
Sourcepub fn contains_vec(
bounds: &[Bound],
vec: &Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>,
) -> bool
pub fn contains_vec( bounds: &[Bound], vec: &Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>, ) -> bool
Checks whether the given DVector
is compatible with the list of bounds in each
coordinate.
Sourcepub fn bound_excess(&self, value: f64) -> f64
pub fn bound_excess(&self, value: f64) -> f64
Checks whether the given value
is compatible with the bound and returns 0.0
if it is,
and the distance to the bound otherwise signed by whether the bound is a lower (-
) or
upper (+
) bound.
Sourcepub fn bounds_excess(
bounds: &[Bound],
vec: &Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>,
) -> Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>
pub fn bounds_excess( bounds: &[Bound], vec: &Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>, ) -> Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>
Checks whether each of the given DVector
’s coordinates are compatible with the bounds
and returns a DVector
containing the result of Bound::bound_excess
at each
coordinate.
Sourcepub fn at_bound(&self, value: f64) -> bool
pub fn at_bound(&self, value: f64) -> bool
Checks if the given value is equal to one of the bounds.
TODO: his just does equality comparison right now, which probably needs to be improved to something with an epsilon (significant but not critical to most fits right now).
Sourcepub fn to_bounded(
values: &[f64],
bounds: Option<&Vec<Bound>>,
) -> Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>
pub fn to_bounded( values: &[f64], bounds: Option<&Vec<Bound>>, ) -> Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>
Converts an unbounded “external” parameter into a bounded “internal” one via the transform:
Upper and lower bounds:
x_\text{int} = \arcsin\left(2\frac{x_\text{ext} - x_\text{min}}{x_\text{max} - x_\text{min}} - 1\right)
Upper bound only:
x_\text{int} = \sqrt{(x_\text{max} - x_\text{ext} + 1)^2 - 1}
Lower bound only:
x_\text{int} = \sqrt{(x_\text{ext} - x_\text{min} + 1)^2 - 1}
Sourcepub fn to_unbounded(
values: &[f64],
bounds: Option<&Vec<Bound>>,
) -> Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>
pub fn to_unbounded( values: &[f64], bounds: Option<&Vec<Bound>>, ) -> Matrix<f64, Dyn, Const<1>, VecStorage<f64, Dyn, Const<1>>>
Converts a bounded “internal” parameter into an unbounded “external” one via the transform:
Upper and lower bounds:
x_\text{ext} = x_\text{min} + \left(\sin(x_\text{int}) + 1\right)\frac{x_\text{max} - x_\text{min}}{2}
Upper bound only:
x_\text{ext} = x_\text{max} + 1 - \sqrt{x_\text{int}^2 + 1}
Lower bound only:
x_\text{ext} = x_\text{min} - 1 + \sqrt{x_\text{int}^2 + 1}
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Bound
impl<'de> Deserialize<'de> for Bound
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Bound, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Bound, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for Bound
impl Serialize for Bound
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl Copy for Bound
Auto Trait Implementations§
impl Freeze for Bound
impl RefUnwindSafe for Bound
impl Send for Bound
impl Sync for Bound
impl Unpin for Bound
impl UnwindSafe for Bound
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Serialize for T
impl<T> Serialize for T
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>
fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.