MOOCHO (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | List of all members
MoochoPack::BFGSUpdate_Strategy Class Reference

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

#include <MoochoPack_BFGSUpdate_Strategy.hpp>

Public Types

enum  ESecantTesting { SECANT_TEST_DEFAULT, SECANT_TEST_ALWAYS, SECANT_NO_TEST }
 

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

Member Enumeration Documentation

Enumerator
SECANT_TEST_DEFAULT 
SECANT_TEST_ALWAYS 
SECANT_NO_TEST 

Definition at line 73 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 60 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:

  • 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 74 of file MoochoPack_BFGSUpdate_Strategy.cpp.

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

Definition at line 280 of file MoochoPack_BFGSUpdate_Strategy.cpp.


The documentation for this class was generated from the following files: