Struct optimization_engine::constraints::FiniteSet
source · pub struct FiniteSet<'a> { /* private fields */ }
Expand description
A finite set, $X = \{x_1, x_2, \ldots, x_n\}\subseteq\mathbb{R}^n$, given vectors $x_i\in\mathbb{R}^n$
Implementations§
source§impl<'a> FiniteSet<'a>
impl<'a> FiniteSet<'a>
sourcepub fn new(data: &'a [&'a [f64]]) -> Self
pub fn new(data: &'a [&'a [f64]]) -> Self
Construct a finite set, $X = \{x_1, x_2, \ldots, x_n\}$, given vectors $x_i\in\mathbb{R}^n$
§Arguments
- data: vector of vectors (see example below)
§Example
use optimization_engine::constraints::{Constraint, FiniteSet};
let data: &[&[f64]] = &[
&[1.0, 1.0],
&[0.0, 1.0],
&[1.0, 0.0],
&[0.0, 0.0],
];
let finite_set = FiniteSet::new(data);
§Panics
This method will panic if (i) the given vector of data is empty and (ii) if the given vectors have unequal dimensions.
Trait Implementations§
source§impl<'a> Constraint for FiniteSet<'a>
impl<'a> Constraint for FiniteSet<'a>
source§fn project(&self, x: &mut [f64])
fn project(&self, x: &mut [f64])
Projection on the current finite set
Traverses the elements of the vector, computes norm-2 distances
to each element, and updates the given vector x
with the closest
element from the finite set.
§Parameters
x
: (input) given vector, (output) projection on finite set
§Example
use optimization_engine::constraints::*;
let data: &[&[f64]] = &[
&[0.0, 0.0],
&[1.0, 1.0],
];
let finite_set = FiniteSet::new(data);
let mut x = [0.7, 0.6];
finite_set.project(&mut x); // compute projection
§Panics
Does not panic
impl<'a> Copy for FiniteSet<'a>
Auto Trait Implementations§
impl<'a> Freeze for FiniteSet<'a>
impl<'a> RefUnwindSafe for FiniteSet<'a>
impl<'a> Send for FiniteSet<'a>
impl<'a> Sync for FiniteSet<'a>
impl<'a> Unpin for FiniteSet<'a>
impl<'a> UnwindSafe for FiniteSet<'a>
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
Mutably borrows from an owned value. Read more