1 |
|
#include "NLModel.hpp" |
2 |
+ |
#include "Utility.hpp" |
3 |
+ |
|
4 |
+ |
|
5 |
+ |
|
6 |
|
//calculate hessian using finite difference |
7 |
|
SymMatrix NLModel1::FiniteHessian(vector<double>& x, vector<double>& h){ |
8 |
|
|
67 |
|
|
68 |
|
} |
69 |
|
|
70 |
< |
double ConcreteNLMode1::calcF(){ |
70 |
> |
//----------------------------------------------------------------------------// |
71 |
> |
ConcreteNLModel1::ConcreteNLModel1(int dim, ObjFunctor1* func , ConstraintList* cons) |
72 |
> |
: NLModel1(dim, cons){ |
73 |
> |
objfunc = func; |
74 |
> |
} |
75 |
> |
double ConcreteNLModel1::calcF(){ |
76 |
|
|
77 |
|
currentF = (*objfunc)(currentX, currentGrad); |
78 |
|
numOfFunEval ++; |
80 |
|
return currentF; |
81 |
|
} |
82 |
|
|
83 |
< |
double ConcreteNLMode1::calcF(const vector<double>& x){ |
83 |
> |
double ConcreteNLModel1::calcF(vector<double>& x){ |
84 |
|
|
85 |
|
vector<double> tempGrad(x.size()); |
86 |
|
|
87 |
|
double tempF; |
88 |
|
|
89 |
< |
//tempF = (*objfunc)(x, tempGrad); |
89 |
> |
tempF = (*objfunc)(x, tempGrad); |
90 |
|
numOfFunEval ++; |
91 |
|
|
92 |
|
return tempF; |
93 |
|
} |
94 |
|
|
95 |
< |
vector<double> ConcreteNLMode1::calcGrad(){ |
95 |
> |
vector<double> ConcreteNLModel1::calcGrad(){ |
96 |
|
|
97 |
|
currentF = (*objfunc)(currentX, currentGrad); |
98 |
|
|
100 |
|
|
101 |
|
} |
102 |
|
|
103 |
< |
vector<double> ConcreteNLMode1::calcGrad(const vector<double>& x){ |
104 |
< |
vector<double> tempGrad; |
96 |
< |
//vector<double> tempGrad(x.szie()); |
103 |
> |
vector<double> ConcreteNLModel1::calcGrad(vector<double>& x){ |
104 |
> |
vector<double> tempGrad(x.size()); |
105 |
|
|
106 |
|
double tempF; |
107 |
|
|
108 |
< |
//tempF = (*objfunc)(x, tempGrad); |
108 |
> |
tempF = (*objfunc)(x, tempGrad); |
109 |
|
|
110 |
|
return tempGrad; |
111 |
|
} |
112 |
|
|
113 |
< |
/* |
114 |
< |
SymMatrix ConcreteNLMode1::calcHessian(){ |
113 |
> |
|
114 |
> |
SymMatrix ConcreteNLModel1::calcHessian(){ |
115 |
|
calcGrad(currentX); |
116 |
< |
return FiniteHessian(currentX); |
116 |
> |
|
117 |
> |
return FiniteHessian(currentX, currentX); |
118 |
|
} |
119 |
|
|
120 |
< |
SymMatrix ConcreteNLMode1::calcHessian(vector<double>& x){ |
121 |
< |
return FiniteHessian(x); |
120 |
> |
SymMatrix ConcreteNLModel1::calcHessian(vector<double>& x){ |
121 |
> |
return FiniteHessian(x, x); |
122 |
|
} |
123 |
< |
*/ |
123 |
> |
|