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 LINE_SEARCH_FULL_STEP_AFTER_K_ITER_STEP_H
00030 #define LINE_SEARCH_FULL_STEP_AFTER_K_ITER_STEP_H
00031
00032 #include <limits>
00033
00034 #include "rSQPAlgo_StepBaseClasses.h"
00035 #include "ConstrainedOptPack_DirectLineSearch_Strategy.hpp"
00036 #include "Teuchos_StandardCompositionMacros.hpp"
00037 #include "MiStandardAggregationMacros.h"
00038
00039 namespace MoochoPack {
00040
00044 class LineSearchFullStepAfterKIter_Step : public LineSearch_Step {
00045 public:
00046
00048 STANDARD_COMPOSITION_MEMBERS(LineSearch_Step,line_search);
00049
00051 LineSearchFullStepAfterKIter_Step(
00052 const line_search_ptr_t& line_search = 0
00053 , int full_steps_after_k
00054 = std::numeric_limits<int>::max() )
00055 : line_search_(line_search)
00056 , full_steps_after_k_(full_steps_after_k)
00057 {}
00058
00060 void full_steps_after_k( int full_steps_after_k )
00061 { full_steps_after_k_ = full_steps_after_k; }
00063 value_type full_steps_after_k() const
00064 { return full_steps_after_k_; }
00065
00066
00067
00068
00070 bool do_step(Algorithm& algo, poss_type step_poss, IterationPack::EDoStepType type
00071 , poss_type assoc_step_poss);
00072
00074 void print_step( const Algorithm& algo, poss_type step_poss, IterationPack::EDoStepType type
00075 , poss_type assoc_step_poss, std::ostream& out, const std::string& leading_str ) const;
00076
00077 private:
00078 int full_steps_after_k_;
00079
00080 };
00081
00082 }
00083
00084 #endif // LINE_SEARCH_FULL_STEP_AFTER_K_ITER_STEP_H