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, }
Expand description
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_from_wrapper(op: &mut OpWrapper<O>) -> Self
[src]
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]
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]
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]
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]
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]
pub fn modify(
&mut self,
param: &O::Param,
extent: O::Float
) -> Result<O::Param, Error>
[src]Calls the modify
method of op
and increments modify_func_count
.
pub fn take_op(&mut self) -> Option<O>
[src]
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]
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]
pub fn consume_func_counts<O2: ArgminOp>(&mut self, other: OpWrapper<O2>)
[src]Adds function evaluation counts of another operator.
Trait Implementations
impl<O: ArgminOp> ArgminOp for OpWrapper<O>
[src]
impl<O: ArgminOp> ArgminOp for OpWrapper<O>
[src]The OpWrapperArgminOp
fn apply(&self, param: &Self::Param) -> Result<Self::Output, Error>
[src]
fn apply(&self, param: &Self::Param) -> Result<Self::Output, Error>
[src]Applies the operator/cost function to parameters
fn gradient(&self, param: &Self::Param) -> Result<Self::Param, Error>
[src]
fn gradient(&self, param: &Self::Param) -> Result<Self::Param, Error>
[src]Computes the gradient at the given parameters
fn hessian(&self, param: &Self::Param) -> Result<Self::Hessian, Error>
[src]
fn hessian(&self, param: &Self::Param) -> Result<Self::Hessian, Error>
[src]Computes the Hessian at the given parameters
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]
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations
impl<O> RefUnwindSafe for OpWrapper<O> where
O: RefUnwindSafe,
O: RefUnwindSafe,
impl<O> Send for OpWrapper<O> where
O: Send,
O: Send,
impl<O> Sync for OpWrapper<O> where
O: Sync,
O: Sync,
impl<O> Unpin for OpWrapper<O> where
O: Unpin,
O: Unpin,
impl<O> UnwindSafe for OpWrapper<O> where
O: UnwindSafe,
O: UnwindSafe,
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<T> ToOwned for T where
T: Clone,
[src]
impl<T> ToOwned for T where
T: Clone,
[src]type Owned = T
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn to_owned(&self) -> T
[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)
[src]
pub fn clone_into(&self, target: &mut T)
[src]🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
pub fn vzip(self) -> V
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]
T: for<'de> Deserialize<'de>,
impl<T> SendSyncUnwindSafe for T where
T: Send + Sync + UnwindSafe + ?Sized,
[src]
T: Send + Sync + UnwindSafe + ?Sized,