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: IpConvCheck.hpp 735 2006-06-04 06:10:05Z andreasw $ 00006 // 00007 // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13 00008 00009 #ifndef __IPCONVCHECK_HPP__ 00010 #define __IPCONVCHECK_HPP__ 00011 00012 #include "IpAlgStrategy.hpp" 00013 00014 namespace Ipopt 00015 { 00016 00020 class ConvergenceCheck : public AlgorithmStrategyObject 00021 { 00022 public: 00026 ConvergenceCheck() 00027 {} 00028 00030 virtual ~ConvergenceCheck() 00031 {} 00033 00035 enum ConvergenceStatus { 00036 CONTINUE, 00037 CONVERGED, 00038 CONVERGED_TO_ACCEPTABLE_POINT, 00039 MAXITER_EXCEEDED, 00040 DIVERGING, 00041 USER_STOP, 00042 FAILED 00043 }; 00044 00046 virtual bool InitializeImpl(const OptionsList& options, 00047 const std::string& prefix) = 0; 00048 00053 virtual ConvergenceStatus 00054 CheckConvergence(bool call_intermediate_callback = true) = 0; 00055 00061 virtual bool CurrentIsAcceptable()=0; 00062 00063 private: 00073 // ConvergenceCheck(); 00074 00076 ConvergenceCheck(const ConvergenceCheck&); 00077 00079 void operator=(const ConvergenceCheck&); 00081 00082 }; 00083 00084 } // namespace Ipopt 00085 00086 #endif