| 1 | #ifndef _MININIZERPARAMETERSET_H_ | 
| 2 | #define _MININIZERPARAMETERSET_H_ | 
| 3 |  | 
| 4 | const double DEFAULTTOLERANCE = 1.0e-8; | 
| 5 |  | 
| 6 | // base class of minimizer's parameter set | 
| 7 | class MinimizerParameterSet{ | 
| 8 | public: | 
| 9 |  | 
| 10 | MinimizerParameterSet() {setDefaultParameter();} | 
| 11 | MinimizerParameterSet(MinimizerParameterSet& param) {*this = param;} | 
| 12 |  | 
| 13 | void operator= (MinimizerParameterSet& param) { | 
| 14 |  | 
| 15 | maxIteration = param.maxIteration; | 
| 16 | stepSize = param.stepSize; | 
| 17 | stepTol = param.stepTol; | 
| 18 | fTol = param.fTol; | 
| 19 | gTol = param.gTol; | 
| 20 |  | 
| 21 | writeFrq = param.writeFrq; | 
| 22 |  | 
| 23 | lsMaxIteration = param.lsMaxIteration; | 
| 24 | lsTol = param.lsTol; | 
| 25 |  | 
| 26 | } | 
| 27 |  | 
| 28 | virtual void setDefaultParameter(){ | 
| 29 | maxIteration = 200; | 
| 30 | stepSize = 0.01; | 
| 31 | stepTol = DEFAULTTOLERANCE; | 
| 32 | fTol = DEFAULTTOLERANCE; | 
| 33 | gTol = DEFAULTTOLERANCE; | 
| 34 |  | 
| 35 | writeFrq = maxIteration; | 
| 36 |  | 
| 37 | lsMaxIteration = 50; | 
| 38 | lsTol = DEFAULTTOLERANCE; | 
| 39 | } | 
| 40 |  | 
| 41 | void setStepTol(double tol) { stepTol = tol;} | 
| 42 | double getStepTol() { return stepTol;} | 
| 43 |  | 
| 44 | void setStepSize(double size) {  stepSize = size;} | 
| 45 | double getStepSize() { return stepSize;} | 
| 46 |  | 
| 47 | void setMaxIteration(int iter) { maxIteration = iter;} | 
| 48 | int getMaxIteration() {return maxIteration;} | 
| 49 |  | 
| 50 | void setFTol(double tol) {fTol = tol;} | 
| 51 | double getFTol() {return fTol;} | 
| 52 |  | 
| 53 | void setGTol(double tol) {gTol = tol;} | 
| 54 | double getGTol() {return gTol;} | 
| 55 |  | 
| 56 | void setLineSearchTol(double tol) {lsTol = tol;} | 
| 57 | double getLineSearchTol() {return lsTol;} | 
| 58 |  | 
| 59 | void setLineSearchMaxIteration(int iter) {lsMaxIteration = iter;} | 
| 60 | int getLineSearchMaxIteration() {return lsMaxIteration;} | 
| 61 |  | 
| 62 | void setWriteFrq(int frq) {writeFrq = frq;} | 
| 63 | int getWriteFrq() {return writeFrq;} | 
| 64 |  | 
| 65 | protected: | 
| 66 |  | 
| 67 | int maxIteration; | 
| 68 | double stepTol; | 
| 69 | double fTol; | 
| 70 | double gTol; | 
| 71 | double stepSize; | 
| 72 |  | 
| 73 | int lsMaxIteration; | 
| 74 | double lsTol; | 
| 75 |  | 
| 76 | int writeFrq; | 
| 77 | //int resetFrq; | 
| 78 | /* | 
| 79 | // Absolute tolerance | 
| 80 | vector<double> absTol; | 
| 81 |  | 
| 82 | // Relative tolerance | 
| 83 | vector<double> relTol; | 
| 84 |  | 
| 85 | // Total specified tolerance at convergence | 
| 86 | vector<double> totTol; | 
| 87 |  | 
| 88 | // Tolerance achieved at convergence. | 
| 89 | vector<double> achTol; | 
| 90 | */ | 
| 91 | }; | 
| 92 |  | 
| 93 |  | 
| 94 | #endif |