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 |
< |
} |
17 |
> |
virtual bool isSolvable() {return true;} |
18 |
|
|
19 |
< |
void setRange(double left, double right) {leftFVal = left, rightVal = right;} |
19 |
> |
virtual void minimize() = 0; |
20 |
> |
virtual void minimize(vector<double>& direction, double left, double right) = 0; |
21 |
> |
|
22 |
> |
void setRange(double left, double right) {leftVar = left, rightVar= right;} |
23 |
|
void setDirection(vector<double>& direction) {this->direction = direction;} |
24 |
|
double getMinVar() {return minVar;} |
25 |
|
double getPrevMinVar() {return prevMinVar;} |
37 |
|
double leftVar; |
38 |
|
double rightVar; |
39 |
|
double minVar; |
40 |
< |
double prevMinVar; |
40 |
> |
double prevMinVar; |
41 |
|
|
42 |
|
vector<double> direction; |
43 |
|
|
44 |
|
int maxIteration; |
45 |
|
int currentIter; |
46 |
< |
int stepTol; |
46 |
> |
double stepTol; |
47 |
|
}; |
48 |
|
|
49 |
|
class GoldenSectionMinimizer : public Minimizer1D{ |
51 |
|
public: |
52 |
|
|
53 |
|
GoldenSectionMinimizer(NLModel* nlp); |
54 |
< |
void Minimize(); |
55 |
< |
|
54 |
> |
void minimize(); |
55 |
> |
virtual void minimize(vector<double>& direction, double left, double right){ |
56 |
> |
setRange(left, right); |
57 |
> |
setDirection(direction); |
58 |
> |
minimize(); |
59 |
> |
} |
60 |
|
virtual int checkConvergence(); |
61 |
|
|
62 |
|
protected: |
77 |
|
BrentMinimizer(NLModel* nlp); |
78 |
|
|
79 |
|
void minimize(); |
80 |
< |
|
80 |
> |
virtual void minimize(vector<double>& direction, double left, double right){ |
81 |
> |
setRange(left, right); |
82 |
> |
setDirection(direction); |
83 |
> |
minimize(); |
84 |
> |
} |
85 |
|
virtual int checkConvergence(); |
86 |
|
protected: |
87 |
|
|