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 NULL_SPACE_STEP_WITH_INEQU_STD_STEP_H
00030 #define NULL_SPACE_STEP_WITH_INEQU_STD_STEP_H
00031
00032 #include "MoochoPack_Types.hpp"
00033 #include "IterationPack_AlgorithmStep.hpp"
00034 #include "IterationPack_CastIQMember.hpp"
00035 #include "MoochoPack_d_bounds_iter_quant.hpp"
00036 #include "MoochoPack_qp_solver_stats.hpp"
00037 #include "MoochoPack_act_set_stats.hpp"
00038 #include "ConstrainedOptPack_QPSolverRelaxed.hpp"
00039 #include "ConstrainedOptPack_QPSolverRelaxedTester.hpp"
00040 #include "Teuchos_StandardCompositionMacros.hpp"
00041 #include "Teuchos_StandardMemberCompositionMacros.hpp"
00042
00043 namespace MoochoPack {
00044
00050 class TangentialStepWithInequStd_Step
00051 : public IterationPack::AlgorithmStep
00052 {
00053 public:
00054
00056 STANDARD_COMPOSITION_MEMBERS( QPSolverRelaxed, qp_solver );
00057
00059 STANDARD_COMPOSITION_MEMBERS( QPSolverRelaxedTester, qp_tester );
00060
00064 STANDARD_MEMBER_COMPOSITION_MEMBERS( value_type, warm_start_frac );
00065
00067 enum EQPTesting { QP_TEST_DEFAULT, QP_TEST, QP_NO_TEST };
00068
00073 STANDARD_MEMBER_COMPOSITION_MEMBERS( EQPTesting, qp_testing );
00074
00078 STANDARD_MEMBER_COMPOSITION_MEMBERS( bool, primal_feasible_point_error );
00079
00083 STANDARD_MEMBER_COMPOSITION_MEMBERS( bool, dual_feasible_point_error );
00084
00086 TangentialStepWithInequStd_Step(
00087 const qp_solver_ptr_t &qp_solver
00088 ,const qp_tester_ptr_t &qp_tester
00089 ,value_type warm_start_frac = 0.8
00090 ,EQPTesting qp_testing = QP_TEST_DEFAULT
00091 ,bool primal_feasible_point_error = true
00092 ,bool dual_feasible_point_error = true
00093 );
00094
00098 bool do_step(Algorithm& algo, poss_type step_poss, IterationPack::EDoStepType type
00099 , poss_type assoc_step_poss);
00101 void print_step( const Algorithm& algo, poss_type step_poss, IterationPack::EDoStepType type
00102 , poss_type assoc_step_poss, std::ostream& out, const std::string& leading_str ) const;
00104
00105 private:
00106 IterationPack::CastIQMember<VectorMutable> dl_iq_;
00107 IterationPack::CastIQMember<VectorMutable> du_iq_;
00108 qp_solver_stats_iq_member qp_solver_stats_;
00109 act_set_stats_iq_member act_set_stats_;
00110
00111
00112 TangentialStepWithInequStd_Step();
00113
00114 };
00115
00116 }
00117
00118 #endif // NULL_SPACE_STEP_WITH_INEQU_STD_STEP_H