1 #ifndef NLPBase_h 2 #define NLPBase_h 3 4 /*---------------------------------------------------------------------- 5 Copyright (c) 2001, Sandia Corporation. Under the terms of Contract 6 DE-AC04-94AL85000, there is a non-exclusive license for use of this 7 work by or on behalf of the U.S. Government. 8 9 P.J. Williams, Sandia National Laboratories, pwillia@sandia.gov 10 ----------------------------------------------------------------------*/ 11 12 #ifdef HAVE_CONFIG_H 13 #include "OPT++_config.h" 14 #endif 15 16 #include <iostream> 17 #include <fstream> 18 #ifdef HAVE_STD 19 #include <cstring> 20 #include <cfloat> 21 #include <cmath> 22 #else 23 #include <string.h> 24 #include <float.h> 25 #include <math.h> 26 #endif 27 28 using std::ostream; 29 30 #include "globals.h" 31 #include "precisio.h" 32 #include "OptppArray.h" 33 #include "OptppFatalError.h" 34 #include "OptppExceptions.h" 35 36 37 namespace OPTPP { 38 39 /** 40 * NLPBase is the Base Class for NonLinear Programming Problem 41 * 42 * @author P.J. Williams, Sandia National Laboratories, pwillia@sandia.gov 43 * @date Last modified 03/2007 44 */ 45 46 class NLPBase{ 47 48 public: 49 // Destructor ~NLPBase()50 virtual ~NLPBase() {;} 51 52 // set and Accessor Methods 53 virtual void setX(const int i, const real& x) = 0; 54 virtual void setX(const NEWMAT::ColumnVector& x) = 0; 55 56 virtual void setF(const real& fx) = 0; 57 58 virtual void setIsExpensive(const int e) = 0; 59 60 virtual void setFcnAccrcy(const int i, const real& accrcy) = 0; 61 virtual void setFcnAccrcy(const NEWMAT::ColumnVector& accrcy) = 0; 62 63 virtual int getDim() const = 0; 64 virtual int getFevals() const = 0; 65 virtual int getIsExpensive() const = 0; 66 virtual real getF() const = 0; 67 virtual NEWMAT::ColumnVector getFcnAccrcy() const = 0; 68 virtual NEWMAT::ColumnVector getXc() const = 0; 69 virtual real getFcnTime() const = 0; 70 71 // Constraint Accessor Methods 72 virtual int getNumOfCons() const = 0; 73 virtual int getNumOfNLCons() const = 0; 74 virtual bool hasConstraints() = 0; 75 virtual void printConstraints() = 0; 76 77 // Reset values to allow multiple instantiations 78 virtual void reset() = 0; 79 80 // Debugging tools 81 virtual void setDebug() = 0; 82 virtual bool getDebug() const = 0; 83 84 // Function Evaluation Methods 85 virtual void initFcn() = 0; 86 virtual real evalF() = 0; 87 virtual real evalF(const NEWMAT::ColumnVector &x) = 0; 88 virtual NEWMAT::ColumnVector evalG() = 0; 89 virtual NEWMAT::ColumnVector evalG(const NEWMAT::ColumnVector &x) = 0; 90 virtual NEWMAT::SymmetricMatrix evalH() = 0; 91 virtual NEWMAT::SymmetricMatrix evalH(NEWMAT::ColumnVector &x) = 0; 92 virtual void eval() = 0; 93 94 // Constraint Evaluation Methods 95 virtual NEWMAT::ColumnVector evalCF(const NEWMAT::ColumnVector &x) = 0; 96 virtual NEWMAT::Matrix evalCG(const NEWMAT::ColumnVector &x) = 0; 97 virtual NEWMAT::SymmetricMatrix evalCH(NEWMAT::ColumnVector &x) = 0; 98 virtual OptppArray<NEWMAT::SymmetricMatrix> evalCH(NEWMAT::ColumnVector &x, int darg) = 0; 99 virtual void evalC(const NEWMAT::ColumnVector &x) = 0; 100 101 // Print Methods 102 virtual void printState(char *s) = 0; 103 virtual void fPrintState(ostream *nlpout, char *s) = 0; 104 105 }; 106 107 } // namespace OPTPP 108 #endif 109