MOOCHO (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MoochoPack_LineSearch2ndOrderCorrect_Step.hpp
Go to the documentation of this file.
1 // @HEADER
2 // ***********************************************************************
3 //
4 // Moocho: Multi-functional Object-Oriented arCHitecture for Optimization
5 // Copyright (2003) Sandia Corporation
6 //
7 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8 // license for use of this work by or on behalf of the U.S. Government.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are
12 // met:
13 //
14 // 1. Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 //
21 // 3. Neither the name of the Corporation nor the names of the
22 // contributors may be used to endorse or promote products derived from
23 // this software without specific prior written permission.
24 //
25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 //
37 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov)
38 //
39 // ***********************************************************************
40 // @HEADER
41 
42 #ifndef LINE_SEARCH_2ND_ORDER_CORRECT_STEP_H
43 #define LINE_SEARCH_2ND_ORDER_CORRECT_STEP_H
44 
45 #include "MoochoPack/src/rSQPAlgo_StepBaseClasses.h"
50 #include "MiStandardAggregationMacros.h"
52 
53 namespace MoochoPack {
54 
59 class LineSearch2ndOrderCorrect_Step : public LineSearch_Step {
60 public:
61 
69  };
70 
73 
79  STANDARD_COMPOSITION_MEMBERS(DirectLineSearch_Strategy,direct_ls_sqp);
80 
85  STANDARD_COMPOSITION_MEMBERS(MeritFuncNLP,merit_func);
86 
93 
99  STANDARD_COMPOSITION_MEMBERS(DirectLineSearch_Strategy,direct_ls_newton);
100 
103  const direct_ls_sqp_ptr_t& direct_ls_sqp = NULL
104  ,const merit_func_ptr_t& merit_func = NULL
105  ,const feasibility_step_ptr_t& feasibility_step = NULL
106  ,const direct_ls_newton_ptr_t& direct_ls_newton = 0
107  ,value_type eta = 1.0e-4
108  ,ENewtonOutputLevel newton_olevel = PRINT_USE_DEFAULT
109  ,value_type constr_norm_threshold = 1.0
110  ,value_type constr_incr_ratio = 10.0
111  ,int after_k_iter = 0
112  ,EForcedConstrReduction forced_constr_reduction = CONSTR_LESS_X
113  ,value_type forced_reduct_ratio = 1.0
114  ,value_type max_step_ratio = 1.0
115  ,int max_newton_iter = 3
116  );
117 
122 
125 
128 
130  STANDARD_MEMBER_COMPOSITION_MEMBERS(value_type,constr_norm_threshold);
131 
134 
136  STANDARD_MEMBER_COMPOSITION_MEMBERS(int,after_k_iter);
137 
140 
142  STANDARD_MEMBER_COMPOSITION_MEMBERS(value_type,forced_reduct_ratio);
143 
146 
148  STANDARD_MEMBER_COMPOSITION_MEMBERS(int,max_newton_iter);
149 
151 
152  // ////////////////////
153  // Overridden
154 
156  bool do_step(Algorithm& algo, poss_type step_poss, IterationPack::EDoStepType type
157  , poss_type assoc_step_poss);
158 
160  void print_step( const Algorithm& algo, poss_type step_poss, IterationPack::EDoStepType type
161  , poss_type assoc_step_poss, std::ostream& out, const std::string& leading_str ) const;
162 
163 }; // end class LineSearch2ndOrderCorrect_Step
164 
165 } // end namespace MoochoPack
166 
167 #endif // LINE_SEARCH_2ND_ORDER_CORRECT_STEP_H
Abstract interface for a strategy object that will compute a step that will improve feasibility (at l...
STANDARD_MEMBER_COMPOSITION_MEMBERS(value_type, eta)
the Armijo cord fractional reduction test parameter eta
bool do_step(Algorithm &algo, poss_type step_poss, IterationPack::EDoStepType type, poss_type assoc_step_poss)
std::ostream * out
AbstractLinAlgPack::value_type value_type
Acts as the central hub for an iterative algorithm.
void print_step(const Algorithm &algo, poss_type step_poss, IterationPack::EDoStepType type, poss_type assoc_step_poss, std::ostream &out, const std::string &leading_str) const
STANDARD_COMPOSITION_MEMBERS(DirectLineSearch_Strategy, direct_ls_sqp)
<<std comp>="">> members for direct_ls_sqp.
LineSearch2ndOrderCorrect_Step(const direct_ls_sqp_ptr_t &direct_ls_sqp=NULL, const merit_func_ptr_t &merit_func=NULL, const feasibility_step_ptr_t &feasibility_step=NULL, const direct_ls_newton_ptr_t &direct_ls_newton=0, value_type eta=1.0e-4, ENewtonOutputLevel newton_olevel=PRINT_USE_DEFAULT, value_type constr_norm_threshold=1.0, value_type constr_incr_ratio=10.0, int after_k_iter=0, EForcedConstrReduction forced_constr_reduction=CONSTR_LESS_X, value_type forced_reduct_ratio=1.0, value_type max_step_ratio=1.0, int max_newton_iter=3)