pub struct Halfspace<'a, T = f64> { /* private fields */ }Expand description
A halfspace is a set given by $H = \{x \in \mathbb{R}^n {}:{} \langle c, x\rangle \leq b\}$.
Implementations§
Source§impl<'a, T> Halfspace<'a, T>
impl<'a, T> Halfspace<'a, T>
Sourcepub fn new(normal_vector: &'a [T], offset: T) -> Self
pub fn new(normal_vector: &'a [T], offset: T) -> Self
A halfspace is a set given by $H = \{x \in \mathbb{R}^n {}:{} \langle c, x\rangle \leq b\}$, where $c$ is the normal vector of the halfspace and $b$ is an offset.
This method constructs a new instance of Halfspace with a given normal
vector and bias
§Arguments
normal_vector: the normal vector, $c$, as a sliceoffset: the offset parameter, $b$
§Returns
New instance of Halfspace
§Panics
Does not panic. Note: it does not panic if you provide an empty slice as normal_vector,
but you should avoid doing that.
§Example
use optimization_engine::constraints::{Constraint, Halfspace};
let normal_vector = [1., 2.];
let offset = 1.0;
let halfspace = Halfspace::new(&normal_vector, offset);
let mut x = [-1., 3.];
halfspace.project(&mut x).unwrap();Trait Implementations§
Source§impl<'a, T> Constraint<T> for Halfspace<'a, T>
impl<'a, T> Constraint<T> for Halfspace<'a, T>
Source§fn project(&self, x: &mut [T]) -> FunctionCallResult
fn project(&self, x: &mut [T]) -> FunctionCallResult
Projects on halfspace using the following formula:
$$\begin{aligned} \mathrm{proj}_{H}(x) = \begin{cases} x,& \text{ if } \langle c, x\rangle \leq b \\ x - \frac{\langle c, x\rangle - b} {\|c\|}c,& \text{else} \end{cases} \end{aligned}$$
where $H = \{x \in \mathbb{R}^n {}:{} \langle c, x\rangle \leq b\}$
§Arguments
x: (in) vector to be projected on the current instance of a halfspace, (out) projection on the second-order cone
§Panics
This method panics if the length of x is not equal to the dimension
of the halfspace.