Expand description
Framework: traits, state shapes, the iteration driver, and the termination layer. The slot taxonomy is:
problem: what the user implements about their objective:CostFunction,Gradient,MiniBatchGradient(finite-sum, for mini-batch SGD),Residual/Jacobian(least squares), andHessian(second order). Future: operators (matrix-free).numdiff: finite-difference derivative synthesis: theFiniteDiffwrapper addsGradient/Jacobian/Hessianto a problem that only exposes function values.constraint: constraint markers carried on the problem (tenet 4 inCONTRIBUTING.md):BoxConstraints,LinearInequalityConstraints,LinearEqualityConstraints, and the general-formLinearConstraintsaggregator consumed by LINCOA.barrier: theLogBarrieradapter that rewrites a linearly-constrained problem as the unconstrained log-barrier objective consumed by theBarrierMethod.state: what a solver carries between iterations:Statefor the minimum,GradientState/SimplexStatewhen a solver carries richer info that termination criteria can read.solver: theSolvertrait every concrete solver implements. Lifecycle isinitonce, then repeatednext_iter, with an optionalterminatehook.termination: the framework-levelTerminationCriteriontrait plus shipped criteria. Each criterion bounds on the minimum state shape it needs (tenet 3), so mismatches are compile errors rather than runtime no-ops.observer: read-only side-effect hooks fired around the loop (Observe+ObserverMode). Sibling totermination: observers watch, criteria decide.executor: the driver:Executor/Stepper/run_loop. The canonical iteration ordering is documented on theexecutormodule.inner: the composition adapter:InnerExecutorwrapsrun_loopfor outer solvers that drive an inner solver per outer iteration. SeeCONTRIBUTING.md“Solver composition” for the contracts.math: the small shared math layer (ScaledAdd,NormSquared, …) that backend-generic solvers depend on. Per tenet 5, this stays honest: only ops every backend can implement well live here. LA-heavy ops will live in a separate tier when the first solver wants them.
Modules§
- augmented_
lagrangian - Augmented-Lagrangian adapter for linear equality constraints.
- barrier
- Log-barrier adapter for linear inequality constraints.
- constraint
- Constraint markers carried on the problem (tenet 4 in
CONTRIBUTING.md).BoxConstraints(interval bounds, consumed by projection-based solvers),LinearInequalityConstraints(A x ≤ b, consumed by the log-barrier method),LinearEqualityConstraints(A x = b, consumed by the augmented-Lagrangian method), andNonlinearInequalityConstraints(c(x) ≤ 0for an arbitrary vector-valuedc, consumed by COBYLA). - executor
- Iteration driver. The high-level entry point is
Executor;Stepperexposes one-iteration-at-a-time control, andrun_loopis the borrowed-problem variant used by composed solvers. - inner
- Composition adapter: drive an inner solver from inside an outer
solver’s
next_iter. - math
- Math abstraction the solvers depend on.
- numdiff
- Finite-difference derivative synthesis.
- observer
- Read-only side effects fired around the iteration loop.
- problem
- Problem traits the user implements about their objective. Solvers
bind on whichever subset they need (e.g. gradient descent requires
CostFunctionandGradient; Nelder-Mead only needsCostFunction). - rng
- Seedable, wasm-safe RNG used by stochastic solvers.
- solver
- The
Solvertrait every concrete solver implements. See the trait contract for the lifecycle (initonce, then repeatednext_iter, with an optionalterminatehook) and theexecutormodule for the canonical iteration ordering. - state
- Solver state shapes.
- termination
- Termination layer: the
TerminationCriteriontrait and the framework-level criteria solvers can be terminated by. Each criterion bounds on the minimum state shape it needs (tenet 3 inCONTRIBUTING.md), so mismatches are compile errors rather than runtime no-ops.