MoochoPack::BFGSUpdate_Strategy Class Reference

Strategy interface which contains the guts for a dampened BFGS update. More...

#include <MoochoPack_BFGSUpdate_Strategy.hpp>

List of all members.

Public Types

enum  ESecantTesting { SECANT_TEST_DEFAULT, SECANT_TEST_ALWAYS, SECANT_NO_TEST }
  More...

Public Member Functions

void rescale_init_identity (const bool &rescale_init_identity)
 <<std member="" comp="">> members for whether to rescale the initial identity Hessian or not.
const bool & rescale_init_identity () const
void use_dampening (const bool &use_dampening)
 <<std member="" comp="">> members for whether to perform dampended quasi-newton updating or not.
const bool & use_dampening () const
void secant_testing (const ESecantTesting &secant_testing)
 <<std member="" comp="">> members how and if the secant property of the BFGS update is tested.
const ESecantTestingsecant_testing () const
void secant_warning_tol (const value_type &secant_warning_tol)
 <<std member="" comp="">> members for the warning tolerance for the check of the secant property.
const value_typesecant_warning_tol () const
void secant_error_tol (const value_type &secant_error_tol)
 <<std member="" comp="">> members for the error tolerance for the check of the secant property.
const value_typesecant_error_tol () const
 BFGSUpdate_Strategy (bool rescale_init_identity=true, bool use_dampening=true, ESecantTesting secant_testing=SECANT_TEST_DEFAULT, value_type secant_warning_tol=1e-6, value_type secant_error_tol=1e-1)
 
void perform_update (VectorMutable *s_bfgs, VectorMutable *y_bfgs, bool first_update, std::ostream &out, EJournalOutputLevel olevel, bool check_results, MatrixSymOp *B, QuasiNewtonStats *quasi_newton_stats)
 Perform the BFGS update.
void print_step (std::ostream &out, const std::string &leading_str) const
 

Private Attributes

bool rescale_init_identity_
bool use_dampening_
ESecantTesting secant_testing_
value_type secant_warning_tol_
value_type secant_error_tol_


Detailed Description

Strategy interface which contains the guts for a dampened BFGS update.

This object can not change the flow of control or do anything fancy. It just performs the dampened update or skips it if the update is not sufficiently positive definite.

See the printed documentation generated by this->print_step().

Definition at line 46 of file MoochoPack_BFGSUpdate_Strategy.hpp.


Member Enumeration Documentation

enum MoochoPack::BFGSUpdate_Strategy::ESecantTesting
 

Enumeration values:
SECANT_TEST_DEFAULT 
SECANT_TEST_ALWAYS 
SECANT_NO_TEST 

Definition at line 60 of file MoochoPack_BFGSUpdate_Strategy.hpp.


Constructor & Destructor Documentation

MoochoPack::BFGSUpdate_Strategy::BFGSUpdate_Strategy bool  rescale_init_identity = true,
bool  use_dampening = true,
ESecantTesting  secant_testing = SECANT_TEST_DEFAULT,
value_type  secant_warning_tol = 1e-6,
value_type  secant_error_tol = 1e-1
 

Definition at line 47 of file MoochoPack_BFGSUpdate_Strategy.cpp.


Member Function Documentation

void MoochoPack::BFGSUpdate_Strategy::rescale_init_identity const bool &  rescale_init_identity  )  [inline]
 

<<std member="" comp="">> members for whether to rescale the initial identity Hessian or not.

Definition at line 52 of file MoochoPack_BFGSUpdate_Strategy.hpp.

const bool& MoochoPack::BFGSUpdate_Strategy::rescale_init_identity  )  const [inline]
 

Definition at line 52 of file MoochoPack_BFGSUpdate_Strategy.hpp.

void MoochoPack::BFGSUpdate_Strategy::use_dampening const bool &  use_dampening  )  [inline]
 

<<std member="" comp="">> members for whether to perform dampended quasi-newton updating or not.

Definition at line 57 of file MoochoPack_BFGSUpdate_Strategy.hpp.

const bool& MoochoPack::BFGSUpdate_Strategy::use_dampening  )  const [inline]
 

Definition at line 57 of file MoochoPack_BFGSUpdate_Strategy.hpp.

