ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/Minimizer1D.cpp
Revision: 1002
Committed: Mon Feb 2 20:29:41 2004 UTC (20 years, 5 months ago) by tim
File size: 1797 byte(s)
Log Message:
Adding GoldenSection and Brent LineSearch Method

File Contents

# Content
1 #include "Minimizer1D.hpp"
2 void Minimizer1D::Minimize(vector<double>& direction), double left, double right); {
3 setDirection(direction);
4 setRange(left,right);
5 minimize();
6 }
7
8 int Minimizer1D::checkConvergence(){
9
10 if ((rightVar - leftVar) < stepTol)
11 return
12 else
13 return -1;
14 }
15
16 void GoldenSectionMinimizer::minimize(){
17 vector<double> tempX;
18 vector <double> currentX;
19
20 const double goldenRatio = 0.618034;
21
22 currentX = model->getX();
23
24 alpha = leftVar + (1 - goldenRatio) * (rightVar - leftVar);
25 beta = leftVar + goldenRatio * (rightVar - leftVar);
26
27 tempX = currentX + direction * alpha;
28 fAlpha = model->calcF(tempX);
29
30 tempX = currentX + direction * beta;
31 fBeta = model->calcF(tempX);
32
33 for(currentIter = 0; currentIter < maxIteration; currentIter++){
34
35 if (checkConvergence() > 0){
36 minStatus = MINSTATUS_CONVERGE;
37 return;
38 }
39
40 if (fAlpha > fBeta){
41 leftVar = alpha;
42 alpha = beta;
43 beta = leftVar + goldenRatio * (rightVar - leftVar);
44
45 tempX = currentX + beta * direction;
46
47 prevMinVar = minVar;
48 fPrevMinVar = fMinVar;
49
50 minVar = beta;
51 fMinVar = model->calcF(tempX);
52
53 }
54 else{
55 rightVar = beta;
56 beta = alpha;
57 alpha = leftVar + (1 - goldenRatio) * (rightVar - leftVar);
58
59 tempX = currentX + alpha * direction;
60
61 prevMinVar = minVar;
62 fPrevMinVar = fMinVar;
63
64 minVar = alpha;
65 fMinVar = model->calcF(tempX);
66 }
67
68 }
69
70 minStatus = MINSTATUS_MAXITER;
71
72 }
73
74 /*
75 *
76 */
77
78 void BrentMinimizer::minimize(){
79
80 for(currentIter = 0; currentIter < maxIteration; currentIter){
81
82
83
84
85 }
86
87
88 minStatus = MINSTATUS_MAXITER;
89 return;
90 }

Properties

Name Value
svn:executable *