MoochoPack::InitFinDiffReducedHessian_Step Class Reference

Initializes the reduced hessian using a single finite difference along the null space of the constraints. More...

#include <MoochoPack_InitFinDiffReducedHessian_Step.hpp>

Inheritance diagram for MoochoPack::InitFinDiffReducedHessian_Step:

[legend]
List of all members.

Initializers/constructors

enum  EInitializationMethod { SCALE_IDENTITY, SCALE_DIAGONAL, SCALE_DIAGONAL_ABS }
  More...
 InitFinDiffReducedHessian_Step (EInitializationMethod initialization_method=SCALE_IDENTITY, value_type max_cond=1e+1, value_type min_diag=1e-8, value_type step_scale=1e-1)
 
void initialization_method (const EInitializationMethod &initialization_method)
 The initialization method for setting the diagonal.
const EInitializationMethodinitialization_method () const
void max_cond (const value_type &max_cond)
 Maximum condition (l2 norm) for the intial matrix = (max(diag(i))/min(diag(i)).
const value_typemax_cond () const
void min_diag (const value_type &min_diag)
 The absolute minimum value of a diagonal element.
const value_typemin_diag () const
void step_scale (const value_type &step_scale)
 The scaling of the step length u = step_scale / ||Z*e||inf.
const value_typestep_scale () const
EInitializationMethod initialization_method_
value_type max_cond_
value_type min_diag_
value_type step_scale_

Overridden from AlgorithmStep

bool do_step (Algorithm &algo, poss_type step_poss, IterationPack::EDoStepType type, poss_type assoc_step_poss)
 
void print_step (const Algorithm &algo, poss_type step_poss, IterationPack::EDoStepType type, poss_type assoc_step_poss, std::ostream &out, const std::string &leading_str) const
 

Private Attributes

quasi_newton_stats_iq_member quasi_newton_stats_

Detailed Description

Initializes the reduced hessian using a single finite difference along the null space of the constraints.

A single finite difference correction is computed along:\

x_fd = x_k + u * Z * e

The step length is set to u = step_scale / ||Z*e||inf. The step length is cut back if the point x_fd is outside the relaxed variable bounds.

The finite difference is then computed as:

rGf_fd = ( Z_k' * g(x_k + u * Z*e) - rGf_k ) / u

The diagonal terms of the reduced hessian are then set as:

diag(i) = max( ||rGf_fd||inf , smallest_ele ) if initialization_method == SCALE_IDENTITY\ diag(i) = max( rGf_fd(i) , smallest_ele ) if initialization_method == SCALE_DIAGONAL\ diag(i) = max( abs(rGf_fd(i)), smallest_ele ) if initialization_method == SCALE_DIAGONAL_ABS\

Where:

smallest_ele = max( ||rGf_fd||inf / max_cond , min_diag )

Since the matrix is diagonal the diagonal is equal to the eigenvalues of the matrix. Therefore you can show that the condition number measured in any norm is max(diag(i))/min(diag(i)). therefore we just need to limit the smallest diagonal as diag(i) > max(diag(i)) / max_cond.

Definition at line 69 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.


Member Enumeration Documentation

enum MoochoPack::InitFinDiffReducedHessian_Step::EInitializationMethod
 

Enumeration values:
SCALE_IDENTITY 
SCALE_DIAGONAL 
SCALE_DIAGONAL_ABS 

Definition at line 78 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.


Constructor & Destructor Documentation

MoochoPack::InitFinDiffReducedHessian_Step::InitFinDiffReducedHessian_Step EInitializationMethod  initialization_method = SCALE_IDENTITY,
value_type  max_cond = 1e+1,
value_type  min_diag = 1e-8,
value_type  step_scale = 1e-1
 

Definition at line 56 of file MoochoPack_InitFinDiffReducedHessian_Step.cpp.


Member Function Documentation

void MoochoPack::InitFinDiffReducedHessian_Step::initialization_method const EInitializationMethod initialization_method  )  [inline]
 

The initialization method for setting the diagonal.

Definition at line 89 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.

const EInitializationMethod& MoochoPack::InitFinDiffReducedHessian_Step::initialization_method  )  const [inline]
 

Definition at line 89 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.

void MoochoPack::InitFinDiffReducedHessian_Step::max_cond const value_type max_cond  )  [inline]
 

Maximum condition (l2 norm) for the intial matrix = (max(diag(i))/min(diag(i)).

Definition at line 92 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.

const value_type& MoochoPack::InitFinDiffReducedHessian_Step::max_cond  )  const [inline]
 

Definition at line 92 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.

void MoochoPack::InitFinDiffReducedHessian_Step::min_diag const value_type min_diag  )  [inline]
 

The absolute minimum value of a diagonal element.

Definition at line 95 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.

const value_type& MoochoPack::InitFinDiffReducedHessian_Step::min_diag  )  const [inline]
 

Definition at line 95 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.

void MoochoPack::InitFinDiffReducedHessian_Step::step_scale const value_type step_scale  )  [inline]
 

The scaling of the step length u = step_scale / ||Z*e||inf.

Definition at line 98 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.

const value_type& MoochoPack::InitFinDiffReducedHessian_Step::step_scale  )  const [inline]
 

Definition at line 98 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.

bool MoochoPack::InitFinDiffReducedHessian_Step::do_step Algorithm algo,
poss_type  step_poss,
IterationPack::EDoStepType  type,
poss_type  assoc_step_poss
 

Definition at line 68 of file MoochoPack_InitFinDiffReducedHessian_Step.cpp.

void MoochoPack::InitFinDiffReducedHessian_Step::print_step const Algorithm algo,
poss_type  step_poss,
IterationPack::EDoStepType  type,
poss_type  assoc_step_poss,
std::ostream &  out,
const std::string &  leading_str
const
 

Definition at line 278 of file MoochoPack_InitFinDiffReducedHessian_Step.cpp.


Member Data Documentation

EInitializationMethod MoochoPack::InitFinDiffReducedHessian_Step::initialization_method_ [private]
 

Definition at line 89 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.

value_type MoochoPack::InitFinDiffReducedHessian_Step::max_cond_ [private]
 

Definition at line 92 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.

value_type MoochoPack::InitFinDiffReducedHessian_Step::min_diag_ [private]
 

Definition at line 95 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.

value_type MoochoPack::InitFinDiffReducedHessian_Step::step_scale_ [private]
 

Definition at line 98 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.

quasi_newton_stats_iq_member MoochoPack::InitFinDiffReducedHessian_Step::quasi_newton_stats_ [private]
 

Definition at line 114 of file MoochoPack_InitFinDiffReducedHessian_Step.hpp.


The documentation for this class was generated from the following files:
Generated on Thu Sep 18 12:36:20 2008 for MOOCHO (Single Doxygen Collection) by doxygen 1.3.9.1