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

Comparing trunk/OOPSE/libmdtools/Minimizer1D.cpp (file contents):
Revision 1009 by tim, Tue Feb 3 15:21:32 2004 UTC vs.
Revision 1010 by tim, Tue Feb 3 20:43:08 2004 UTC

# Line 2 | Line 2 | void Minimizer1D::Minimize(vector<double>& direction),
2   #include "math.h"
3  
4   //----------------------------------------------------------------------------//
5 < void Minimizer1D::Minimize(vector<double>& direction), double left, double right); {
5 > void Minimizer1D::Minimize(vector<double>& direction, double left, double right){
6    setDirection(direction);
7    setRange(left,right);
8    minimize();
# Line 17 | Line 17 | int GoldenSectionMinimizer::checkConvergence(){
17   int GoldenSectionMinimizer::checkConvergence(){
18  
19    if ((rightVar - leftVar) < stepTol)
20 <    return 1
20 >    return 1;
21    else
22      return -1;
23   }
# Line 97 | Line 97 | void BrentMinimizer::minimize(){
97    double e;
98    double etemp;
99    double stepTol2;
100 <  double fLeft, fRight;
100 >  double fLeftVar, fRightVar;
101    const double goldenRatio = 0.3819660;
102    vector<double> tempX, currentX;
103    
# Line 108 | Line 108 | void BrentMinimizer::minimize(){
108    currentX = tempX = model->getX();
109  
110    tempX = currentX + leftVar * direction;
111 <  fLeft = model->calcF(tempX);
111 >  fLeftVar = model->calcF(tempX);
112    
113    tempX = currentX + rightVar * direction;
114 <  fRight = model->calcF(tempX);
114 >  fRightVar = model->calcF(tempX);
115  
116 <  if(fRight < fLeft) {
117 <    prevMinPoint = rightVar;
118 <    fPrevMinVar = fRight;
116 >  if(fRightVar < fLeftVar) {
117 >    prevMinVar = rightVar;
118 >    fPrevMinVar = fRightVar;
119      v  = leftVar;
120      fv = fLeftVar;
121    }
122    else {
123      prevMinVar = leftVar;
124 <    fPrevMinVar = fLeft;
124 >    fPrevMinVar = fLeftVar;
125      v  = rightVar;
126 <    fv = fRight;
126 >    fv = fRightVar;
127    }
128 +
129 +  midVar = leftVar + rightVar;
130    
131    for(currentIter = 0; currentIter < maxIteration; currentIter){
132  
# Line 144 | Line 146 | void BrentMinimizer::minimize(){
146         etemp = e;
147         e  = d;
148  
149 <       if(fabs(p) >= fabs(0.5*q*etemp)) || p <= q*(leftVar - minVar) || p >= q*(rightVar - minVar)){
149 >       if(fabs(p) >= fabs(0.5*q*etemp) || p <= q*(leftVar - minVar) || p >= q*(rightVar - minVar)){
150           e =  minVar >= midVar ? leftVar - minVar : rightVar - minVar;
151           d = goldenRatio * e;
152         }
# Line 207 | Line 209 | void BrentMinimizer::minimize(){
209  
210  
211    minStatus = MINSTATUS_MAXITER;
212 <  return;
211 <
212 < //----------------------------------------------------------------------------//
213 <  
212 >  return;  
213   }
214  
215 < BrentMinimizer::checkConvergence(){
215 > int BrentMinimizer::checkConvergence(){
216    
217    if (fabs(minVar - midVar) <  stepTol)
218      return 1;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines