mirror of
				https://github.com/cookiengineer/audacity
				synced 2025-10-31 14:13:50 +01: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);
 | |
| };
 | |
| 
 | |
| 
 |