Click or drag to resize

ContinuousOptimization Class

Provides methods for minimizing or maximizing a function.
Inheritance Hierarchy
SystemObject
  Novacta.AnalyticsContinuousOptimization

Namespace:  Novacta.Analytics
Assembly:  Novacta.Analytics (in Novacta.Analytics.dll) Version: 2.0.0
Syntax
public static class ContinuousOptimization
Methods
  NameDescription
Public methodStatic memberMaximize(FuncDoubleMatrix, Double, DoubleMatrix)
Finds the maximum of the specified objective function.
Public methodStatic memberCode exampleMaximizeTFunctionParameter(FuncDoubleMatrix, TFunctionParameter, Double, DoubleMatrix, TFunctionParameter)
Finds the maximum of the specified parametric objective function.
Public methodStatic memberCode exampleMinimize(FuncDoubleMatrix, Double, DoubleMatrix)
Finds the minimum of the specified objective function.
Public methodStatic memberMinimizeTFunctionParameter(FuncDoubleMatrix, TFunctionParameter, Double, DoubleMatrix, TFunctionParameter)
Finds the minimum of the specified parametric objective function.
Top
Remarks

Scope

This class exposes methods aimed to solve continuous optimization problems. It can be exploited to treat, among the others, non-convex functions or functions characterized by many local extrema.

Objective functions

Objective functions are passed to optimization methods as delegates. All optimization methods are overloaded to accept two different types of delegates. The first type is FuncT, TResult, i.e. it must return a Double, while its argument is represented by a DoubleMatrix object: such delegate can be used if the objective function needs no information other than its argument to be evaluated. If, on the contrary, additional information is needed, the function can be treated as a parametric one, and the delegate will have the generic type FuncT1, T2, TResult, where TFunctionParameter is the type which will represent the type through which the additional information is passed to the objective function.

It is expected that the objective function to be optimized will accept a row vector as a valid representation of an argument.

Optimizing a function

The ContinuousOptimization class supplies methods for unconstrained optimization, such as Minimize(FuncDoubleMatrix, Double, DoubleMatrix) or Maximize(FuncDoubleMatrix, Double, DoubleMatrix). Such methods assume that the feasible region in which the search for optimization must be directed is the Cartesian product of as many copies of the real line as is the dimension of an argument in the objective function.

Advanced scenarios

Internally, every continuous optimization problem is solved via a default Cross-Entropy context of type ContinuousOptimizationContext. For advanced scenarios, in which additional control on the parameters of the underlying algorithm is needed, a specialized context can be instantiated and hence exploited executing method Optimize on a SystemPerformanceOptimizer object. See the documentation about ContinuousOptimizationContext for additional examples.

See Also