class CubicLineSearch : public LineSearch

CubicLineSearch class

Inheritance:


public members:

CubicLineSearch ( ObjectiveFunction * f, int iter )
a constructor with the default delta
CubicLineSearch ( ObjectiveFunction * f, int iter , Vector <double>* delta)
a constructor with the specified delta
ObjectiveFunction * f
pointer to the objective function
int iter
maximum number of iterations
Vector <double>* delta
pointer to the vector of step size for FD
Model <double> search ( Model <double>& m0, Vector <double>& direction, double descent, double lambda)
search for the minimum model along a 1-D direction
Model <double>& m0
initial model for the line search
Vector <double>& direction
search direction
double descent
dot product of search direction and gradient
double lambda
a parameter
Model <long> search ( Model <long>&, Vector <double>&, double, double)
search for the minimum model along a 1-D direction

Inherited from LineSearch:

public members:

Vector <double> gradient( Model <double>& m)
double evaluate( Model <double>& m)
Vector <double> gradient( Model <long>& m)
double evaluate( Model <long>& m)
List <int> allSearchIterations()
int searchIterations()
double currentValue()
const char* objName()

protected members:

int iterMax
int iterNum
List <int>* iterHistory
double value
ObjectiveFunction * fp
void appendSearchNumber()

Documentation

CubicLineSearch() class implements the efficient line search procedure described in Dennis and Schbabel's book entitled "Numerical Methods for Unconstrained and Nonlinear Equations. The objective is to perform a unidimensional search for a minimum point along a specified direction in a multidimensional space.

This procedure seems to be fairly robust. It has worked for a fairly broad class of problems from optimization of standard test functons in optimization theory and to hard geophysical problems as stacking power optimization and amplitude seismogram inversion. But we never know ...

CubicLineSearch ( ObjectiveFunction * f, int iter , Vector <double>* delta)
The parameter $delta$ is not used by the line search itself. Rather it is used in the numerical computation of the derivatives using centered differences. For example the derivative of f(x) at the point x0 would be given by \[f(x0 - delta) - f(x0 + delta) / 2 * delta\]

Model <double> search ( Model <double>& m0, Vector <double>& direction, double descent, double lambda)
The parameter $lambda$ controls the accuraccy of the line search. $lambda = .25$ is a good choice. The minimizer along the search direction is returned by the function.


this class has no child classes.

alphabetic index hierarchy of classes


this page has been generated automatically by doc++

(c)opyright by Malte Zöckler, Roland Wunderling