Class GridSearchOptimizer<TInput, TMetric>
- Namespace
- SignalSharp.Optimization.GridSearch
- Assembly
- SignalSharp.dll
Implements a grid search optimization strategy. It systematically evaluates the objective function at points on a grid defined by the parameter ranges and step counts. This optimizer does not use gradient information.
public class GridSearchOptimizer<TInput, TMetric> : IParameterOptimizer<TInput, TMetric> where TMetric : IFloatingPointIeee754<TMetric>
Type Parameters
TInputThe type of the input data provided to the objective function.
TMetricThe type of the objective metric (e.g., SSE), which must be a floating-point type.
- Inheritance
-
GridSearchOptimizer<TInput, TMetric>
- Implements
-
IParameterOptimizer<TInput, TMetric>
- Inherited Members
Constructors
GridSearchOptimizer(GridSearchOptimizerOptions?, ILogger<GridSearchOptimizer<TInput, TMetric>>?)
Initializes a new instance of the GridSearchOptimizer<TInput, TMetric> class.
public GridSearchOptimizer(GridSearchOptimizerOptions? options = null, ILogger<GridSearchOptimizer<TInput, TMetric>>? logger = null)
Parameters
optionsGridSearchOptimizerOptionsConfiguration options for the grid search.
loggerILogger<GridSearchOptimizer<TInput, TMetric>>Optional logger instance.
Methods
Optimize(TInput, IEnumerable<ParameterDefinition>, Func<TInput, IReadOnlyDictionary<string, double>, ObjectiveEvaluation<TMetric>>)
Optimizes the objective function synchronously by running the asynchronous search and waiting for it.
public OptimizationResult<TMetric> Optimize(TInput inputData, IEnumerable<ParameterDefinition> parametersToOptimize, Func<TInput, IReadOnlyDictionary<string, double>, ObjectiveEvaluation<TMetric>> objectiveFunction)
Parameters
inputDataTInputThe input data passed to the objective function.
parametersToOptimizeIEnumerable<ParameterDefinition>The parameters to optimize, with unique names.
objectiveFunctionFunc<TInput, IReadOnlyDictionary<string, double>, ObjectiveEvaluation<TMetric>>The objective function to minimize.
Returns
- OptimizationResult<TMetric>
The optimization result.
Exceptions
- ArgumentNullException
Thrown when the parameters or objective function are null.
- ArgumentException
Thrown when parameter names are duplicated.
OptimizeAsync(TInput, IEnumerable<ParameterDefinition>, Func<TInput, IReadOnlyDictionary<string, double>, ObjectiveEvaluation<TMetric>>, CancellationToken)
Asynchronously optimizes a set of parameters for a given objective function with cancellation support.
public Task<OptimizationResult<TMetric>> OptimizeAsync(TInput inputData, IEnumerable<ParameterDefinition> parametersToOptimize, Func<TInput, IReadOnlyDictionary<string, double>, ObjectiveEvaluation<TMetric>> objectiveFunction, CancellationToken cancellationToken)
Parameters
inputDataTInputThe input data required by the objective function (e.g., time series signal).
parametersToOptimizeIEnumerable<ParameterDefinition>A collection of ParameterDefinition objects, describing each parameter's name, bounds, and optional initial guess.
objectiveFunctionFunc<TInput, IReadOnlyDictionary<string, double>, ObjectiveEvaluation<TMetric>>A function delegate that, given the input data and a dictionary of current trial parameter values, computes and returns an ObjectiveEvaluation<TMetric>. The evaluation includes the metric value and, optionally, the gradient of the metric with respect to the parameters.
cancellationTokenCancellationTokenToken to cancel the optimization process.
Returns
- Task<OptimizationResult<TMetric>>
An OptimizationResult<TMetric> containing the best parameters found, the minimized metric value, and other optimization details.
Remarks
Cancellation stops the search and surfaces as an OperationCanceledException rather than returning a partial result as if the search had completed.
Exceptions
- OperationCanceledException
Thrown when the operation is cancelled through
cancellationToken.- ArgumentNullException
Thrown when
parametersToOptimizeorobjectiveFunctionis null.- ArgumentException
Thrown when parameter names are duplicated.