78 const std::vector<std::string> &location,
79 const std::vector<std::string>::iterator iter,
80 ParameterType
value ) {
82 if( iter == location.end()-1 ) {
83 parlist.set(*iter,
value);
86 ROL::ParameterList &sublist = parlist.sublist(*iter);
97 const ROL::ParameterList &inList ) {
101 typedef std::string Str;
102 typedef std::vector<Str> Vec;
103 typedef std::map<Str,Vec> Map;
104 typedef ParameterList::ConstIterator IterPL;
105 typedef typename Vec::iterator IterVec;
106 typedef typename Map::iterator IterMap;
111 dict[
"Use Inexact Gradient"] = join(
"General",
"Inexact Gradient");
112 dict[
"Use Inexact Objective Function"] = join(
"General",
"Inexact Objective Function");
113 dict[
"Use Inexact Hessian-Times-A-Vector"] = join(
"General",
"Inexact Hessian-Times-A-Vector");
114 dict[
"Use Projected Gradient Criticality Measure"] = join(
"General",
"Projected Gradient Criticality Measure");
115 dict[
"Scale for Epsilon Active Sets"] = join(
"General",
"Scale for Epsilon Active Sets");
117 dict[
"Absolute Krylov Tolerance"] = join(
"General",
"Krylov",
"Absolute Tolerance");
118 dict[
"Relative Krylov Tolerance"] = join(
"General",
"Krylov",
"Relative Tolerance");
119 dict[
"Maximum Number of Krylov Iterations"] = join(
"General",
"Krylov",
"Iteration Limit");
120 dict[
"Krylov Type"] = join(
"General",
"Krylov",
"Type");
122 dict[
"Barzilai-Borwein"] = join(
"General",
"Secant",
"Barzilai-Borwein");
123 dict[
"Maximum Secant Storage"] = join(
"General",
"Secant",
"Maximum Storage");
124 dict[
"Secant Type"] = join(
"General",
"Secant",
"Type");
125 dict[
"Use Secant Hessian-Times-A-Vector"] = join(
"General",
"Secant",
"Use as Hessian");
126 dict[
"Use Secant Preconditioning"] = join(
"General",
"Secant",
"Use as Preconditioner");
128 dict[
"Gradient Tolerance"] = join(
"Status Test",
"Gradient Tolerance");
129 dict[
"Maximum Number of Iterations"] = join(
"Status Test",
"Iteration Limit");
130 dict[
"Step Tolerance"] = join(
"Status Test",
"Step Tolerance");
132 dict[
"Accept Last Alpha"] = join(
"Step",
"Line Search",
"Accept Last Alpha");
133 dict[
"Accept Linesearch Minimizer"] = join(
"Step",
"Line Search",
"Accept Linesearch Minimizer");
134 dict[
"Maximum Number of Function Evaluations"] = join(
"Step",
"Line Search",
"Function Evaluation Limit");
135 dict[
"Initial Linesearch Parameter"] = join(
"Step",
"Line Search",
"Initial Step Size");
136 dict[
"Sufficient Decrease Parameter"] = join(
"Step",
"Line Search",
"Sufficient Decrease Tolerance");
137 dict[
"User Defined Linesearch Parameter"] = join(
"Step",
"Line Search",
"User Defined Initial Step Size");
139 dict[
"Curvature Conditions Parameter"] = join(
"Step",
"Line Search",
"Curvature Condition",
"General Parameter");
140 dict[
"Curvature Conditions Parameter: Generalized Wolfe"] = join(
"Step",
"Line Search",
"Curvature Condition",
"Generalized Wolfe Parameter");
141 dict[
"Linesearch Curvature Condition"] = join(
"Step",
"Line Search",
"Curvature Condition",
"Type");
143 dict[
"Nonlinear CG Type"] = join(
"Step",
"Line Search",
"Descent Method",
"Nonlinear CG Type");
144 dict[
"Descent Type"] = join(
"Step",
"Line Search",
"Descent Method",
"Type");
146 dict[
"Backtracking Rate"] = join(
"Step",
"Line Search",
"Line-Search Method",
"Backtracking Rate");
147 dict[
"Bracketing Tolerance"] = join(
"Step",
"Line Search",
"Line-Search Method",
"Bracketing Tolerance");
148 dict[
"Linesearch Type"] = join(
"Step",
"Line Search",
"Line-Search Method",
"Type");
150 dict[
"Initial Trust-Region Radius"] = join(
"Step",
"Trust Region",
"Initial Radius");
151 dict[
"Maximum Trust-Region Radius"] = join(
"Step",
"Trust Region",
"Maximum Radius");
152 dict[
"Radius Growing Threshold"] = join(
"Step",
"Trust Region",
"Radius Growing Threshold");
153 dict[
"Radius Growing Rate"] = join(
"Step",
"Trust Region",
"Radius Growing Rate");
154 dict[
"Radius Shrinking Threshold"] = join(
"Step",
"Trust Region",
"Radius Shrinking Threshold");
155 dict[
"Trust-Region Safeguard"] = join(
"Step",
"Trust Region",
"Safeguard Size");
156 dict[
"Trust-Region Subproblem Solver Type"] = join(
"Step",
"Trust Region",
"Subproblem Solver");
157 dict[
"Step Acceptance Parameter"] = join(
"Step",
"Trust Region",
"Step Acceptance Threshold");
159 dict[
"Gradient Update Relative Tolerance"] = join(
"Step",
"Trust Region",
"Gradient",
"Relative Tolerance");
160 dict[
"Gradient Update Tolerance Scaling"] = join(
"Step",
"Trust Region",
"Gradient",
"Tolerance Scaling");
161 dict[
"Value Update Exponent"] = join(
"Step",
"Trust Region",
"Inexact",
"Value",
"Exponent");
162 dict[
"Value Update Forcing Sequence Initial Value"] = join(
"Step",
"Trust Region",
"Inexact",
"Value",
"Forcing Sequence Initial Value");
163 dict[
"Value Update Forcing Sequence Reduction Factor"] = join(
"Step",
"Trust Region",
"Inexact",
"Value",
"Forcing Sequence Reduction Factor");
164 dict[
"Value Update Forcing Sequence Update Frequency"] = join(
"Step",
"Trust Region",
"Inexact",
"Value",
"Forcing Sequence Update Frequency");
165 dict[
"Value Update Tolerance Scaling"] = join(
"Step",
"Trust Region",
"Inexact",
"Value",
"Tolerance Scaling");
169 for(IterMap itmap = dict.begin(); itmap != dict.end(); ++itmap) {
170 Str key = itmap->first;
171 Vec
value = itmap->second;
177 for(IterPL itpl = inList.begin(); itpl != inList.end(); ++itpl) {
180 Str key( inList.name(itpl) );
186 if(location.size() != 0) {
188 IterVec itvec = location.begin();
190 if( inList.isType<
bool>(key) ) {
191 bool value = inList.get<
bool>( key );
194 else if( inList.isType<
int>(key) ) {
195 int value = inList.get<
int>( key );
198 else if( inList.isType<
double>(key) ) {
199 double value = inList.get<
double>( key );
202 else if( inList.isType<std::string>(key) ) {
203 std::string
value = inList.get<std::string>( key );
207 ROL_TEST_FOR_EXCEPTION(
true, std::invalid_argument,
208 ">>>Error: Unhandled parameter type." );