pub trait SecondOrderOptimizationIncremental<F, J, H, X> {
// Required method
fn minimize_incremental(
&self,
function: impl FnMut(&X) -> Result<F, String>,
jacobian: impl FnMut(&X) -> Result<J, String>,
hessian: impl FnMut(&X) -> Result<H, String>,
update: impl FnMut(&X, &Vector, Scalar, bool) -> Result<(), String>,
initial_guess: X,
equality_constraint: EqualityConstraint,
sparse: Option<SparseSolver>,
) -> Result<X, OptimizationError>;
}Expand description
Second-order optimization algorithms that hand out each increment before applying it.
The counterpart of FirstOrderRootFindingIncremental for problems with an
energy to descend, and the increment is lent on the same terms.
What the line search measures is the energy of the whole state, eliminated variables included. Each trial is offered through the same update, so the eliminated variables are already standing where the trial puts them by the time the energy there is asked for.
Required Methods§
fn minimize_incremental( &self, function: impl FnMut(&X) -> Result<F, String>, jacobian: impl FnMut(&X) -> Result<J, String>, hessian: impl FnMut(&X) -> Result<H, String>, update: impl FnMut(&X, &Vector, Scalar, bool) -> Result<(), String>, initial_guess: X, equality_constraint: EqualityConstraint, 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".