pub struct AlgorithmBuilder {Show 18 fields
pub algorithm: AlgorithmChoice,
pub linear_solver: LinearSolverChoice,
pub linear_system_scaling: LinearSystemScalingChoice,
pub linear_scaling_on_demand: bool,
pub mu_strategy: MuStrategyChoice,
pub mu_oracle: MuOracleKind,
pub hessian_approximation: HessianApproxChoice,
pub limited_memory_update_type: UpdateType,
pub line_search_method: LineSearchChoice,
pub warm_start_init_point: bool,
pub mehrotra_algorithm: bool,
pub conv_check: ConvCheckOptions,
pub mu: MuOptions,
pub line_search: LineSearchOptions,
pub output: OutputOptions,
pub warm: WarmStartOptions,
pub sqp: SqpOptions,
pub init: InitOptions,
}Fields§
§algorithm: AlgorithmChoiceTop-level algorithm dispatch. Default InteriorPoint ⇒
build_with_backend returns the existing AlgorithmBundle
(consumed by IpoptAlgorithm). ActiveSetSqp ⇒ caller
must use build_sqp_with_backend to assemble the Phase 5b
SqpAlgorithm. The two builder methods sit side by side
because the assembled algorithm shape differs (IPM bundle
vs SQP struct).
linear_solver: LinearSolverChoice§linear_system_scaling: LinearSystemScalingChoiceSymmetric scaling method for the augmented KKT system. Wired
into TSymLinearSolver by Self::build_with_backend.
Mirrors upstream linear_system_scaling (IpAlgBuilder.cpp:538-560).
linear_scaling_on_demand: boolLazy-vs-eager scaling toggle (linear_scaling_on_demand,
IpTSymLinearSolver.cpp:50-58). Only consulted when
linear_system_scaling != None. Upstream default is true
(compute scaling only on the first solve that fails / shows
poor conditioning); pounce mirrors that. Set to false to
scale every factorization.
mu_strategy: MuStrategyChoice§mu_oracle: MuOracleKindSelector forwarded to AdaptiveMuUpdate when
mu_strategy = Adaptive. Ignored for Monotone. Defaults to
QualityFunction per upstream’s RegisterOptions default.
hessian_approximation: HessianApproxChoice§limited_memory_update_type: UpdateType§line_search_method: LineSearchChoice§warm_start_init_point: bool§mehrotra_algorithm: boolmehrotra_algorithm — when true, PdSearchDirCalc folds
the Mehrotra second-order complementarity term into the
search-direction RHS. Mirrors upstream’s
IpAlgBuilder.cpp:Mehrotra flag. Requires mu_strategy = Adaptive so that an affine step is computed each iteration;
Self::build_with_backend does not enforce this — the
option-parser in application.rs is responsible for the
cascading defaults (mu_oracle = probing etc.).
conv_check: ConvCheckOptions§mu: MuOptions§line_search: LineSearchOptions§output: OutputOptions§warm: WarmStartOptions§sqp: SqpOptionsSQP-specific options (consulted only when
algorithm = ActiveSetSqp).
init: InitOptionsImplementations§
Source§impl AlgorithmBuilder
impl AlgorithmBuilder
pub fn new() -> Self
Sourcepub fn build(&self) -> AlgorithmBundle
pub fn build(&self) -> AlgorithmBundle
Assemble the strategy bundle without a search-direction calculator. Used by structural unit tests that don’t want to pull in a linear-solver backend.
Sourcepub fn build_with_backend(
&self,
factory: LinearBackendFactory,
) -> AlgorithmBundle
pub fn build_with_backend( &self, factory: LinearBackendFactory, ) -> AlgorithmBundle
Same as Self::build but also constructs the
SymLinearSolver → AugSystemSolver → PdFullSpaceSolver → PdSearchDirCalc chain via the supplied factory.
Sourcepub fn build_sqp_with_backend(
&self,
factory: LinearBackendFactory,
) -> Option<SqpAlgorithm>
pub fn build_sqp_with_backend( &self, factory: LinearBackendFactory, ) -> Option<SqpAlgorithm>
Phase 5b assembly path for the SQP algorithm. Consults
self.algorithm: when ActiveSetSqp, constructs an
SqpAlgorithm using the supplied backend factory for the
QP subproblem solver; otherwise returns None so the
caller can fall back to the IPM build_with_backend.
Sister to build_with_backend: the SQP algorithm doesn’t
share AlgorithmBundle’s shape (no mu_update / no IPM
line search), so the two paths return different types.
Trait Implementations§
Source§impl Clone for AlgorithmBuilder
impl Clone for AlgorithmBuilder
Source§fn clone(&self) -> AlgorithmBuilder
fn clone(&self) -> AlgorithmBuilder
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AlgorithmBuilder
impl Debug for AlgorithmBuilder
Auto Trait Implementations§
impl Freeze for AlgorithmBuilder
impl RefUnwindSafe for AlgorithmBuilder
impl Send for AlgorithmBuilder
impl Sync for AlgorithmBuilder
impl Unpin for AlgorithmBuilder
impl UnsafeUnpin for AlgorithmBuilder
impl UnwindSafe for AlgorithmBuilder
Blanket Implementations§
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
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>
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>
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