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

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

Public Member Functions

 STANDARD_MEMBER_COMPOSITION_MEMBERS (bool, rescale_init_identity)
 <<std member="" comp>="">> members for whether to rescale the initial identity Hessian or not.
 STANDARD_MEMBER_COMPOSITION_MEMBERS (bool, use_dampening)
 <<std member="" comp>="">> members for whether to perform dampended quasi-newton updating or not.
 STANDARD_MEMBER_COMPOSITION_MEMBERS (ESecantTesting, secant_testing)
 <<std member="" comp>="">> members how and if the secant property of the BFGS update is tested.
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, secant_warning_tol)
 <<std member="" comp>="">> members for the warning tolerance for the check of the secant property.
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, secant_error_tol)
 <<std member="" comp>="">> members for the error tolerance for the check of the secant property.
 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
 


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

Enumerator:
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

MoochoPack::BFGSUpdate_Strategy::STANDARD_MEMBER_COMPOSITION_MEMBERS ( bool  ,
rescale_init_identity   
)

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

MoochoPack::BFGSUpdate_Strategy::STANDARD_MEMBER_COMPOSITION_MEMBERS ( bool  ,
use_dampening   
)

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

MoochoPack::BFGSUpdate_Strategy::STANDARD_MEMBER_COMPOSITION_MEMBERS ( ESecantTesting  ,
secant_testing   
)

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

ToDo: Finish documentation.

MoochoPack::BFGSUpdate_Strategy::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
secant_warning_tol   
)

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

MoochoPack::BFGSUpdate_Strategy::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
secant_error_tol   
)

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

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:

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.


The documentation for this class was generated from the following files:
Generated on Tue Jul 13 09:35:54 2010 for MOOCHO (Single Doxygen Collection) by  doxygen 1.4.7