NOX::Parameter::MeritFunction Class Reference

Derived from NOX::Parameter::Arbitrary class to support a user defined merit function that can be passed to line searches through the parameter list. More...

#include <NOX_Parameter_MeritFunction.H>

Inheritance diagram for NOX::Parameter::MeritFunction:

[legend]
Collaboration diagram for NOX::Parameter::MeritFunction:
[legend]
List of all members.

Public Member Functions

 MeritFunction ()
 Default Constructor.
 ~MeritFunction ()
 Destructor.
virtual double computef (const NOX::Abstract::Group &grp) const =0
 Computes the merit function $ f $ to be used in a line search.
virtual bool computeGradient (const NOX::Abstract::Group &group, NOX::Abstract::Vector &result) const =0
 Computes the gradient of the merit function, $ \nabla f $.
virtual double computeSlope (const NOX::Abstract::Vector &dir, const NOX::Abstract::Group &grp) const =0
 Compute the inner product of the given direction and the gradient associated with the merit function.
virtual double computeQuadraticModel (const NOX::Abstract::Vector &dir, const NOX::Abstract::Group &grp) const =0
 Compute the quadratic model for the given merit function.
virtual bool computeSteepestDescentDir (const NOX::Abstract::Group &group, NOX::Abstract::Vector &result) const =0
 Computes the steepest descent direction of the merit function.

Detailed Description

Derived from NOX::Parameter::Arbitrary class to support a user defined merit function that can be passed to line searches through the parameter list.

This class allows the user to define their own merit function for use in a line search. Each line search type will specify in it's input parameter list if it supports this functionality.

To create and use a user defined merit function:

  1. Create a merit function that derives from NOX::Parameter::MeritFunction. For example, the merit function Foo might be defined as shown below.

    class Foo : public NOX::Parameter::MeritFunction {
    // Insert class definition here
    }
    

  2. Create the appropriate entries in the parameter list, as follows.

    Foo foo();
    params.sublist("Line Search").sublist("Polynomial").setParameter("User Defined Merit Function", foo);
    


Member Function Documentation

virtual double NOX::Parameter::MeritFunction::computeQuadraticModel const NOX::Abstract::Vector dir,
const NOX::Abstract::Group grp
const [pure virtual]
 

Compute the quadratic model for the given merit function.

Computes and returns $ m(d) $:

\[ m(d) = f(x) + \nabla f(x)^T d + d^T \nabla^2 f(x) d \]

Here $d$ represents the input parameter dir and $\nabla^2 f(x)$ is the Hessian of the merit function.

virtual double NOX::Parameter::MeritFunction::computeSlope const NOX::Abstract::Vector dir,
const NOX::Abstract::Group grp
const [pure virtual]
 

Compute the inner product of the given direction and the gradient associated with the merit function.

Calculates and returns $ zeta $:

\[ \zeta = \nabla f(x)^T d \]

Here $d$ represents the input parameter dir and $\nabla f(x)$ is the gradient of the merit function.


The documentation for this class was generated from the following file:
Generated on Thu Sep 18 12:40:51 2008 for NOX by doxygen 1.3.9.1