Struct argmin::core::OpWrapper [−][src]
pub struct OpWrapper<O: ArgminOp> { pub op: Option<O>, pub cost_func_count: u64, pub grad_func_count: u64, pub hessian_func_count: u64, pub jacobian_func_count: u64, pub modify_func_count: u64, }
This wraps an operator and keeps track of how often the cost, gradient and Hessian have been computed and how often the modify function has been called. Usually, this is an implementation detail unless a solver is needed within another solver (such as a line search within a gradient descent method), then it may be necessary to wrap the operator in an OpWrapper.
Fields
op: Option<O>
Operator
cost_func_count: u64
Number of cost function evaluations
grad_func_count: u64
Number of gradient function evaluations
hessian_func_count: u64
Number of Hessian function evaluations
jacobian_func_count: u64
Number of Jacobian function evaluations
modify_func_count: u64
Number of modify
function evaluations
Implementations
impl<O: ArgminOp> OpWrapper<O>
[src]
impl<O: ArgminOp> OpWrapper<O>
[src]pub fn new(op: O) -> Self
[src]
Constructor
pub fn new_from_wrapper(op: &mut OpWrapper<O>) -> Self
[src]
Construct struct from other OpWrapper
. Takes the operator from op
(replaces it with
None
) and crates a new OpWrapper
pub fn apply(&mut self, param: &O::Param) -> Result<O::Output, Error>
[src]
Calls the apply
method of op
and increments cost_func_count
.
pub fn gradient(&mut self, param: &O::Param) -> Result<O::Param, Error>
[src]
Calls the gradient
method of op
and increments gradient_func_count
.
pub fn hessian(&mut self, param: &O::Param) -> Result<O::Hessian, Error>
[src]
Calls the hessian
method of op
and increments hessian_func_count
.
pub fn jacobian(&mut self, param: &O::Param) -> Result<O::Jacobian, Error>
[src]
Calls the jacobian
method of op
and increments jacobian_func_count
.
pub fn modify(
&mut self,
param: &O::Param,
extent: O::Float
) -> Result<O::Param, Error>
[src]
&mut self,
param: &O::Param,
extent: O::Float
) -> Result<O::Param, Error>
Calls the modify
method of op
and increments modify_func_count
.
pub fn take_op(&mut self) -> Option<O>
[src]
Moves the operator out of the struct and replaces it with None
pub fn consume_op(&mut self, other: OpWrapper<O>)
[src]
Consumes an operator by increasing the function call counts of self
by the ones in
other
.
pub fn consume_func_counts<O2: ArgminOp>(&mut self, other: OpWrapper<O2>)
[src]
Adds function evaluation counts of another operator.
pub fn reset(self) -> Self
[src]
Reset the cost function counts to zero.
pub fn get_op(self) -> O
[src]
Returns the operator op
by taking ownership of self
.
Trait Implementations
impl<O: ArgminOp> ArgminOp for OpWrapper<O>
[src]
impl<O: ArgminOp> ArgminOp for OpWrapper<O>
[src]The OpWrapperArgminOp
type Param = O::Param
Type of the parameter vector
type Output = O::Output
Output of the operator
type Hessian = O::Hessian
Type of Hessian
type Jacobian = O::Jacobian
Type of Jacobian
type Float = O::Float
Precision of floats
fn apply(&self, param: &Self::Param) -> Result<Self::Output, Error>
[src]
fn gradient(&self, param: &Self::Param) -> Result<Self::Param, Error>
[src]
fn hessian(&self, param: &Self::Param) -> Result<Self::Hessian, Error>
[src]
fn jacobian(&self, param: &Self::Param) -> Result<Self::Jacobian, Error>
[src]
fn modify(
&self,
param: &Self::Param,
extent: Self::Float
) -> Result<Self::Param, Error>
[src]
&self,
param: &Self::Param,
extent: Self::Float
) -> Result<Self::Param, Error>
impl<'de, O: ArgminOp> Deserialize<'de> for OpWrapper<O> where
O: Deserialize<'de>,
[src]
impl<'de, O: ArgminOp> Deserialize<'de> for OpWrapper<O> where
O: Deserialize<'de>,
[src]fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
__D: Deserializer<'de>,
Auto Trait Implementations
impl<O> RefUnwindSafe for OpWrapper<O> where
O: RefUnwindSafe,
impl<O> RefUnwindSafe for OpWrapper<O> where
O: RefUnwindSafe,
impl<O> UnwindSafe for OpWrapper<O> where
O: UnwindSafe,
impl<O> UnwindSafe for OpWrapper<O> where
O: UnwindSafe,
Blanket Implementations
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]impl<T> SendSyncUnwindSafe for T where
T: Send + Sync + UnwindSafe + ?Sized,
[src]
impl<T> SendSyncUnwindSafe for T where
T: Send + Sync + UnwindSafe + ?Sized,
[src]impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,