00001 // Copyright (C) 2004, 2009 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // $Id: IpRestoConvCheck.hpp 1485 2009-07-01 18:54:23Z andreasw $ 00006 // 00007 // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13 00008 // 00009 // was originally IpRestoFilterConvCheck.hpp (rev 781) 00010 // separated by A Waechter IBM 2008-06-24 00011 00012 #ifndef __IPRESTOCONVCHECK_HPP__ 00013 #define __IPRESTOCONVCHECK_HPP__ 00014 00015 #include "IpOptErrorConvCheck.hpp" 00016 #include "IpBacktrackingLSAcceptor.hpp" 00017 00018 namespace Ipopt 00019 { 00020 00029 class RestoConvergenceCheck : 00030 public OptimalityErrorConvergenceCheck 00031 { 00032 public: 00036 RestoConvergenceCheck(); 00037 00039 virtual ~RestoConvergenceCheck(); 00041 00043 virtual bool InitializeImpl(const OptionsList& options, 00044 const std::string& prefix); 00045 00047 virtual ConvergenceStatus CheckConvergence(bool call_intermediate_callback = true); 00048 00050 virtual void SetOrigLSAcceptor(const BacktrackingLSAcceptor& orig_ls_acceptor) = 0; 00051 00054 static void RegisterOptions(SmartPtr<RegisteredOptions> roptions); 00056 private: 00064 RestoConvergenceCheck(const RestoConvergenceCheck&); 00065 00067 void operator=(const RestoConvergenceCheck&); 00069 00072 virtual ConvergenceStatus 00073 TestOrigProgress(Number orig_trial_barr, Number orig_trial_theta) = 0; 00074 00079 Number kappa_resto_; 00081 Index maximum_iters_; 00083 Index maximum_resto_iters_; 00085 Number orig_constr_viol_tol_; 00087 00091 bool first_resto_iter_; 00092 00094 Index successive_resto_iter_; 00095 }; 00096 00097 } // namespace Ipopt 00098 00099 #endif