Click or drag to resize
Accord.NET (logo)

Accord.Math.Optimization Namespace

Contains classes for constrained and unconstrained optimization. Includes Conjugate Gradient (CG), Bounded and Unbounded Broyden–Fletcher–Goldfarb–Shanno (BFGS), gradient-free optimization methods such as Cobyla and the Goldfarb-Idnani solver for Quadratic Programming (QP) problems.
Classes
  ClassDescription
Public classCode exampleAugmentedLagrangian
Augmented Lagrangian method for constrained non-linear optimization.
Public classBaseGradientOptimizationMethod
Base class for gradient-based optimization methods.
Public classBaseLeastSquaresMethod
Base class for least-squares optimizers implementing the ILeastSquaresMethod interface.
Public classBaseOptimizationMethod
Base class for optimization methods.
Public classBinarySearch
Binary search root finding algorithm.
Public classCode exampleBoundedBroydenFletcherGoldfarbShanno
Limited-memory Broyden–Fletcher–Goldfarb–Shanno (L-BFGS) optimization method.
Public classBoundedBroydenFletcherGoldfarbShannoInnerStatus
Inner status of the BoundedBroydenFletcherGoldfarbShanno optimization algorithm. This class contains implementation details that can change at any time.
Public classCode exampleBrentSearch
Brent's root finding and minimization algorithms.
Public classCode exampleBroydenFletcherGoldfarbShanno
Limited-memory Broyden–Fletcher–Goldfarb–Shanno (L-BFGS) optimization method.
Public classCode exampleCobyla
Constrained optimization by linear approximation.
Public classConjugateGradient
Conjugate Gradient (CG) optimization method.
Public classFanChenLinQuadraticOptimization
General Sequential Minimal Optimization algorithm for Quadratic Programming problems.
Public classGaussNewton
Gauss-Newton algorithm for solving Least-Squares problems.
Public classCode exampleGoldfarbIdnani
Goldfarb-Idnani Quadratic Programming Solver.
Public classGradientDescent
Gradient Descent (GD) for unconstrained optimization.
Public classLevenbergMarquardt
Levenberg-Marquardt algorithm for solving Least-Squares problems.
Public classLinearConstraint
Constraint with only linear terms.
Public classLinearConstraintCollection
Linear Constraint Collection.
Public classLineSearchFailedException
Line Search Failed Exception.
Public classCode exampleMunkres
Hungarian method for solving the assignment problem, also known as the Kuhn–Munkres algorithm or Munkres assignment algorithm.
Public classNelderMead
Nelder-Mead simplex algorithm with support for bound constraints for non-linear, gradient-free optimization.
Public classNonlinearConjugateGradient
Non-linear Conjugate Gradient (WARNING: This code can not be used for commercial purposes. It is MANDATORY to check the accompanying license file for this particular module AND the source code for more details before you use this code).
Public classNonlinearConstraint
Constraint with only linear terms.
Public classNonlinearObjectiveFunction
Quadratic objective function.
Public classOptimizationProgressEventArgs
Optimization progress event arguments.
Public classQuadraticConstraint
Constraint with only quadratic terms.
Public classCode exampleQuadraticObjectiveFunction
Quadratic objective function.
Public classResilientBackpropagation
Resilient Backpropagation method for unconstrained optimization.
Public classSubplex
Subplex
Public classTrustRegionNewtonMethod
Simplified Trust Region Newton Method (TRON) for non-linear optimization.
Interfaces
  InterfaceDescription
Public interfaceIFunctionOptimizationMethodTInput, TOutput
Common interface for function optimization methods.
Public interfaceIGradientOptimizationMethod
Common interface for function optimization methods which depend on having both an objective function and a gradient function definition available.
Public interfaceIGradientOptimizationMethodTInput, TOutput
Common interface for function optimization methods which depend on having both an objective function and a gradient function definition available.
Public interfaceILeastSquaresMethod
Common interface for Least Squares algorithms, i.e. algorithms that can be used to solve Least Squares optimization problems.
Public interfaceIObjectiveFunction
Common interface for specifying objective functions.
Public interfaceIOptimizationMethod
Common interface for function optimization methods.
Public interfaceIOptimizationMethodTCode
Common interface for function optimization methods.
Public interfaceIOptimizationMethodTInput, TOutput
Common interface for function optimization methods.
Public interfaceIOptimizationMethodTInput, TOutput, TCode
Common interface for function optimization methods.
Delegates
  DelegateDescription
Public delegateLeastSquaresFunction
Least Squares function delegate.
Public delegateLeastSquaresGradientFunction
Gradient function delegate.
Enumerations
  EnumerationDescription
Public enumerationAugmentedLagrangianStatus
Status codes for the AugmentedLagrangian optimization algorithm.
Public enumerationBoundedBroydenFletcherGoldfarbShannoStatus
Status codes for the BoundedBroydenFletcherGoldfarbShanno function optimizer.
Public enumerationBroydenFletcherGoldfarbShannoStatus
Status codes for the BroydenFletcherGoldfarbShanno function optimizer.
Public enumerationCobylaStatus
Cobyla exit codes.
Public enumerationConjugateGradientCode
Conjugate Gradient exit codes.
Public enumerationConjugateGradientMethod
Conjugate gradient direction update formula.
Public enumerationConstraintType
Constraint type.
Public enumerationGoldfarbIdnaniStatus
Status codes for the GoldfarbIdnani constrained quadratic programming solver.
Public enumerationLineSearch
Line search algorithms.
Public enumerationNelderMeadStatus
NelderMead exit codes.
Remarks

This namespace contains different methods for solving both constrained and unconstrained optimization problems. For unconstrained optimization, methods available include Conjugate Gradient (CG), Bounded and Unbounded Broyden–Fletcher–Goldfarb–Shanno (BFGS), Resilient Backpropagation and a simplified implementation of the Trust Region Newton Method (TRON).

For constrained optimization problems, methods available include the Augmented Lagrangian method for general non-linear optimization, Cobyla for gradient-free non-linear optimization, and the Goldfarb-Idnani method for solving Quadratic Programming (QP) problems.

This namespace also contains optimizers specialized for least squares problems, such as Gauss Newton and the Levenberg-Marquart least squares solvers.

For univariate problems, standard search algorithms are also available, such as Brent and Binary search.

The namespace class diagram is shown below.

See Also