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_LPBFGS_STRATEGY_H
00030 #define REDUCED_HESSIAN_SECANT_UPDATE_LPBFGS_STRATEGY_H
00031
00032 #include "MoochoPack_ReducedHessianSecantUpdateBFGSProjected_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 ReducedHessianSecantUpdateLPBFGS_Strategy : public ReducedHessianSecantUpdate_Strategy
00047 {
00048 public:
00049
00053 STANDARD_COMPOSITION_MEMBERS( ReducedHessianSecantUpdateBFGSProjected_Strategy, proj_bfgs_updater );
00054
00058 STANDARD_MEMBER_COMPOSITION_MEMBERS( size_type, min_num_updates_proj_start );
00059
00064 STANDARD_MEMBER_COMPOSITION_MEMBERS( size_type, max_num_updates_proj_start );
00065
00069 STANDARD_MEMBER_COMPOSITION_MEMBERS( size_type, num_superbasics_switch_dense );
00070
00074 STANDARD_MEMBER_COMPOSITION_MEMBERS( size_type, num_add_recent_updates );
00075
00077 ReducedHessianSecantUpdateLPBFGS_Strategy(
00078 const proj_bfgs_updater_ptr_t& proj_bfgs_updater = NULL
00079 ,size_type min_num_updates_proj_start = 0
00080 ,size_type max_num_updates_proj_start = 999999
00081 ,size_type num_superbasics_switch_dense = 500
00082 ,size_type num_add_recent_updates = 10
00083 );
00084
00086 bool perform_update(
00087 DVectorSlice* s_bfgs, DVectorSlice* y_bfgs, bool first_update
00088 ,std::ostream& out, EJournalOutputLevel olevel, NLPAlgo *algo, NLPAlgoState *s
00089 ,MatrixOp *rHL_k
00090 );
00092 void print_step( std::ostream& out, const std::string& leading_str ) const;
00093
00094 private:
00095
00096
00097
00098
00099
00100
00101
00102 quasi_newton_stats_iq_member quasi_newton_stats_;
00103 act_set_stats_iq_member act_set_stats_;
00104
00105 };
00106
00107 }
00108
00109 #endif // REDUCED_HESSIAN_SECANT_UPDATE_LPBFGS_STRATEGY_H