ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/NLModel.hpp
(Generate patch)

Comparing trunk/OOPSE/libmdtools/NLModel.hpp (file contents):
Revision 1015 by tim, Tue Feb 3 22:54:52 2004 UTC vs.
Revision 1023 by tim, Wed Feb 4 22:26:00 2004 UTC

# Line 20 | Line 20 | class NLModel{
20   //abstract class of nonlinear optimization model
21   class NLModel{
22    public:    
23 <    NLModel(ConstraintList* cons) {constraints = cons;}
23 >    NLModel(int dim, ConstraintList* cons) { ndim = dim, constraints = cons;}
24      virtual ~NLModel() {  if (constraints != NULL) delete constraints;}
25  
26      virtual void setX(const vector<double>& x)= 0;
# Line 35 | Line 35 | class NLModel{
35      int getConsType() {  return constraints->getConsType();}
36  
37      virtual double calcF()  = 0;
38 <    virtual double calcF(const vector<double>& x)  = 0;
38 >    virtual double calcF(vector<double>& x)  = 0;
39      virtual vector<double> calcGrad()  = 0;
40      virtual vector<double> calcGrad(vector<double>& x)  = 0;
41      virtual SymMatrix calcHessian()  = 0;
# Line 49 | Line 49 | class NLModel{
49   #endif
50  
51    protected:
52 +    NLModel() {}
53      ConstraintList* constraints;       //constraints of nonlinear optimization model
54      int numOfFunEval;                  //number of function evaluation
55      int ndim;
# Line 69 | Line 70 | class NLModel0 : public NLModel{
70   class NLModel0 : public NLModel{
71    public:
72  
73 <    NLModel0(int dim,  ConstraintList* cons = NULL);
73 >    NLModel0(int dim,  ConstraintList* cons) : NLModel(dim, cons) { currentX.resize(dim);}
74      ~NLModel0() {}
75  
76      virtual void setX(const vector<double>& x) {currentX = x;}
# Line 90 | Line 91 | class NLModel0 : public NLModel{
91      //virtual SymMatrix FiniteHessian(vector<double>& x, double fx, vector<double>& h);
92      SymMatrix FiniteHessian(vector<double>& x, double fx, vector<double>& h);
93    protected:
94 +    NLModel0() {}
95  
96      FDType fdType;
97      vector<double> currentX;
# Line 98 | Line 100 | class ConcreteNLMode0 : public NLModel0{
100  
101   //concrete class of nonlinear optimization model without derivatives
102  
103 < class ConcreteNLMode0 : public NLModel0{
103 > class ConcreteNLModel0 : public NLModel0{
104  
105    public:
106  
107 <    ConcreteNLMode0(int dim, ObjFunctor0* func ,  ConstraintList* cons = NULL);
108 <    ConcreteNLMode0(int dim, ConstraintList* cons = NULL);
107 >    ConcreteNLModel0(int dim, ObjFunctor0* func ,  ConstraintList* cons = NULL) : NLModel0(dim, cons){objfunc = func;}
108 >  
109  
110      virtual double calcF();
111      virtual double calcF(vector<double>& x);
# Line 122 | Line 124 | class NLModel1 : public NLModel0{
124   class NLModel1 : public NLModel0{
125  
126    public:
127 <    
127 >    NLModel1(int dim,  ConstraintList* cons ) : NLModel0(dim, cons){currentGrad.resize(dim);}
128      //Using finite difference methods to approximate the hessian
129      //It is inappropriate to apply this method in large scale problem    
130      virtual SymMatrix FiniteHessian(vector<double>& x, vector<double>& h);
# Line 135 | Line 137 | class ConcreteNLMode1 : NLModel1{
137   };
138  
139   //concrete class of nonlinear optimization model with first derivatives
140 < class ConcreteNLMode1 : NLModel1{
140 > class ConcreteNLModel1 : public NLModel1{
141  
142    public:
143  
144 <    ConcreteNLMode1(int dim, ObjFunctor1* func ,  ConstraintList* cons = NULL);
143 <    ConcreteNLMode1(int dim, ConstraintList* cons = NULL);
144 >    ConcreteNLModel1(int dim, ObjFunctor1* func ,  ConstraintList* cons = NULL);
145      
146 +    
147      virtual double calcF();
148      virtual double calcF(vector<double>& x);
149      virtual vector<double> calcGrad();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines