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.


op: Option<O>


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


impl<O: ArgminOp> OpWrapper<O>[src]

pub fn new(op: 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]

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>

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]

The OpWrapper should behave just like any other ArgminOp

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

impl<O: Clone + ArgminOp> Clone for OpWrapper<O>[src]

impl<O: Debug + ArgminOp> Debug for OpWrapper<O>[src]

impl<O: Default + ArgminOp> Default for OpWrapper<O>[src]

impl<'de, O: ArgminOp> Deserialize<'de> for OpWrapper<O> where
    O: Deserialize<'de>, 

impl<O: ArgminOp> Serialize for OpWrapper<O> where
    O: Serialize

Auto Trait Implementations

impl<O> RefUnwindSafe for OpWrapper<O> where
    O: RefUnwindSafe

impl<O> Send for OpWrapper<O> where
    O: Send

impl<O> Sync for OpWrapper<O> where
    O: Sync

impl<O> Unpin for OpWrapper<O> where
    O: Unpin

impl<O> UnwindSafe for OpWrapper<O> where
    O: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized

impl<T> Borrow<T> for T where
    T: ?Sized

impl<T> BorrowMut<T> for T where
    T: ?Sized

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<SS, SP> SupersetOf<SS> for SP where
    SS: SubsetOf<SP>, 

impl<T> ToOwned for T where
    T: Clone

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 

impl<T> SendSyncUnwindSafe for T where
    T: Send + Sync + UnwindSafe + ?Sized