00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef REDUCED_HESSIAN_SECANT_UPDATE_BFGS_PROJECTED_STRATEGY_H
00030 #define REDUCED_HESSIAN_SECANT_UPDATE_BFGS_PROJECTED_STRATEGY_H
00031
00032 #include "MoochoPack_ReducedHessianSecantUpdate_Strategy.hpp"
00033 #include "MoochoPack_BFGSUpdate_Strategy.hpp"
00034 #include "MoochoPack_quasi_newton_stats.hpp"
00035 #include "MoochoPack_act_set_stats.hpp"
00036 #include "ConstrainedOptPack_MatrixHessianSuperBasic.hpp"
00037 #include "Teuchos_StandardCompositionMacros.hpp"
00038 #include "Teuchos_StandardMemberCompositionMacros.hpp"
00039
00040 namespace MoochoPack {
00041
00046 class ReducedHessianSecantUpdateBFGSProjected_Strategy : public ReducedHessianSecantUpdate_Strategy
00047 {
00048 public:
00049
00053 STANDARD_COMPOSITION_MEMBERS( BFGSUpdate_Strategy, bfgs_update );
00054
00059 STANDARD_MEMBER_COMPOSITION_MEMBERS( value_type, act_set_frac_proj_start );
00060
00064 STANDARD_MEMBER_COMPOSITION_MEMBERS( value_type, project_error_tol );
00065
00069 STANDARD_MEMBER_COMPOSITION_MEMBERS( value_type, super_basic_mult_drop_tol );
00070
00072 ReducedHessianSecantUpdateBFGSProjected_Strategy(
00073 const bfgs_update_ptr_t& bfgs_update = NULL
00074 ,value_type act_set_frac_proj_start = 0.8
00075 ,value_type project_error_tol = 1e-5
00076 ,value_type super_basic_mult_drop_tol = 1e-5
00077 );
00078
00080 bool perform_update(
00081 DVectorSlice* s_bfgs, DVectorSlice* y_bfgs, bool first_update
00082 ,std::ostream& out, EJournalOutputLevel olevel, NLPAlgo *algo, NLPAlgoState *s
00083 ,MatrixOp *rHL_k
00084 );
00086 void print_step( std::ostream& out, const std::string& leading_str ) const;
00087
00088 private:
00089
00090
00091
00092
00093 quasi_newton_stats_iq_member quasi_newton_stats_;
00094 act_set_stats_iq_member act_set_stats_;
00095
00096 };
00097
00098 }
00099
00100 #endif // REDUCED_HESSIAN_SECANT_UPDATE_BFGS_PROJECTED_STRATEGY_H