pub enum SqpHessianSource {
Exact,
DampedBfgs,
Lbfgs,
QuasiNewtonAuto,
}Expand description
Hessian source for the SQP subproblem.
Exact: usenlp.eval_h(x, 1.0, λ_g, 0)directly. Indefinite on nonconvex problems; the QP subproblem solver handles indefinite reduced Hessian via inertia control (§4.5).DampedBfgs: densen×nPowell-damped BFGS, guaranteed PSD (Powell 1978). Seecrate::sqp::bfgs::DampedBfgs.Lbfgs: limited-memory BFGS with a circular(s, y)buffer oflbfgs_max_historypairs (Nocedal-Wright §7.2; Byrd- Nocedal-Schnabel 1994). Seecrate::sqp::lbfgs::LBfgs.QuasiNewtonAuto: whathessian_approximation=limited-memoryselects —DampedBfgsup toSqpOptions::dense_hessian_max_nvariables,Lbfgsabove it, decided per solve from the problem’sn(gh#1054). The dense update is the more robust of the two on small models (issue #358) but needsn²storage and makes every QP factorization dense, which a 15 000-variable model cannot afford.
Variants§
Implementations§
Source§impl SqpHessianSource
impl SqpHessianSource
Sourcepub fn resolve(self, n: usize, dense_hessian_max_n: usize) -> Self
pub fn resolve(self, n: usize, dense_hessian_max_n: usize) -> Self
The concrete source a solve of n variables uses: resolves
QuasiNewtonAuto, passes every other source through.
Sourcepub fn is_quasi_newton(self) -> bool
pub fn is_quasi_newton(self) -> bool
Whether this source approximates the Hessian (and is therefore positive definite by construction) rather than evaluating it.
Trait Implementations§
Source§impl Clone for SqpHessianSource
impl Clone for SqpHessianSource
impl Copy for SqpHessianSource
Source§impl Debug for SqpHessianSource
impl Debug for SqpHessianSource
Source§impl Default for SqpHessianSource
impl Default for SqpHessianSource
impl Eq for SqpHessianSource
Source§impl PartialEq for SqpHessianSource
impl PartialEq for SqpHessianSource
impl StructuralPartialEq for SqpHessianSource
Auto Trait Implementations§
impl Freeze for SqpHessianSource
impl RefUnwindSafe for SqpHessianSource
impl Send for SqpHessianSource
impl Sync for SqpHessianSource
impl Unpin for SqpHessianSource
impl UnsafeUnpin for SqpHessianSource
impl UnwindSafe for SqpHessianSource
Blanket Implementations§
impl<T> Boilerplate for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T, U> Imply<T> for U
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more