ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/Minimizer1D.hpp
Revision: 1005
Committed: Tue Feb 3 15:21:32 2004 UTC (20 years, 7 months ago) by tim
File size: 2062 byte(s)
Log Message:
begin unit test of minimizer

File Contents

# User Rev Content
1 tim 1002 #ifndef _MINIMIZER1D_H_
2     #define _MINIMIZER1D_H_
3    
4     #include "MinimizerBase.hpp"
5    
6     //abstract class of one dimension minimizer for line searching
7     // optimize f(x+val*direction)
8     //some potential problem, such as which class is responsible for deleting NLModel,
9     //can be resolved by using smart pointer
10     class Minimizer1D : public MinimizerBase{
11    
12     public:
13     Minimizer1D(NLModel* nlp) {model = nlp;}
14     virtual ~Minimizer1D() {}
15    
16     virtual void init() {}
17     virtual bool isSolvable();
18    
19     virtual void Minimize() = 0;
20 tim 1005 virtual void Minimize(vector<double>& direction, double left, double right){
21     setRange(left, right);
22     setDirection(direction);
23     minimize();
24     }
25 tim 1002
26     void setRange(double left, double right) {leftFVal = left, rightVal = right;}
27     void setDirection(vector<double>& direction) {this->direction = direction;}
28     double getMinVar() {return minVar;}
29     double getPrevMinVar() {return prevMinVar;}
30    
31     void setMaxIteration(int iter) {maxIteration = iter;}
32    
33     int getMaxIteration() {return maxIteration;}
34     int getCurrentIteration() {return currentIter;}
35    
36     void setStepTol(double tol) {stepTol =tol;}
37     double getStepTol() {return stepTol;}
38     protected:
39    
40     NLModel* model;
41     double leftVar;
42     double rightVar;
43     double minVar;
44 tim 1005 double prevMinVar;
45    
46 tim 1002 vector<double> direction;
47    
48     int maxIteration;
49     int currentIter;
50     int stepTol;
51     };
52    
53     class GoldenSectionMinimizer : public Minimizer1D{
54    
55     public:
56    
57 tim 1005 GoldenSectionMinimizer(NLModel* nlp);
58 tim 1002 void Minimize();
59 tim 1005
60     virtual int checkConvergence();
61    
62     protected:
63 tim 1002
64 tim 1005 double fMinVar;
65     double fPrevMinVar;
66 tim 1002
67     double fAlpha;
68     double fBeta;
69     double alpha;
70     double beta;
71    
72     };
73    
74     class BrentMinimizer : public Minimizer1D{
75     public:
76 tim 1005
77 tim 1002 BrentMinimizer(NLModel* nlp);
78 tim 1005
79 tim 1002 void minimize();
80 tim 1005
81     virtual int checkConvergence();
82 tim 1002 protected:
83 tim 1005
84     double fMinVar;
85     double fPrevMinVar;
86     double midVar;
87 tim 1002
88     };
89     #endif

Properties

Name Value
svn:executable *