Struct argmin::solver::trustregion::TrustRegion
source · [−]pub struct TrustRegion<R, F> { /* private fields */ }
Expand description
Trust region method
The trust region method approximates the cost function within a certain region around the current point in parameter space. Depending on the quality of this approximation, the region is either expanded or contracted.
The calculation of the actual step length and direction is performed by a method which
implements TrustRegionRadius
, such as:
Requirements on the optimization problem
The optimization problem is required to implement CostFunction
, Gradient
and
Hessian
.
Reference
Jorge Nocedal and Stephen J. Wright (2006). Numerical Optimization. Springer. ISBN 0-387-30303-0.
Implementations
sourceimpl<R, F> TrustRegion<R, F> where
F: ArgminFloat,
impl<R, F> TrustRegion<R, F> where
F: ArgminFloat,
sourcepub fn new(subproblem: R) -> Self
pub fn new(subproblem: R) -> Self
Construct a new instance of TrustRegion
Example
use argmin::solver::trustregion::{CauchyPoint, TrustRegion};
let cp: CauchyPoint<f64> = CauchyPoint::new();
let tr: TrustRegion<_, f64> = TrustRegion::new(cp);
sourcepub fn with_radius(self, radius: F) -> Result<Self, Error>
pub fn with_radius(self, radius: F) -> Result<Self, Error>
Set radius
Defaults to 1.0
.
Example
let cp: CauchyPoint<f64> = CauchyPoint::new();
let tr: TrustRegion<_, f64> = TrustRegion::new(cp).with_radius(0.8)?;
sourcepub fn with_max_radius(self, max_radius: F) -> Result<Self, Error>
pub fn with_max_radius(self, max_radius: F) -> Result<Self, Error>
Set maximum radius
Defaults to 100.0
.
Example
let cp: CauchyPoint<f64> = CauchyPoint::new();
let tr: TrustRegion<_, f64> = TrustRegion::new(cp).with_max_radius(1000.0)?;
Trait Implementations
sourceimpl<R: Clone, F: Clone> Clone for TrustRegion<R, F>
impl<R: Clone, F: Clone> Clone for TrustRegion<R, F>
sourcefn clone(&self) -> TrustRegion<R, F>
fn clone(&self) -> TrustRegion<R, F>
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl<'de, R, F> Deserialize<'de> for TrustRegion<R, F> where
R: Deserialize<'de>,
F: Deserialize<'de>,
impl<'de, R, F> Deserialize<'de> for TrustRegion<R, F> where
R: 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<R, F> Serialize for TrustRegion<R, F> where
R: Serialize,
F: Serialize,
impl<R, F> Serialize for TrustRegion<R, F> where
R: Serialize,
F: Serialize,
sourceimpl<O, R, F, P, G, H> Solver<O, IterState<P, G, (), H, F>> for TrustRegion<R, F> where
O: CostFunction<Param = P, Output = F> + Gradient<Param = P, Gradient = G> + Hessian<Param = P, Hessian = H>,
P: Clone + Debug + SerializeAlias + DeserializeOwnedAlias + ArgminL2Norm<F> + ArgminDot<P, F> + ArgminDot<G, F> + ArgminAdd<P, P>,
G: Clone + SerializeAlias + DeserializeOwnedAlias,
H: Clone + SerializeAlias + DeserializeOwnedAlias + ArgminDot<P, P>,
R: Clone + TrustRegionRadius<F> + Solver<O, IterState<P, G, (), H, F>>,
F: ArgminFloat,
impl<O, R, F, P, G, H> Solver<O, IterState<P, G, (), H, F>> for TrustRegion<R, F> where
O: CostFunction<Param = P, Output = F> + Gradient<Param = P, Gradient = G> + Hessian<Param = P, Hessian = H>,
P: Clone + Debug + SerializeAlias + DeserializeOwnedAlias + ArgminL2Norm<F> + ArgminDot<P, F> + ArgminDot<G, F> + ArgminAdd<P, P>,
G: Clone + SerializeAlias + DeserializeOwnedAlias,
H: Clone + SerializeAlias + DeserializeOwnedAlias + ArgminDot<P, P>,
R: Clone + TrustRegionRadius<F> + Solver<O, IterState<P, G, (), H, F>>,
F: ArgminFloat,
sourcefn init(
&mut self,
problem: &mut Problem<O>,
state: IterState<P, G, (), H, F>
) -> Result<(IterState<P, G, (), H, F>, Option<KV>), Error>
fn init(
&mut self,
problem: &mut Problem<O>,
state: IterState<P, G, (), H, F>
) -> Result<(IterState<P, G, (), H, F>, Option<KV>), Error>
Initializes the algorithm. Read more
sourcefn next_iter(
&mut self,
problem: &mut Problem<O>,
state: IterState<P, G, (), H, F>
) -> Result<(IterState<P, G, (), H, F>, Option<KV>), Error>
fn next_iter(
&mut self,
problem: &mut Problem<O>,
state: IterState<P, G, (), H, F>
) -> Result<(IterState<P, G, (), H, F>, Option<KV>), Error>
sourcefn terminate(&mut self, _state: &IterState<P, G, (), H, F>) -> TerminationReason
fn terminate(&mut self, _state: &IterState<P, G, (), 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
Auto Trait Implementations
impl<R, F> RefUnwindSafe for TrustRegion<R, F> where
F: RefUnwindSafe,
R: RefUnwindSafe,
impl<R, F> Send for TrustRegion<R, F> where
F: Send,
R: Send,
impl<R, F> Sync for TrustRegion<R, F> where
F: Sync,
R: Sync,
impl<R, F> Unpin for TrustRegion<R, F> where
F: Unpin,
R: Unpin,
impl<R, F> UnwindSafe for TrustRegion<R, F> where
F: UnwindSafe,
R: 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