- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

# /home/coin/SVN-release/Ipopt-3.7.1/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 1578 2009-10-06 23:40:31Z 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