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