1 |
#ifndef _MININIZERPARAMETERSET_H_ |
2 |
|
3 |
#define _MININIZERPARAMETERSET_H_ |
4 |
|
5 |
namespace oopse { |
6 |
|
7 |
// base class of minimizer's parameter set |
8 |
|
9 |
class MinimizerParameterSet { |
10 |
public: |
11 |
|
12 |
MinimizerParameterSet() { |
13 |
setDefaultParameter(); |
14 |
} |
15 |
|
16 |
MinimizerParameterSet(MinimizerParameterSet ¶m) { |
17 |
* this = param; |
18 |
} |
19 |
|
20 |
void operator =(MinimizerParameterSet ¶m) { |
21 |
maxIteration = param.maxIteration; |
22 |
|
23 |
stepSize = param.stepSize; |
24 |
|
25 |
stepTol = param.stepTol; |
26 |
|
27 |
fTol = param.fTol; |
28 |
|
29 |
gTol = param.gTol; |
30 |
|
31 |
writeFrq = param.writeFrq; |
32 |
|
33 |
lsMaxIteration = param.lsMaxIteration; |
34 |
|
35 |
lsTol = param.lsTol; |
36 |
} |
37 |
|
38 |
virtual void setDefaultParameter() { |
39 |
maxIteration = 200; |
40 |
|
41 |
stepSize = 0.01; |
42 |
|
43 |
stepTol = DEFAULTTOLERANCE; |
44 |
|
45 |
fTol = DEFAULTTOLERANCE; |
46 |
|
47 |
gTol = DEFAULTTOLERANCE; |
48 |
|
49 |
writeFrq = maxIteration; |
50 |
|
51 |
lsMaxIteration = 50; |
52 |
|
53 |
lsTol = DEFAULTTOLERANCE; |
54 |
} |
55 |
|
56 |
void setStepTol(double tol) { |
57 |
stepTol = tol; |
58 |
} |
59 |
|
60 |
double getStepTol() { |
61 |
return stepTol; |
62 |
} |
63 |
|
64 |
void setStepSize(double size) { |
65 |
stepSize = size; |
66 |
} |
67 |
|
68 |
double getStepSize() { |
69 |
return stepSize; |
70 |
} |
71 |
|
72 |
void setMaxIteration(int iter) { |
73 |
maxIteration = iter; |
74 |
} |
75 |
|
76 |
int getMaxIteration() { |
77 |
return maxIteration; |
78 |
} |
79 |
|
80 |
void setFTol(double tol) { |
81 |
fTol = tol; |
82 |
} |
83 |
|
84 |
double getFTol() { |
85 |
return fTol; |
86 |
} |
87 |
|
88 |
void setGTol(double tol) { |
89 |
gTol = tol; |
90 |
} |
91 |
|
92 |
double getGTol() { |
93 |
return gTol; |
94 |
} |
95 |
|
96 |
void setLineSearchTol(double tol) { |
97 |
lsTol = tol; |
98 |
} |
99 |
|
100 |
double getLineSearchTol() { |
101 |
return lsTol; |
102 |
} |
103 |
|
104 |
void setLineSearchMaxIteration(int iter) { |
105 |
lsMaxIteration = iter; |
106 |
} |
107 |
|
108 |
int getLineSearchMaxIteration() { |
109 |
return lsMaxIteration; |
110 |
} |
111 |
|
112 |
void setWriteFrq(int frq) { |
113 |
writeFrq = frq; |
114 |
} |
115 |
|
116 |
int getWriteFrq() { |
117 |
return writeFrq; |
118 |
} |
119 |
|
120 |
protected: |
121 |
|
122 |
int maxIteration; |
123 |
|
124 |
double stepTol; |
125 |
|
126 |
double fTol; |
127 |
|
128 |
double gTol; |
129 |
|
130 |
double stepSize; |
131 |
|
132 |
int lsMaxIteration; |
133 |
|
134 |
double lsTol; |
135 |
|
136 |
int writeFrq; |
137 |
|
138 |
static const double DEFAULTTOLERANCE = 1.0e-8; |
139 |
|
140 |
}; |
141 |
|
142 |
} |
143 |
#endif |