mirror of
https://github.com/cookiengineer/audacity
synced 2025-04-30 07:39:42 +02:00
44 lines
1.4 KiB
C++
44 lines
1.4 KiB
C++
/*
|
|
* hillclimb.h
|
|
* scorealign
|
|
*
|
|
* Created by Roger Dannenberg on 10/20/07.
|
|
* Copyright 2007 by Roger B. Dannenberg. All rights reserved.
|
|
*
|
|
* USAGE:
|
|
* Subclass and define evaluate, a function of n parameters.
|
|
* Set parameters, step_size, min, max, and n. Parameters must
|
|
* be near a local maximum and step_size defines the grid that
|
|
* is searched. Search will not go outside of min and max.
|
|
* Call optimize()
|
|
* retrieve optimized parameter values with get_parameters.
|
|
*
|
|
*/
|
|
|
|
// while optimizing, this function is called to report progress
|
|
typedef void (*Report_fn_ptr)(void *cookie, int iteration, double best);
|
|
|
|
class Hillclimb {
|
|
protected:
|
|
double *parameters; // parameters to optimize
|
|
double *step_size; // step size for each parameter (these are
|
|
// provided by the user and remain fixed)
|
|
double *min_param; // minimum parameter values
|
|
double *max_param; // maximum parameter values
|
|
int n; // number of parameters
|
|
public:
|
|
Hillclimb() {
|
|
parameters = step_size = min_param = max_param = NULL;
|
|
}
|
|
void setup(int n_);
|
|
~Hillclimb();
|
|
void set_parameters(double *parameters_, double *step_size_,
|
|
double *min_, double *max_, int n_);
|
|
// retrieve parameters after optimization:
|
|
double *get_parameters() { return parameters; }
|
|
virtual double evaluate() = 0;
|
|
double optimize(Report_fn_ptr report, void *cookie);
|
|
};
|
|
|
|
|