MOOCHO (Single Doxygen Collection)
Version of the Day
|
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 |
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.
Enumerator | |
---|---|
SECANT_TEST_DEFAULT | |
SECANT_TEST_ALWAYS | |
SECANT_NO_TEST |
Definition at line 73 of file MoochoPack_BFGSUpdate_Strategy.hpp.
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.
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 | [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.