Ipopt
trunk
|
00001 // Copyright (C) 2008 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: Andreas Waechter IBM 2008-09-19 00008 00009 #ifndef __IPINEXACTNORMALTERMINATIONTESTER_HPP__ 00010 #define __IPINEXACTNORMALTERMINATIONTESTER_HPP__ 00011 00012 #include "IpIterativeSolverTerminationTester.hpp" 00013 00014 namespace Ipopt 00015 { 00016 00020 class InexactNormalTerminationTester: public IterativeSolverTerminationTester 00021 { 00022 public: 00027 InexactNormalTerminationTester(); 00028 00030 virtual ~InexactNormalTerminationTester(); 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 00060 00063 virtual Index GetSolverIterations() const 00064 { 00065 return last_iter_; 00066 } 00067 00071 void Set_c_Avc_norm_cauchy(Number c_Avc_norm_cauchy) 00072 { 00073 c_Avc_norm_cauchy_ = c_Avc_norm_cauchy; 00074 } 00075 00076 private: 00086 InexactNormalTerminationTester& operator=(const InexactNormalTerminationTester&); 00088 00092 Number inexact_normal_tol_; 00094 Index inexact_normal_max_iter_; 00096 bool requires_scaling_; 00098 00101 Number c_Avc_norm_cauchy_; 00102 00104 Index last_iter_; 00105 }; 00106 00107 } // namespace Ipopt 00108 00109 #endif