Ipopt
trunk
|
00001 // Copyright (C) 2004, 2009 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: 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 CPUTIME_EXCEEDED, 00041 DIVERGING, 00042 USER_STOP, 00043 FAILED 00044 }; 00045 00047 virtual bool InitializeImpl(const OptionsList& options, 00048 const std::string& prefix) = 0; 00049 00054 virtual ConvergenceStatus 00055 CheckConvergence(bool call_intermediate_callback = true) = 0; 00056 00062 virtual bool CurrentIsAcceptable()=0; 00063 00064 private: 00074 // ConvergenceCheck(); 00075 00077 ConvergenceCheck(const ConvergenceCheck&); 00078 00080 void operator=(const ConvergenceCheck&); 00082 00083 }; 00084 00085 } // namespace Ipopt 00086 00087 #endif