ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/Minimizer1D.hpp
Revision: 1015
Committed: Tue Feb 3 22:54:52 2004 UTC (20 years, 5 months ago) by tim
File size: 2060 byte(s)
Log Message:
NLModel0, NLModel1 pass uit test

File Contents

# Content
1 #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 virtual void minimize(vector<double>& direction, double left, double right){
21 setRange(left, right);
22 setDirection(direction);
23 minimize();
24 }
25
26 void setRange(double left, double right) {leftVar = left, rightVar= 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 double prevMinVar;
45
46 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 GoldenSectionMinimizer(NLModel* nlp);
58 void minimize();
59
60 virtual int checkConvergence();
61
62 protected:
63
64 double fMinVar;
65 double fPrevMinVar;
66
67 double fAlpha;
68 double fBeta;
69 double alpha;
70 double beta;
71
72 };
73
74 class BrentMinimizer : public Minimizer1D{
75 public:
76
77 BrentMinimizer(NLModel* nlp);
78
79 void minimize();
80
81 virtual int checkConvergence();
82 protected:
83
84 double fMinVar;
85 double fPrevMinVar;
86 double midVar;
87
88 };
89 #endif

Properties

Name Value
svn:executable *