Skip to main content

Optimization

Trait Optimization 

Source
pub trait Optimization<F, J, H, X> {
    // Required method
    fn minimize(
        &self,
        function: impl FnMut(&X) -> Result<F, String>,
        jacobian: impl FnMut(&X) -> Result<J, String>,
        hessian: impl FnMut(&X) -> Result<H, String>,
        initial_guess: X,
        equality_constraint: EqualityConstraints,
        sparse: Option<SparseSolver>,
    ) -> Result<X, OptimizationError>;
}
Expand description

Optimization algorithms, where a Hessian of () is one the solver does not use.

Required Methods§

Source

fn minimize( &self, function: impl FnMut(&X) -> Result<F, String>, jacobian: impl FnMut(&X) -> Result<J, String>, hessian: impl FnMut(&X) -> Result<H, String>, initial_guess: X, equality_constraint: EqualityConstraints, sparse: Option<SparseSolver>, ) -> Result<X, OptimizationError>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl<L, S, F, J, H, X, E> Optimization<F, J, H, X> for NewtonRaphson<L, S>
where S: ObjectiveMerit, L: LinearSolver<Tangent = H>, F: Erase<Erased = Scalar> + Tensor, <J as Tensor>::Unit: UnitMul<<X as Tensor>::Unit>, <<J as Tensor>::Unit as UnitMul<<X as Tensor>::Unit>>::Output: UnitSum, <<<J as Tensor>::Unit as UnitMul<<X as Tensor>::Unit>>::Output as UnitSum>::Output: Is<<F as Tensor>::Unit>, J: Jacobian + Erase<Erased = E>, X: Erase<Erased = E> + Solution, E: Tensor, <X as Tensor>::Unit: UnitRatio, for<'a> &'a X: Mul<StepSize<X, X>, Output = X>,

Source§

impl<S, F, J, H, X, E> Optimization<F, J, H, X> for NewtonRaphson<Direct, S>
where S: ObjectiveMerit, F: Erase<Erased = Scalar> + Tensor, <J as Tensor>::Unit: UnitMul<<X as Tensor>::Unit>, <<J as Tensor>::Unit as UnitMul<<X as Tensor>::Unit>>::Output: UnitSum, <<<J as Tensor>::Unit as UnitMul<<X as Tensor>::Unit>>::Output as UnitSum>::Output: Is<<F as Tensor>::Unit>, H: Hessian, J: Jacobian + Erase<Erased = E>, for<'a> &'a J: Div<H, Output = X>, X: Erase<Erased = E> + Solution, E: Tensor, <X as Tensor>::Unit: UnitRatio, for<'a> &'a X: Mul<StepSize<X, X>, Output = X> + Mul<Scalar, Output = X>, for<'a> &'a Matrix: Mul<&'a X, Output = Vector>, for<'a> &'a CscMatrix: Mul<&'a X, Output = Vector>,

Source§

impl<S, Q, F, J, X, E> Optimization<F, J, (), X> for GradientDescent<S, Q>
where S: ObjectiveMerit, Q: StepEstimator, F: Erase<Erased = Scalar> + Tensor, <J as Tensor>::Unit: UnitMul<<X as Tensor>::Unit>, <<J as Tensor>::Unit as UnitMul<<X as Tensor>::Unit>>::Output: UnitSum, <<<J as Tensor>::Unit as UnitMul<<X as Tensor>::Unit>>::Output as UnitSum>::Output: Is<<F as Tensor>::Unit>, J: Erase<Erased = E> + Jacobian + Mul<StepSize<J, X>, Output = X>, for<'a> &'a J: Mul<StepSize<J, X>, Output = X>, X: Erase<Erased = E> + Jacobian + Solution, <X as Tensor>::Unit: UnitDiv<<J as Tensor>::Unit>, E: Tensor, for<'a> &'a Matrix: Mul<&'a X, Output = Vector>,