summaryrefslogtreecommitdiff
path: root/thirdparty/linux/include/coin/IpConvCheck.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/linux/include/coin/IpConvCheck.hpp')
-rw-r--r--thirdparty/linux/include/coin/IpConvCheck.hpp87
1 files changed, 87 insertions, 0 deletions
diff --git a/thirdparty/linux/include/coin/IpConvCheck.hpp b/thirdparty/linux/include/coin/IpConvCheck.hpp
new file mode 100644
index 0000000..033fce4
--- /dev/null
+++ b/thirdparty/linux/include/coin/IpConvCheck.hpp
@@ -0,0 +1,87 @@
+// Copyright (C) 2004, 2009 International Business Machines and others.
+// All Rights Reserved.
+// This code is published under the Eclipse Public License.
+//
+// $Id: IpConvCheck.hpp 1861 2010-12-21 21:34:47Z andreasw $
+//
+// Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
+
+#ifndef __IPCONVCHECK_HPP__
+#define __IPCONVCHECK_HPP__
+
+#include "IpAlgStrategy.hpp"
+
+namespace Ipopt
+{
+
+ /** Base class for checking the algorithm
+ * termination criteria.
+ */
+ class ConvergenceCheck : public AlgorithmStrategyObject
+ {
+ public:
+ /**@name Constructors/Destructors */
+ //@{
+ /** Constructor */
+ ConvergenceCheck()
+ {}
+
+ /** Default destructor */
+ virtual ~ConvergenceCheck()
+ {}
+ //@}
+
+ /** Convergence return enum */
+ enum ConvergenceStatus {
+ CONTINUE,
+ CONVERGED,
+ CONVERGED_TO_ACCEPTABLE_POINT,
+ MAXITER_EXCEEDED,
+ CPUTIME_EXCEEDED,
+ DIVERGING,
+ USER_STOP,
+ FAILED
+ };
+
+ /** overloaded from AlgorithmStrategyObject */
+ virtual bool InitializeImpl(const OptionsList& options,
+ const std::string& prefix) = 0;
+
+ /** Pure virtual method for performing the convergence test. If
+ * call_intermediate_callback is true, the user callback method
+ * in the NLP should be called in order to see if the user
+ * requests an early termination. */
+ virtual ConvergenceStatus
+ CheckConvergence(bool call_intermediate_callback = true) = 0;
+
+ /** Method for testing if the current iterate is considered to
+ * satisfy the "accptable level" of accuracy. The idea is that
+ * if the desired convergence tolerance cannot be achieved, the
+ * algorithm might stop after a number of acceptable points have
+ * been encountered. */
+ virtual bool CurrentIsAcceptable()=0;
+
+ private:
+ /**@name Default Compiler Generated Methods
+ * (Hidden to avoid implicit creation/calling).
+ * These methods are not implemented and
+ * we do not want the compiler to implement
+ * them for us, so we declare them private
+ * and do not define them. This ensures that
+ * they will not be implicitly created/called. */
+ //@{
+ /** Default Constructor */
+ // ConvergenceCheck();
+
+ /** Copy Constructor */
+ ConvergenceCheck(const ConvergenceCheck&);
+
+ /** Overloaded Equals Operator */
+ void operator=(const ConvergenceCheck&);
+ //@}
+
+ };
+
+} // namespace Ipopt
+
+#endif