pub struct Steihaug<P, F> { /* private fields */ }
Expand description
Steihaug method
The Steihaug method is a conjugate gradients based approach for finding an approximate solution to the second order approximation of the cost function within the trust region.
Reference
Jorge Nocedal and Stephen J. Wright (2006). Numerical Optimization. Springer. ISBN 0-387-30303-0.
Implementations
sourceimpl<P, F> Steihaug<P, F> where
P: ArgminMul<F, P> + ArgminDot<P, F> + ArgminAdd<P, P>,
F: ArgminFloat,
impl<P, F> Steihaug<P, F> where
P: ArgminMul<F, P> + ArgminDot<P, F> + ArgminAdd<P, P>,
F: ArgminFloat,
sourcepub fn with_epsilon(self, epsilon: F) -> Result<Self, Error>
pub fn with_epsilon(self, epsilon: F) -> Result<Self, Error>
Set epsilon
The algorithm stops when the residual is smaller than epsilon
.
Must be larger than 0 and defaults to 10^-10.
Example
let sh: Steihaug<Vec<f64>, f64> = Steihaug::new().with_epsilon(10e-9)?;
sourcepub fn with_max_iters(self, iters: u64) -> Self
pub fn with_max_iters(self, iters: u64) -> Self
Set maximum number of iterations
The algorithm stops after iter
iterations.
Defaults to u64::MAX
.
Example
let sh: Steihaug<Vec<f64>, f64> = Steihaug::new().with_max_iters(100);
Trait Implementations
sourceimpl<'de, P, F> Deserialize<'de> for Steihaug<P, F> where
P: Deserialize<'de>,
F: Deserialize<'de>,
impl<'de, P, F> Deserialize<'de> for Steihaug<P, F> where
P: Deserialize<'de>,
F: Deserialize<'de>,
sourcefn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl<P, O, F, H> Solver<O, IterState<P, P, (), H, F>> for Steihaug<P, F> where
P: Clone + SerializeAlias + ArgminMul<F, P> + ArgminNorm<F> + ArgminDot<P, F> + ArgminAdd<P, P> + ArgminZeroLike,
H: ArgminDot<P, P>,
F: ArgminFloat,
impl<P, O, F, H> Solver<O, IterState<P, P, (), H, F>> for Steihaug<P, F> where
P: Clone + SerializeAlias + ArgminMul<F, P> + ArgminNorm<F> + ArgminDot<P, F> + ArgminAdd<P, P> + ArgminZeroLike,
H: ArgminDot<P, P>,
F: ArgminFloat,
sourcefn init(
&mut self,
_problem: &mut Problem<O>,
state: IterState<P, P, (), H, F>
) -> Result<(IterState<P, P, (), H, F>, Option<KV>), Error>
fn init(
&mut self,
_problem: &mut Problem<O>,
state: IterState<P, P, (), H, F>
) -> Result<(IterState<P, P, (), H, F>, Option<KV>), Error>
Initializes the algorithm. Read more
sourcefn next_iter(
&mut self,
_problem: &mut Problem<O>,
state: IterState<P, P, (), H, F>
) -> Result<(IterState<P, P, (), H, F>, Option<KV>), Error>
fn next_iter(
&mut self,
_problem: &mut Problem<O>,
state: IterState<P, P, (), H, F>
) -> Result<(IterState<P, P, (), H, F>, Option<KV>), Error>
sourcefn terminate(&mut self, state: &IterState<P, P, (), H, F>) -> TerminationReason
fn terminate(&mut self, state: &IterState<P, P, (), H, F>) -> TerminationReason
Used to implement stopping criteria, in particular criteria which are not covered by
(terminate_internal
. Read more
sourcefn terminate_internal(&mut self, state: &I) -> TerminationReason
fn terminate_internal(&mut self, state: &I) -> TerminationReason
Checks whether basic termination reasons apply. Read more
sourceimpl<P, F: ArgminFloat> TrustRegionRadius<F> for Steihaug<P, F>
impl<P, F: ArgminFloat> TrustRegionRadius<F> for Steihaug<P, F>
sourcefn set_radius(&mut self, radius: F)
fn set_radius(&mut self, radius: F)
Set current radius.
Needed by TrustRegion
.
Example
use argmin::solver::trustregion::{Steihaug, TrustRegionRadius};
let mut sh: Steihaug<Vec<f64>, f64> = Steihaug::new();
sh.set_radius(0.8);
Auto Trait Implementations
impl<P, F> RefUnwindSafe for Steihaug<P, F> where
F: RefUnwindSafe,
P: RefUnwindSafe,
impl<P, F> Send for Steihaug<P, F> where
F: Send,
P: Send,
impl<P, F> Sync for Steihaug<P, F> where
F: Sync,
P: Sync,
impl<P, F> Unpin for Steihaug<P, F> where
F: Unpin,
P: Unpin,
impl<P, F> UnwindSafe for Steihaug<P, F> where
F: UnwindSafe,
P: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more