void MoochoPack::BFGSUpdate_Strategy::secant_testing const ESecantTesting secant_testing  )  [inline]
 

<<std member="" comp="">> members how and if the secant property of the BFGS update is tested.

ToDo: Finish documentation.

Definition at line 67 of file MoochoPack_BFGSUpdate_Strategy.hpp.

const ESecantTesting& MoochoPack::BFGSUpdate_Strategy::secant_testing  )  const [inline]
 

Definition at line 67 of file MoochoPack_BFGSUpdate_Strategy.hpp.

void MoochoPack::BFGSUpdate_Strategy::secant_warning_tol const value_type secant_warning_tol  )  [inline]
 

<<std member="" comp="">> members for the warning tolerance for the check of the secant property.

Definition at line 72 of file MoochoPack_BFGSUpdate_Strategy.hpp.

const value_type& MoochoPack::BFGSUpdate_Strategy::secant_warning_tol  )  const [inline]
 

Definition at line 72 of file MoochoPack_BFGSUpdate_Strategy.hpp.

void MoochoPack::BFGSUpdate_Strategy::secant_error_tol const value_type secant_error_tol  )  [inline]
 

<<std member="" comp="">> members for the error tolerance for the check of the secant property.

Definition at line 77 of file MoochoPack_BFGSUpdate_Strategy.hpp.

const value_type& MoochoPack::BFGSUpdate_Strategy::secant_error_tol  )  const [inline]
 

Definition at line 77 of file MoochoPack_BFGSUpdate_Strategy.hpp.

void MoochoPack::BFGSUpdate_Strategy::perform_update VectorMutable *  s_bfgs,
VectorMutable *  y_bfgs,
bool  first_update,
std::ostream &  out,
EJournalOutputLevel  olevel,
bool  check_results,
MatrixSymOp *  B,
QuasiNewtonStats quasi_newton_stats
 

Perform the BFGS update.

The function performs a straight forward (possibly dampended) BFGS update that strictly satisfies the secant property B * s_bfgs = y_bfgs.

See the printed documentation generated by this->print_step().

Preconditions:

  • s_bfgs->size() == y_bfgs->size() == B->rows() == B->cols() (throws ???)

Parameters:
s_bfgs [in/w] Secant change vector on input. May be modified as modified as workspace.
y_bfgs [in/w] Secant change vector on input. May be modified as modified as workspace.
first_update [in] If true then this is the first update after B was initialized to identity. In this case B will be rescaled as B = Iscale * I before the update is performed if this->rescale_init_identity() == true.
out [out] Output stream journal data is written to.
olevel [in] Output level for printing to out.
check_results [in] Helps determine if the secant property is tested or not after the update (see the printed documentation).
B [in/out] The matrix to be updated. B must support the MatrixSymSecant interface or an exception will be thrown.
quasi_newton_stats [out] The quasi-newton statistics object that is updated to inform what happened durring the update.

Definition at line 61 of file MoochoPack_BFGSUpdate_Strategy.cpp.

void MoochoPack::BFGSUpdate_Strategy::print_step std::ostream &  out,
const std::string &  leading_str
const
 

Definition at line 267 of file MoochoPack_BFGSUpdate_Strategy.cpp.


Member Data Documentation

bool MoochoPack::BFGSUpdate_Strategy::rescale_init_identity_ [private]
 

Definition at line 52 of file MoochoPack_BFGSUpdate_Strategy.hpp.

bool MoochoPack::BFGSUpdate_Strategy::use_dampening_ [private]
 

Definition at line 57 of file MoochoPack_BFGSUpdate_Strategy.hpp.

ESecantTesting MoochoPack::BFGSUpdate_Strategy::secant_testing_ [private]
 

Definition at line 67 of file MoochoPack_BFGSUpdate_Strategy.hpp.

value_type MoochoPack::BFGSUpdate_Strategy::secant_warning_tol_ [private]
 

Definition at line 72 of file MoochoPack_BFGSUpdate_Strategy.hpp.

value_type MoochoPack::BFGSUpdate_Strategy::secant_error_tol_ [private]
 

Definition at line 77 of file MoochoPack_BFGSUpdate_Strategy.hpp.


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