[−][src]Trait argmin::prelude::ArgminOp
This trait needs to be implemented for every operator/cost function.
It is required to implement the apply
method, all others are optional and provide a default
implementation which is essentially returning an error which indicates that the method has not
been implemented. Those methods (gradient
and modify
) only need to be implemented if the
uses solver requires it.
Associated Types
type Param: Send + Sync + Clone + Default + DeserializeOwned + Serialize
Type of the parameter vector
type Output
Output of the operator. Most solvers expect f64
.
type Hessian: Send + Sync + Clone + Default + DeserializeOwned + Serialize
Type of Hessian
Provided methods
fn apply(&self, _param: &Self::Param) -> Result<Self::Output, Error>
Applies the operator/cost function to parameters
fn gradient(&self, _param: &Self::Param) -> Result<Self::Param, Error>
Computes the gradient at the given parameters
fn hessian(&self, _param: &Self::Param) -> Result<Self::Hessian, Error>
Computes the hessian at the given parameters
fn modify(
&self,
_param: &Self::Param,
_extent: f64
) -> Result<Self::Param, Error>
&self,
_param: &Self::Param,
_extent: f64
) -> Result<Self::Param, Error>
Modifies a parameter vector. Comes with a variable that indicates the "degree" of the modification.
Implementors
impl ArgminOp for MinimalNoOperator
[src]
type Param = Vec<f64>
type Output = f64
type Hessian = Vec<Vec<f64>>
fn apply(
&self,
_p: &<MinimalNoOperator as ArgminOp>::Param
) -> Result<<MinimalNoOperator as ArgminOp>::Output, Error>
[src]
&self,
_p: &<MinimalNoOperator as ArgminOp>::Param
) -> Result<<MinimalNoOperator as ArgminOp>::Output, Error>
fn gradient(
&self,
_p: &<MinimalNoOperator as ArgminOp>::Param
) -> Result<<MinimalNoOperator as ArgminOp>::Param, Error>
[src]
&self,
_p: &<MinimalNoOperator as ArgminOp>::Param
) -> Result<<MinimalNoOperator as ArgminOp>::Param, Error>
fn hessian(
&self,
_p: &<MinimalNoOperator as ArgminOp>::Param
) -> Result<<MinimalNoOperator as ArgminOp>::Hessian, Error>
[src]
&self,
_p: &<MinimalNoOperator as ArgminOp>::Param
) -> Result<<MinimalNoOperator as ArgminOp>::Hessian, Error>
fn modify(
&self,
_p: &<MinimalNoOperator as ArgminOp>::Param,
_t: f64
) -> Result<<MinimalNoOperator as ArgminOp>::Param, Error>
[src]
&self,
_p: &<MinimalNoOperator as ArgminOp>::Param,
_t: f64
) -> Result<<MinimalNoOperator as ArgminOp>::Param, Error>
impl<T, U, H> ArgminOp for NoOperator<T, U, H> where
H: Clone + Default + Debug + Send + Sync + Serialize + DeserializeOwned,
T: Clone + Default + Debug + Send + Sync + Serialize + DeserializeOwned,
U: Clone + Default + Debug + Send + Sync + Serialize + DeserializeOwned,
[src]
H: Clone + Default + Debug + Send + Sync + Serialize + DeserializeOwned,
T: Clone + Default + Debug + Send + Sync + Serialize + DeserializeOwned,
U: Clone + Default + Debug + Send + Sync + Serialize + DeserializeOwned,
type Param = T
type Output = U
type Hessian = H
fn apply(
&self,
_p: &<NoOperator<T, U, H> as ArgminOp>::Param
) -> Result<<NoOperator<T, U, H> as ArgminOp>::Output, Error>
[src]
&self,
_p: &<NoOperator<T, U, H> as ArgminOp>::Param
) -> Result<<NoOperator<T, U, H> as ArgminOp>::Output, Error>
fn gradient(
&self,
_p: &<NoOperator<T, U, H> as ArgminOp>::Param
) -> Result<<NoOperator<T, U, H> as ArgminOp>::Param, Error>
[src]
&self,
_p: &<NoOperator<T, U, H> as ArgminOp>::Param
) -> Result<<NoOperator<T, U, H> as ArgminOp>::Param, Error>
fn hessian(
&self,
_p: &<NoOperator<T, U, H> as ArgminOp>::Param
) -> Result<<NoOperator<T, U, H> as ArgminOp>::Hessian, Error>
[src]
&self,
_p: &<NoOperator<T, U, H> as ArgminOp>::Param
) -> Result<<NoOperator<T, U, H> as ArgminOp>::Hessian, Error>
fn modify(
&self,
_p: &<NoOperator<T, U, H> as ArgminOp>::Param,
_t: f64
) -> Result<<NoOperator<T, U, H> as ArgminOp>::Param, Error>
[src]
&self,
_p: &<NoOperator<T, U, H> as ArgminOp>::Param,
_t: f64
) -> Result<<NoOperator<T, U, H> as ArgminOp>::Param, Error>