Struct optimization_engine::constraints::Halfspace
source · pub struct Halfspace<'a> { /* 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> Halfspace<'a>
impl<'a> Halfspace<'a>
sourcepub fn new(normal_vector: &'a [f64], offset: f64) -> Self
pub fn new(normal_vector: &'a [f64], offset: f64) -> 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);
Trait Implementations§
source§impl<'a> Constraint for Halfspace<'a>
impl<'a> Constraint for Halfspace<'a>
source§fn project(&self, x: &mut [f64])
fn project(&self, x: &mut [f64])
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.