17 |
|
virtual bool isSolvable(); |
18 |
|
|
19 |
|
virtual void Minimize() = 0; |
20 |
< |
virtual void Minimize(vector<double>& direction, double left, double right); |
20 |
> |
virtual void Minimize(vector<double>& direction, double left, double right){ |
21 |
> |
setRange(left, right); |
22 |
> |
setDirection(direction); |
23 |
> |
minimize(); |
24 |
> |
} |
25 |
|
|
22 |
– |
virtual int checkConvergence(); |
23 |
– |
|
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;} |
40 |
|
NLModel* model; |
41 |
|
double leftVar; |
42 |
|
double rightVar; |
41 |
– |
double fLeft; |
42 |
– |
double fRight; |
43 |
|
double minVar; |
44 |
< |
double fMinVar; |
45 |
< |
double prevMinVar; |
46 |
< |
double fPrevMinVar; |
47 |
< |
|
44 |
> |
double prevMinVar; |
45 |
> |
|
46 |
|
vector<double> direction; |
47 |
|
|
48 |
|
int maxIteration; |
54 |
|
|
55 |
|
public: |
56 |
|
|
57 |
< |
GoldenSectionMinimizer(NLModel* nlp) : Minimizer1D(nlp) {} |
57 |
> |
GoldenSectionMinimizer(NLModel* nlp); |
58 |
|
void Minimize(); |
59 |
< |
|
59 |
> |
|
60 |
> |
virtual int checkConvergence(); |
61 |
> |
|
62 |
|
protected: |
63 |
+ |
|
64 |
+ |
double fMinVar; |
65 |
+ |
double fPrevMinVar; |
66 |
|
|
67 |
|
double fAlpha; |
68 |
|
double fBeta; |
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 |