pub trait ArgminOp {
type Param: Clone + Serialize + DeserializeOwned;
type Output: Clone + Serialize + DeserializeOwned;
type Hessian: Clone + Serialize + DeserializeOwned;
type Jacobian: Clone + Serialize + DeserializeOwned;
type Float: ArgminFloat;
fn apply(&self, _param: &Self::Param) -> Result<Self::Output, Error> { ... }
fn gradient(&self, _param: &Self::Param) -> Result<Self::Param, Error> { ... }
fn hessian(&self, _param: &Self::Param) -> Result<Self::Hessian, Error> { ... }
fn jacobian(&self, _param: &Self::Param) -> Result<Self::Jacobian, Error> { ... }
fn modify(
&self,
_param: &Self::Param,
_extent: Self::Float
) -> Result<Self::Param, Error> { ... }
}
Expand description
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: Clone + Serialize + DeserializeOwned
type Param: Clone + Serialize + DeserializeOwned
Type of the parameter vector
type Output: Clone + Serialize + DeserializeOwned
type Output: Clone + Serialize + DeserializeOwned
Output of the operator
type Hessian: Clone + Serialize + DeserializeOwned
type Hessian: Clone + Serialize + DeserializeOwned
Type of Hessian
type Jacobian: Clone + Serialize + DeserializeOwned
type Jacobian: Clone + Serialize + DeserializeOwned
Type of Jacobian
type Float: ArgminFloat
type Float: ArgminFloat
Precision of floats
Provided methods
Applies the operator/cost function to parameters
Computes the gradient at the given parameters
Computes the Hessian at the given parameters
Computes the Hessian at the given parameters