Skip to main content

Crate basin

Crate basin 

Source
Expand description

basin — a numerical optimization library.

The framework lives in core: problem traits the user implements (CostFunction, Gradient, BoxConstrained), state shapes solvers iterate over (State, GradientState, SimplexState), the Solver trait, and a pluggable termination layer (TerminationCriterion). Concrete solvers are in solver; line searches in line_search.

Start at Executor for the user-facing driver, or core for the trait taxonomy and the iteration-loop contract.

See AGENTS.md at the repo root for the design tenets that shape these APIs (notably tenet 3 on framework-level termination, tenet 4 on first-class constraints, and tenet 5 on backend tiering).

Re-exports§

pub use crate::core::constraint::BoxConstrained;
pub use crate::core::executor::run_loop;
pub use crate::core::executor::Executor;
pub use crate::core::executor::OptimizationResult;
pub use crate::core::executor::StepOutcome;
pub use crate::core::executor::Stepper;
pub use crate::core::inner::InnerExecutor;
pub use crate::core::math::AddDiagonalInPlace;
pub use crate::core::math::AddDiagonalVectorInPlace;
pub use crate::core::math::BoxAffineScaling;
pub use crate::core::math::ClampInPlace;
pub use crate::core::math::Dot;
pub use crate::core::math::GramMatrix;
pub use crate::core::math::LinearSolveError;
pub use crate::core::math::LinearSolveSpd;
pub use crate::core::math::MatTransposeVec;
pub use crate::core::math::MatVec;
pub use crate::core::math::MaxDiagonal;
pub use crate::core::math::NegInPlace;
pub use crate::core::math::NormInfinity;
pub use crate::core::math::NormSquared;
pub use crate::core::math::SampleUniformBox;
pub use crate::core::math::ScaledAdd;
pub use crate::core::problem::CostFunction;
pub use crate::core::problem::Gradient;
pub use crate::core::problem::Jacobian;
pub use crate::core::problem::Residual;
pub use crate::core::solver::Solver;
pub use crate::core::state::BasicPopulationState;
pub use crate::core::state::BasicSimplexState;
pub use crate::core::state::BasicState;
pub use crate::core::state::GradientState;
pub use crate::core::state::IntoInitialSimplex;
pub use crate::core::state::LbfgsState;
pub use crate::core::state::PopulationState;
pub use crate::core::state::SimplexState;
pub use crate::core::state::State;
pub use crate::core::termination::CostTolerance;
pub use crate::core::termination::GradientTolerance;
pub use crate::core::termination::MaxCostEvals;
pub use crate::core::termination::MaxGradientEvals;
pub use crate::core::termination::MaxIter;
pub use crate::core::termination::MaxTime;
pub use crate::core::termination::ParamTolerance;
pub use crate::core::termination::ProjectedGradientTolerance;
pub use crate::core::termination::RelativeCostTolerance;
pub use crate::core::termination::RelativeGradientTolerance;
pub use crate::core::termination::RelativeParamTolerance;
pub use crate::core::termination::SimplexTolerance;
pub use crate::core::termination::TerminationCriterion;
pub use crate::core::termination::TerminationReason;
pub use crate::line_search::Backtracking;
pub use crate::line_search::Constant;
pub use crate::line_search::LineSearch;
pub use crate::line_search::LineSearchResult;
pub use crate::line_search::MoreThuente;
pub use crate::line_search::Wolfe;
pub use crate::solver::lbfgs::LBFGS;
pub use crate::solver::lbfgs::LBFGSB;
pub use crate::solver::BoundedCmaEs;
pub use crate::solver::BoundedCmaInject;
pub use crate::solver::Brent;
pub use crate::solver::ClosureInner;
pub use crate::solver::CmaEs;
pub use crate::solver::CmaInject;
pub use crate::solver::GaussNewton;
pub use crate::solver::GradientDescent;
pub use crate::solver::LevenbergMarquardt;
pub use crate::solver::MaLsChCma;
pub use crate::solver::MaLsChState;
pub use crate::solver::MemeticInner;
pub use crate::solver::NelderMead;
pub use crate::solver::ProjectedGradientDescent;
pub use crate::solver::RandomSearch;
pub use crate::solver::Ssga;
pub use crate::solver::Trf;

Modules§

core
Framework: traits, state shapes, the iteration driver, and the termination layer. The slot taxonomy is:
line_search
Line searches: produce a step size α along a caller-supplied descent direction. Used by first-order solvers (gradient descent, BFGS).
problems
Catalogue of test problems used by the example tests and benchmarks. Standard optimization test problems.
solver
Concrete solver implementations.