Skip to main content

SecondOrderOptimizationBlock

Trait SecondOrderOptimizationBlock 

Source
pub trait SecondOrderOptimizationBlock<F, U, V, Ru, Rv, Kuu, Kvu, Kuv, Kvv> {
    // Required method
    fn minimize_block(
        &self,
        function: impl FnMut(&U, &V) -> Result<F, String>,
        residual_global: impl FnMut(&U, &V) -> Result<Ru, String>,
        residual_local: impl FnMut(&U, &V) -> Result<Rv, String>,
        tangents: impl FnMut(&U, &V) -> Result<(Kuu, Kvu, Kuv, Kvv), String>,
        initial_guess: (U, V),
        constraint_global: (CscMatrix, Vector),
        constraint_local: (CscMatrix, Vector),
        sparse: Option<SparseSolver>,
        strategy: SolveStrategy,
    ) -> Result<(U, V), OptimizationError>;
}
Expand description

Second-order optimization algorithms for problems split into global and local variables.

Required Methods§

Source

fn minimize_block( &self, function: impl FnMut(&U, &V) -> Result<F, String>, residual_global: impl FnMut(&U, &V) -> Result<Ru, String>, residual_local: impl FnMut(&U, &V) -> Result<Rv, String>, tangents: impl FnMut(&U, &V) -> Result<(Kuu, Kvu, Kuv, Kvv), String>, initial_guess: (U, V), constraint_global: (CscMatrix, Vector), constraint_local: (CscMatrix, Vector), sparse: Option<SparseSolver>, strategy: SolveStrategy, ) -> Result<(U, V), OptimizationError>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<F, U, V, Ru, Rv, Kuu, Kvu, Kuv, Kvv> SecondOrderOptimizationBlock<F, U, V, Ru, Rv, Kuu, Kvu, Kuv, Kvv> for NewtonRaphson
where F: Erase<Erased = Scalar> + Tensor, <Ru as Tensor>::Unit: UnitMul<<U as Tensor>::Unit>, <<Ru as Tensor>::Unit as UnitMul<<U as Tensor>::Unit>>::Output: UnitSum, <<<Ru as Tensor>::Unit as UnitMul<<U as Tensor>::Unit>>::Output as UnitSum>::Output: Is<<F as Tensor>::Unit>, <Rv as Tensor>::Unit: UnitMul<<V as Tensor>::Unit>, <<Rv as Tensor>::Unit as UnitMul<<V as Tensor>::Unit>>::Output: UnitSum, <<<Rv as Tensor>::Unit as UnitMul<<V as Tensor>::Unit>>::Output as UnitSum>::Output: Is<<F as Tensor>::Unit>, U: Solution, V: Solution, Ru: Jacobian, Rv: Jacobian, Kuu: HessianBlock, Kvu: HessianBlock, Kuv: HessianBlock, Kvv: HessianBlock, for<'a> &'a CscMatrix: Mul<&'a U, Output = Vector> + Mul<&'a V, Output = Vector>,