| 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 |
+ |
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;} |
| 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{ |
| 52 |
|
|
| 53 |
|
GoldenSectionMinimizer(NLModel* nlp); |
| 54 |
|
void minimize(); |
| 55 |
< |
|
| 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 |
|
|