• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

/build/buildd/coinor-ipopt-3.8.3/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 1702 2010-06-29 13:16:53Z 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 TestTermination(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_;
00088     Number tcc_theta_mu_exponent_;
00090     Number tcc_zeta_;
00092     Number tt_kappa1_;
00094     Number tt_kappa2_;
00096     Number tt_eps2_;
00098     Number tt_eps3_;
00101     Number rho_;
00103     Number inexact_desired_pd_residual_;
00105     Index inexact_desired_pd_residual_iter_;
00107     bool requires_scaling_;
00109 
00113     SmartPtr<const Vector> curr_Av_c_;
00114     SmartPtr<const Vector> curr_Av_d_;
00115     Number c_norm_;
00116     Number c_plus_Av_norm_;
00117     Number v_norm_scaled_;
00118     SmartPtr<const Vector> curr_grad_barrier_obj_x_;
00119     SmartPtr<const Vector> curr_grad_barrier_obj_s_;
00120     SmartPtr<const Matrix> curr_jac_c_;
00121     SmartPtr<const Matrix> curr_jac_d_;
00122     SmartPtr<const Vector> curr_scaling_slacks_;
00123     SmartPtr<Vector> curr_nabla_phi_plus_ATy_x_;
00124     SmartPtr<Vector> curr_nabla_phi_plus_ATy_s_;
00125     Number curr_Av_norm_;
00126     Number curr_tt1_norm_;
00127     Number curr_tt2_norm_;
00128     SmartPtr<const Vector> curr_Wv_x_;
00129     SmartPtr<const Vector> curr_Wv_s_;
00130     bool try_tt2_;
00132 
00136     Number last_Av_norm_;
00137     Number last_tt1_norm_;
00139 
00141     Index last_iter_;
00142   };
00143 
00144 } // namespace Ipopt
00145 
00146 #endif

Generated on Sat Oct 16 2010 02:54:50 by  doxygen 1.7.1