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 MERIT_FUNC_MODIFIED_L1_LARGER_STEPS_ADDED_STEP_H
00030 #define MERIT_FUNC_MODIFIED_L1_LARGER_STEPS_ADDED_STEP_H
00031
00032 #include "rSQPAlgo_Step.h"
00033 #include "ConstrainedOptPack_MeritFuncNLP.hpp"
00034 #include "Teuchos_StandardCompositionMacros.hpp"
00035 #include "Teuchos_StandardMemberCompositionMacros.hpp"
00036
00037 namespace MoochoPack {
00038
00043 class MeritFunc_ModifiedL1LargerSteps_AddedStep
00044 : public rSQPAlgo_Step
00045 {
00046 public:
00047
00049 STANDARD_COMPOSITION_MEMBERS(MeritFuncNLP,merit_func);
00050
00052 MeritFunc_ModifiedL1LargerSteps_AddedStep(
00053 const merit_func_ptr_t& merit_func
00054 , value_type eta
00055 , int after_k_iter = 3
00056 , value_type obj_increase_threshold = 1e-4
00057 , value_type max_pos_penalty_increase = 1.0
00058 , value_type pos_to_neg_penalty_increase = 1.0
00059 , value_type incr_mult_factor = 1e-4 );
00060
00062 STANDARD_MEMBER_COMPOSITION_MEMBERS(value_type,eta);
00063
00065 STANDARD_MEMBER_COMPOSITION_MEMBERS(int,after_k_iter);
00066
00068 STANDARD_MEMBER_COMPOSITION_MEMBERS(value_type,obj_increase_threshold);
00069
00071 STANDARD_MEMBER_COMPOSITION_MEMBERS(value_type,max_pos_penalty_increase);
00072
00074 STANDARD_MEMBER_COMPOSITION_MEMBERS(value_type,pos_to_neg_penalty_increase);
00075
00077 STANDARD_MEMBER_COMPOSITION_MEMBERS(value_type,incr_mult_factor);
00078
00079
00080
00081
00083 bool do_step(Algorithm& algo, poss_type step_poss, IterationPack::EDoStepType type
00084 , poss_type assoc_step_poss);
00085
00087 void print_step( const Algorithm& algo, poss_type step_poss
00088 , IterationPack::EDoStepType type, poss_type assoc_step_poss
00089 , std::ostream& out, const std::string& leading_str ) const;
00090
00091 private:
00092
00093 MeritFunc_ModifiedL1LargerSteps_AddedStep();
00094 MeritFunc_ModifiedL1LargerSteps_AddedStep(const MeritFunc_ModifiedL1LargerSteps_AddedStep&);
00095 MeritFunc_ModifiedL1LargerSteps_AddedStep& operator=(const MeritFunc_ModifiedL1LargerSteps_AddedStep&);
00096
00097 };
00098
00099 }
00100
00101 #endif // MERIT_FUNC_MODIFIED_L1_LARGER_STEPS_ADDED_STEP_H