Reexported API

using Optimization (or using OptimizationBase) does not only bring in the names Optimization.jl itself defines. It also re-surfaces a small, deliberately curated set of names owned by other packages, so that stating and solving a problem needs a single using. This page lists exactly what those names are and who owns them — the actual documentation for each of them lives with its owner, linked below.

Each solver package documents its own re-exported algorithm names on its page under "Optimizer Packages"; see for example Optim.jl, Optimisers.jl, NLopt.jl, Metaheuristics.jl, NLPModels.jl and Manopt.jl.

Reexported from SciMLBase

These names are owned and documented by SciMLBase.jl:

  • Problems and functions: OptimizationProblem, OptimizationFunction, MultiObjectiveOptimizationFunction
  • Solutions: OptimizationSolution, OptimizationStats
  • Solving: solve, init, solve!, remake
  • Objective sense: ObjSense, MinSense, MaxSense
  • Return status: ReturnCode, successful_retcode
  • Multistart/ensembles: EnsembleProblem, EnsembleSerial, EnsembleThreads, EnsembleDistributed
  • Derivative declaration: NoAD
  • Algorithm capability traits: allowsbounds, requiresbounds, allowsconstraints, requiresconstraints, allowscallback, requiresgradient, requireshessian, requiresconsjac, requiresconshess

Anything else from SciMLBase must be imported from SciMLBase directly.

Reexported from ADTypes

The automatic differentiation selectors are owned and documented by ADTypes.jl; see also the AD choice recommendations:

  • AutoEnzyme, AutoFiniteDiff, AutoForwardDiff, AutoMooncake, AutoReverseDiff, AutoSparse, AutoSymbolics, AutoTracker, AutoZygote

Anything else from ADTypes — the less common backends, the sparsity detectors and the coloring algorithms — must be imported from ADTypes directly.

Not reexported

SciMLOperators, SymbolicIndexingInterface, SciMLLogging and the rest of Optimization.jl's dependencies are deliberately not re-exported. Blanket-reexporting SciMLBase alone used to put 263 names into every using Optimization namespace, including problem types for equation classes Optimization.jl cannot solve. Reach those names through their owner, e.g. SciMLBase.NullParameters.