/home/coin/SVN-release/Ipopt-3.5.5/Ipopt/src/Algorithm/Inexact/IpInexactPDTerminationTester.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2008 International Business Machines and others.
00002 // All Rights Reserved.
00003 // This code is published under the Common Public License.
00004 //
00005 // $Id: IpInexactPDTerminationTester.hpp 1393 2009-01-08 17:19:41Z andreasw $
00006 //
00007 // Authors:  Andreas Waechter            IBM    2008-09-19
00008 
00009 #ifndef __IPINEXACTPDTERMINATIONTESTER_HPP__
00010 #define __IPINEXACTPDTERMINATIONTESTER_HPP__
00011 
00012 #include "IpIterativeSolverTerminationTester.hpp"
00013 
00014 namespace Ipopt
00015 {
00016 
00020   class InexactPDTerminationTester: public IterativeSolverTerminationTester
00021   {
00022   public:
00027     InexactPDTerminationTester();
00028 
00030     virtual ~InexactPDTerminationTester();
00032 
00033     /* overloaded from AlgorithmStrategyObject */
00034     virtual bool InitializeImpl(const OptionsList& options,
00035                                 const std::string& prefix);
00036 
00039     static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
00041 
00044     virtual bool InitializeSolve();
00045 
00052     virtual ETerminationTest TestTerminaion(Index ndim, const Number* sol,
00053                                             const Number* resid, Index iter,
00054                                             Number norm2_rhs);
00055 
00058     virtual void Clear();
00059 
00062     virtual Index GetSolverIterations() const
00063     {
00064       return last_iter_;
00065     }
00066 
00067   private:
00077     InexactPDTerminationTester& operator=(const InexactPDTerminationTester&);
00079 
00083     Number tcc_psi_;
00085     Number tcc_theta_;
00087     Number tcc_zeta_;
00089     Number tt_kappa1_;
00091     Number tt_kappa2_;
00093     Number tt_eps2_;
00095     Number tt_eps3_;
00098     Number rho_;
00100     Number inexact_desired_pd_residual_;
00102     Index inexact_desired_pd_residual_iter_;
00104 
00108     SmartPtr<const Vector> curr_Av_c_;
00109     SmartPtr<const Vector> curr_Av_d_;
00110     Number c_norm_;
00111     SmartPtr<const Vector> curr_c_plus_Av_c_;
00112     SmartPtr<const Vector> curr_c_plus_Av_d_;
00113     Number c_plus_Av_norm_;
00114     Number v_norm_scaled_;
00115     SmartPtr<const Vector> curr_grad_barrier_obj_x_;
00116     SmartPtr<const Vector> curr_grad_barrier_obj_s_;
00117     SmartPtr<const Matrix> curr_jac_c_;
00118     SmartPtr<const Matrix> curr_jac_d_;
00119     SmartPtr<const Vector> curr_scaling_slacks_;
00120     SmartPtr<Vector> curr_nabla_phi_plus_ATy_x_;
00121     SmartPtr<Vector> curr_nabla_phi_plus_ATy_s_;
00122     Number curr_Av_norm_;
00123     Number curr_tt1_norm_;
00124     Number curr_tt2_norm_;
00125     SmartPtr<const Vector> curr_Wv_x_;
00126     SmartPtr<const Vector> curr_Wv_s_;
00127     bool try_tt2_;
00129 
00133     SmartPtr<const Vector> last_grad_barrier_obj_x_;
00134     SmartPtr<const Vector> last_grad_barrier_obj_s_;
00135     SmartPtr<const Matrix> last_jac_c_;
00136     SmartPtr<const Matrix> last_jac_d_;
00137     SmartPtr<const Vector> last_scaling_slacks_;
00138     Number last_Av_norm_;
00139     Number last_tt1_norm_;
00141 
00143     Index last_iter_;
00144   };
00145 
00146 } // namespace Ipopt
00147 
00148 #endif

Generated on Wed Jan 14 03:00:32 2009 by  doxygen 1.4.7