SDDSlib
|
Implementation of Powell's optimization algorithm for multidimensional minimization. More...
#include "mdb.h"
Go to the source code of this file.
Macros | |
#define | DEFAULT_MAXEVALS 100 |
#define | DEFAULT_MAXPASSES 5 |
#define | DEBUG 0 |
Functions | |
long | powellMoveToMin (double *yReturn, double *x, double *xWork, double *dx, double *xLower, double *xUpper, long dims, long linMinIterations, long maxGoodSteps, double(*func)(double *x, long *invalid)) |
long | powellMinStep (double *yReturn, double *xReturn, double **dirVector, double **P, double *xLower, double *xUpper, long dims, double target, long linMinIterations, long limitGoodSteps, double(*func)(double *x, long *invalid)) |
long | powellMin (double *yReturn, double *xGuess, double *dxGuess, double *xLowerLimit, double *xUpperLimit, long dims, double target, double tolerance, double(*func)(double *x, long *invalid), void(*report)(double ymin, double *xmin, long pass, long evals, long dims), long maxPasses, long maxEvaluations, long linMinIterations) |
Minimizes an objective function using Powell's method. | |
Implementation of Powell's optimization algorithm for multidimensional minimization.
Definition in file powellMin.c.
#define DEBUG 0 |
Definition at line 21 of file powellMin.c.
#define DEFAULT_MAXEVALS 100 |
Definition at line 18 of file powellMin.c.
#define DEFAULT_MAXPASSES 5 |
Definition at line 19 of file powellMin.c.
long powellMin | ( | double * | yReturn, |
double * | xGuess, | ||
double * | dxGuess, | ||
double * | xLowerLimit, | ||
double * | xUpperLimit, | ||
long | dims, | ||
double | target, | ||
double | tolerance, | ||
double(* | func )(double *x, long *invalid), | ||
void(* | report )(double ymin, double *xmin, long pass, long evals, long dims), | ||
long | maxPasses, | ||
long | maxEvaluations, | ||
long | linMinIterations ) |
Minimizes an objective function using Powell's method.
This is the main function implementing Powell's optimization algorithm. It iteratively searches for the minimum of the provided objective function within the specified bounds and tolerance levels.
yReturn | Pointer to store the final function value at the minimum. |
xGuess | Initial guess for the position in the parameter space. |
dxGuess | Initial guess for the step sizes in each dimension. |
xLowerLimit | Array of lower bounds for each dimension. |
xUpperLimit | Array of upper bounds for each dimension. |
dims | Number of dimensions in the parameter space. |
target | Target function value; the algorithm will terminate if any value is less than or equal to this target. |
tolerance | Tolerance for convergence. If negative, interpreted as a fractional tolerance; if positive, as an absolute tolerance. |
func | Pointer to the objective function to be minimized. It should accept the current position and a pointer to a long indicating if the evaluation is invalid. |
report | Pointer to a reporting function that is called after each pass. It receives the current minimum value, position, pass number, total evaluations, and number of dimensions. |
maxPasses | Maximum number of passes (iterations) to perform. |
maxEvaluations | Maximum number of function evaluations allowed. |
linMinIterations | Number of linear minimization iterations to perform. |
Definition at line 220 of file powellMin.c.
long powellMinStep | ( | double * | yReturn, |
double * | xReturn, | ||
double ** | dirVector, | ||
double ** | P, | ||
double * | xLower, | ||
double * | xUpper, | ||
long | dims, | ||
double | target, | ||
long | linMinIterations, | ||
long | limitGoodSteps, | ||
double(* | func )(double *x, long *invalid) ) |
Definition at line 141 of file powellMin.c.
long powellMoveToMin | ( | double * | yReturn, |
double * | x, | ||
double * | xWork, | ||
double * | dx, | ||
double * | xLower, | ||
double * | xUpper, | ||
long | dims, | ||
long | linMinIterations, | ||
long | maxGoodSteps, | ||
double(* | func )(double *x, long *invalid) ) |
Definition at line 23 of file powellMin.c.