Ipopt
trunk
|
00001 // Copyright (C) 2004, 2010 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Eclipse Public License. 00004 // 00005 // $Id$ 00006 // 00007 // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13 00008 00009 #ifndef __IPRESTOC_1NRM_HPP__ 00010 #define __IPRESTOC_1NRM_HPP__ 00011 00012 #include "IpRestoPhase.hpp" 00013 #include "IpIpoptAlg.hpp" 00014 #include "IpEqMultCalculator.hpp" 00015 00016 namespace Ipopt 00017 { 00018 00022 class MinC_1NrmRestorationPhase : public RestorationPhase 00023 { 00024 public: 00033 MinC_1NrmRestorationPhase(IpoptAlgorithm& resto_alg, 00034 const SmartPtr<EqMultiplierCalculator>& eq_mult_calculator); 00035 00037 virtual ~MinC_1NrmRestorationPhase(); 00039 00041 virtual bool InitializeImpl(const OptionsList& options, 00042 const std::string& prefix); 00043 00046 static void RegisterOptions(SmartPtr<RegisteredOptions> roptions); 00048 00049 protected: 00051 virtual bool PerformRestoration(); 00052 00053 private: 00061 MinC_1NrmRestorationPhase(); 00062 00064 MinC_1NrmRestorationPhase(const MinC_1NrmRestorationPhase&); 00065 00067 void operator=(const MinC_1NrmRestorationPhase&); 00069 00072 SmartPtr<IpoptAlgorithm> resto_alg_; 00073 SmartPtr<EqMultiplierCalculator> eq_mult_calculator_; 00075 00079 SmartPtr<OptionsList> resto_options_; 00080 00083 Number constr_mult_reset_threshold_; 00087 Number bound_mult_reset_threshold_; 00091 bool expect_infeasible_problem_; 00093 Number constr_viol_tol_; 00097 Number resto_failure_feasibility_threshold_; 00099 00102 Index count_restorations_; 00103 00109 void ComputeBoundMultiplierStep(Vector& delta_z, 00110 const Vector& curr_z, 00111 const Vector& curr_slack, 00112 const Vector& trial_slack); 00114 }; 00115 00116 } // namespace Ipopt 00117 00118 #endif