10 #ifndef ROL_PARAMETER_LIST_CONVERTERS_H
11 #define ROL_PARAMETER_LIST_CONVERTERS_H
15 #include "ROL_ParameterList.hpp"
20 namespace StringList {
23 inline std::vector<std::string>
join(
const std::string &s1,
24 const std::string &s2 ) {
25 std::vector<std::string> v;
33 inline std::vector<std::string>
join(
const std::string &s1,
34 const std::string &s2,
35 const std::string &s3 ) {
36 std::vector<std::string> v;
45 inline std::vector<std::string>
join(
const std::string &s1,
46 const std::string &s2,
47 const std::string &s3,
48 const std::string &s4 ) {
49 std::vector<std::string> v;
59 inline std::vector<std::string>
join(
const std::string &s1,
60 const std::string &s2,
61 const std::string &s3,
62 const std::string &s4,
63 const std::string &s5 ) {
64 std::vector<std::string> v;
76 template<
class ParameterType>
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." );
void setParameter(ROL::ParameterList &parlist, const std::vector< std::string > &location, const std::vector< std::string >::iterator iter, ParameterType value)
Contains definitions of custom data types in ROL.
std::string removeStringFormat(std::string s)
ROL::Objective_SimOpt value
std::vector< std::string > join(const std::string &s1, const std::string &s2)
Helper function for making vectors of strings.
void tierParameterList(ROL::ParameterList &outList, const ROL::ParameterList &inList)
Produce a heirarchical parameter list using the new names from a flat list of the old names...