00001 // Copyright (C) 2004, 2006 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // $Id: IpRestoFilterConvCheck.hpp 781 2006-08-31 17:55:22Z andreasw $ 00006 // 00007 // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13 00008 00009 #ifndef __IPRESTOFILTERCONVCHECK_HPP__ 00010 #define __IPRESTOFILTERCONVCHECK_HPP__ 00011 00012 #include "IpOptErrorConvCheck.hpp" 00013 #include "IpFilterLSAcceptor.hpp" 00014 00015 namespace Ipopt 00016 { 00017 00031 class RestoFilterConvergenceCheck : 00032 public OptimalityErrorConvergenceCheck 00033 { 00034 public: 00038 RestoFilterConvergenceCheck(); 00039 00041 virtual ~RestoFilterConvergenceCheck(); 00043 00049 void SetOrigFilterLSAcceptor(const FilterLSAcceptor& orig_filter_ls_acceptor); 00050 00052 virtual bool InitializeImpl(const OptionsList& options, 00053 const std::string& prefix); 00054 00056 virtual ConvergenceStatus CheckConvergence(bool call_intermediate_callback = true); 00057 00060 static void RegisterOptions(SmartPtr<RegisteredOptions> roptions); 00062 private: 00070 RestoFilterConvergenceCheck(const RestoFilterConvergenceCheck&); 00071 00073 void operator=(const RestoFilterConvergenceCheck&); 00075 00080 Number kappa_resto_; 00082 Index maximum_iters_; 00084 Index maximum_resto_iters_; 00086 00090 bool first_resto_iter_; 00091 00093 Index successive_resto_iter_; 00094 00100 const FilterLSAcceptor* orig_filter_ls_acceptor_; 00101 }; 00102 00103 } // namespace Ipopt 00104 00105 #endif