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 FEASIBILITY_STEP_REDUCED_STD_STRATEGY_H
00030 #define FEASIBILITY_STEP_REDUCED_STD_STRATEGY_H
00031
00032 #include "MoochoPack_FeasibilityStep_Strategy.hpp"
00033 #include "MoochoPack_QuasiRangeSpaceStep_Strategy.hpp"
00034 #include "MoochoPack_d_bounds_iter_quant.hpp"
00035 #include "IterationPack_CastIQMember.hpp"
00036 #include "ConstrainedOptPack_QPSolverRelaxed.hpp"
00037 #include "ConstrainedOptPack_QPSolverRelaxedTester.hpp"
00038 #include "AbstractLinAlgPack_MatrixOp.hpp"
00039 #include "DenseLinAlgPack_DMatrixClass.hpp"
00040 #include "AbstractLinAlgPack_VectorSpace.hpp"
00041 #include "Teuchos_StandardCompositionMacros.hpp"
00042 #include "Teuchos_StandardMemberCompositionMacros.hpp"
00043
00044 namespace MoochoPack {
00045
00048 class FeasibilityStepReducedStd_Strategy : public FeasibilityStep_Strategy
00049 {
00050 public:
00051
00053 STANDARD_COMPOSITION_MEMBERS( QuasiRangeSpaceStep_Strategy, quasi_range_space_step );
00054
00055 typedef ConstrainedOptPack::QPSolverRelaxedTester
00056 QPSolverRelaxedTester;
00057
00059 STANDARD_COMPOSITION_MEMBERS( QPSolverRelaxed, qp_solver );
00060
00062 STANDARD_COMPOSITION_MEMBERS( QPSolverRelaxedTester, qp_tester );
00063
00065 enum EQPObjective {
00066 OBJ_MIN_FULL_STEP
00067 ,OBJ_MIN_NULL_SPACE_STEP
00068 ,OBJ_RSQP
00069 };
00070
00073 STANDARD_MEMBER_COMPOSITION_MEMBERS( EQPObjective, qp_objective );
00074
00076 enum EQPTesting {
00077 QP_TEST_DEFAULT
00078 ,QP_TEST
00079 ,QP_NO_TEST
00080 };
00081
00084 STANDARD_MEMBER_COMPOSITION_MEMBERS( EQPTesting, qp_testing );
00085
00087 FeasibilityStepReducedStd_Strategy(
00088 const quasi_range_space_step_ptr_t &quasi_range_space_step
00089 ,const qp_solver_ptr_t &qp_solver
00090 ,const qp_tester_ptr_t &qp_tester
00091 ,EQPObjective qp_objective = OBJ_MIN_NULL_SPACE_STEP
00092 ,EQPTesting qp_testing = QP_TEST_DEFAULT
00093 );
00094
00095
00096
00097
00103 bool compute_feasibility_step(
00104 std::ostream& out, EJournalOutputLevel olevel, NLPAlgo *algo, NLPAlgoState *s
00105 ,const Vector& xo, const Vector& c_xo, VectorMutable* w
00106 );
00107
00109 void print_step( std::ostream& out, const std::string& leading_str ) const;
00110
00111 private:
00112
00113 IterationPack::CastIQMember<VectorMutable> dl_iq_;
00114 IterationPack::CastIQMember<VectorMutable> du_iq_;
00115 int current_k_;
00116 Teuchos::RCP<const MatrixOp> Hess_ptr_;
00117 VectorSpace::vec_mut_ptr_t grad_store_;
00118 DMatrix Hess_store_;
00119
00120 };
00121
00122 }
00123
00124 #endif // FEASIBILITY_STEP_REDUCED_STD_STRATEGY_H