10 #ifndef ROL_VALID_PARAMETERS_H
11 #define ROL_VALID_PARAMETERS_H
14 #include "ROL_ParameterList.hpp"
22 typedef ROL::ParameterList PL;
24 ROL::Ptr<PL> rol = ROL::makePtr<PL>(
"ROL");
27 PL &general = rol->sublist(
"General");
28 general.set(
"Recompute Objective Function",
false);
29 general.set(
"Scale for Epsilon Active Sets", 1.0 );
32 general.set(
"Inexact Objective Function",
false);
33 general.set(
"Inexact Gradient",
false);
34 general.set(
"Inexact Hessian-Times-A-Vector",
false);
35 general.set(
"Scale for Epsilon Active Sets", 1.0 );
36 general.set(
"Print Verbosity", 0 );
39 general.set(
"Projected Gradient Criticality Measure",
false);
42 PL &secant = general.sublist(
"Secant");
43 secant.set(
"Type",
"Limited-Memory BFGS" );
44 secant.set(
"Use as Preconditioner",
false );
45 secant.set(
"Use as Hessian",
false );
46 secant.set(
"Maximum Storage", 10 );
47 secant.set(
"Barzilai-Borwein", 1 );
48 secant.set(
"User Defined Secant Name",
"Unspecified User Defined Secant Method");
51 PL &krylov = general.sublist(
"Krylov");
52 krylov.set(
"Type",
"Conjugate Gradients" );
53 krylov.set(
"Absolute Tolerance", 1.e-4 );
54 krylov.set(
"Relative Tolerance", 1.e-2 );
55 krylov.set(
"Iteration Limit", 100 );
56 krylov.set(
"User Defined Krylov Name",
"Unspecified User Defined Krylov Method");
59 PL &step = rol->sublist(
"Step");
62 step.set(
"Type",
"Trust Region");
64 PL &linesearch = step.sublist(
"Line Search");
65 linesearch.set(
"Function Evaluation Limit", 20 );
66 linesearch.set(
"Sufficient Decrease Tolerance", 1e-4 );
67 linesearch.set(
"Use Previous Step Length as Initial Guess",
false);
68 linesearch.set(
"Initial Step Size", 1.0 );
69 linesearch.set(
"User Defined Initial Step Size",
false);
70 linesearch.set(
"Accept Linesearch Minimizer",
false);
71 linesearch.set(
"Accept Last Alpha",
false);
74 PL &descent = linesearch.sublist(
"Descent Method");
75 descent.set(
"Type",
"Quasi-Newton Method");
76 descent.set(
"Nonlinear CG Type",
"Oren-Luenberger ");
79 PL &curvature = linesearch.sublist(
"Curvature Condition");
80 curvature.set(
"Type",
"Strong Wolfe Conditions");
81 curvature.set(
"General Parameter", 0.9 );
82 curvature.set(
"Generalized Wolfe Parameter", 0.6 );
85 PL &lsmethod = linesearch.sublist(
"Line-Search Method");
86 lsmethod.set(
"Type",
"Cubic Interpolation");
87 lsmethod.set(
"Backtracking Rate", 0.5 );
88 lsmethod.set(
"Bracketing Tolerance", 1.e-8 );
89 lsmethod.set(
"User Defined Line-Search Name",
"Unspecified User Defined Line-Search");
92 PL &bisection = lsmethod.sublist(
"Bisection");
93 bisection.set(
"Tolerance", 1.e-10);
94 bisection.set(
"Iteration Limit", 1000 );
97 PL &brents = lsmethod.sublist(
"Brent's");
98 brents.set(
"Tolerance", 1.e-10);
99 brents.set(
"Iteration Limit", 1000 );
100 brents.set(
"Run Test Upon Initialization",
true );
103 PL &golden = lsmethod.sublist(
"Golden Section");
104 golden.set(
"Tolerance", 1.e-10);
105 golden.set(
"Iteration Limit", 1000 );
108 PL &pathtarg = lsmethod.sublist(
"Path-Based Target Level");
109 pathtarg.set(
"Target Relaxation Parameter", 1.0);
110 pathtarg.set(
"Upper Bound on Path Length", 1.0);
113 PL &trustregion = step.sublist(
"Trust Region");
114 trustregion.set(
"Subproblem Solver",
"Truncated CG" );
115 trustregion.set(
"Subproblem Model",
"Kelley-Sachs" );
116 trustregion.set(
"Initial Radius", 10.0 );
117 trustregion.set(
"Maximum Radius", 5.e3 );
118 trustregion.set(
"Step Acceptance Threshold", 0.05 );
119 trustregion.set(
"Radius Shrinking Threshold", 0.05 );
120 trustregion.set(
"Radius Growing Threshold", 0.9 );
121 trustregion.set(
"Radius Shrinking Rate (Negative rho)", 0.0625 );
122 trustregion.set(
"Radius Shrinking Rate (Positive rho)", 0.25 );
123 trustregion.set(
"Radius Growing Rate", 2.5 );
124 trustregion.set(
"Sufficient Decrease Parameter", 1.e-2 );
125 trustregion.set(
"Safeguard Size", 1.e8 );
128 PL &smoothing = trustregion.sublist(
"Post-Smoothing");
129 smoothing.set(
"Function Evaluation Limit", 20 );
130 smoothing.set(
"Initial Step Size", 1.0 );
131 smoothing.set(
"Tolerance", 0.9999);
132 smoothing.set(
"Rate", 0.01 );
135 PL &coleman = trustregion.sublist(
"Coleman-Li");
136 coleman.set(
"Maximum Step Back", 0.9999);
137 coleman.set(
"Maximum Step Scale", 1.0 );
138 coleman.set(
"Single Reflection",
true );
141 PL &inexact = trustregion.sublist(
"Inexact");
144 PL &
value = inexact.sublist(
"Value");
145 value.set(
"Tolerance Scaling", 1.e-1);
146 value.set(
"Exponent", 0.9 );
147 value.set(
"Forcing Sequence Initial Value", 1.0 );
148 value.set(
"Forcing Sequence Update Frequency", 10 );
149 value.set(
"Forcing Sequence Reduction Factor", 0.1 );
152 PL &gradient = inexact.sublist(
"Gradient");
153 gradient.set(
"Tolerance Scaling", 1.e-1);
154 gradient.set(
"Relative Tolerance", 2.0 );
157 PL &activeset = step.sublist(
"Primal Dual Active Set");
158 activeset.set(
"Dual Scaling", 1.0 );
159 activeset.set(
"Iteration Limit", 10 );
160 activeset.set(
"Relative Step Tolerance", 1.e-8);
161 activeset.set(
"Relative Gradient Tolerance", 1.e-6);
164 PL &composite = step.sublist(
"Composite Step");
165 composite.set(
"Output Level", 0);
168 PL &ossolver = composite.sublist(
"Optimality System Solver");
169 ossolver.set(
"Nominal Relative Tolerance", 1e-8);
170 ossolver.set(
"Fix Tolerance",
true);
173 PL &tansolver = composite.sublist(
"Tangential Subproblem Solver");
174 tansolver.set(
"Iteration Limit", 20 );
175 tansolver.set(
"Relative Tolerance", 1e-2);
178 PL &auglag = step.sublist(
"Augmented Lagrangian");
180 auglag.set(
"Use Scaled Augmented Lagrangian",
false);
181 auglag.set(
"Level of Hessian Approximation", 0);
184 auglag.set(
"Initial Penalty Parameter", 1.e1 );
185 auglag.set(
"Penalty Parameter Growth Factor", 100.0 );
186 auglag.set(
"Penalty Parameter Reciprocal Lower Bound", 0.1 );
187 auglag.set(
"Maximum Penalty Parameter", 1.e8 );
190 auglag.set(
"Initial Optimality Tolerance", 1.0 );
191 auglag.set(
"Optimality Tolerance Update Exponent", 0.1 );
192 auglag.set(
"Optimality Tolerance Decrease Exponent", 0.9 );
195 auglag.set(
"Initial Feasibility Tolerance", 1.0 );
196 auglag.set(
"Feasibility Tolerance Update Exponent", 0.1 );
197 auglag.set(
"Feasibility Tolerance Decrease Exponent", 0.9 );
200 auglag.set(
"Print Intermediate Optimization History",
false );
201 auglag.set(
"Subproblem Step Type",
"Trust Region");
202 auglag.set(
"Subproblem Iteration Limit", 1000 );
205 PL &moreau = step.sublist(
"Moreau-Yosida Penalty");
206 moreau.set(
"Initial Penalty Parameter", 1e2);
207 moreau.set(
"Penalty Parameter Growth Factor", 1.0);
210 PL &mysub = moreau.sublist(
"Subproblem");
211 mysub.set(
"Optimality Tolerance", 1.e-12);
212 mysub.set(
"Feasibility Tolerance", 1.e-12);
213 mysub.set(
"Print History",
false );
214 mysub.set(
"Iteration Limit", 200 );
217 PL &bundle = step.sublist(
"Bundle");
220 bundle.set(
"Initial Trust-Region Parameter", 1.e1 );
221 bundle.set(
"Maximum Trust-Region Parameter", 1.e8 );
222 bundle.set(
"Tolerance for Trust-Region Parameter", 1.e-4 );
225 bundle.set(
"Epsilon Solution Tolerance", 1.e-12);
228 bundle.set(
"Upper Threshold for Serious Step", 1.e-1 );
229 bundle.set(
"Lower Threshold for Serious Step", 2.e-1 );
230 bundle.set(
"Upper Threshold for Null Step", 9.e-1 );
233 bundle.set(
"Distance Measure Coefficient", 1.e-6 );
234 bundle.set(
"Maximum Bundle Size", 50 );
235 bundle.set(
"Removal Size for Bundle Update", 2 );
238 bundle.set(
"Cutting Plane Tolerance", 1.e-8 );
239 bundle.set(
"Cutting Plane Iteration Limit", 1000 );
242 PL &status = rol->sublist(
"Status Test");
243 status.set(
"Gradient Tolerance", 1.e-10);
244 status.set(
"Constraint Tolerance", 1.e-10);
245 status.set(
"Step Tolerance", 1.e-14);
246 status.set(
"Iteration Limit", 1000 );
257 typedef ROL::ParameterList PL;
259 ROL::Ptr<PL> sol = ROL::makePtr<PL>(
"SOL");
261 sol->set(
"Type",
"Risk Neutral");
262 sol->set(
"Store Sampled Value and Gradient",
true);
265 PL &risk = sol->sublist(
"Risk Measure");
266 risk.set(
"Name",
"CVaR");
269 PL &bpoe = risk.sublist(
"bPOE");
270 bpoe.set(
"Moment Order", 2.0);
271 bpoe.set(
"Threshold", 1.0);
274 PL &expo = risk.sublist(
"Exponential Utility");
275 expo.set(
"Rate", 2.0);
278 PL &kldiv = risk.sublist(
"KL Divergence");
279 kldiv.set(
"Threshold",1.e-2);
282 PL &fdiv = risk.sublist(
"F-Divergence");
283 fdiv.set(
"Threshold",1.e-2);
286 PL &cvar = risk.sublist(
"CVaR");
287 cvar.set(
"Confidence Level", 0.8);
288 cvar.set(
"Convex Combination Parameter", 0.8);
289 cvar.set(
"Smoothing Parameter", 1.e-2);
291 PL &cvar_dist = cvar.sublist(
"Distribution");
293 cvar_dist.set(
"Name",
"Parabolic");
295 PL &cvar_para = cvar_dist.sublist(
"Parbolic");
296 cvar_para.set(
"Lower Bound",-0.5);
297 cvar_para.set(
"Upper Bound", 0.5);
300 PL &hmcr = risk.sublist(
"HMCR");
301 hmcr.set(
"Confidence Level", 0.8 );
302 hmcr.set(
"Convex Combination Parameter", 0.8 );
303 hmcr.set(
"Order", 2 );
304 hmcr.set(
"Smoothing Parameter", 1.e-2);
306 PL &hmcr_dist = hmcr.sublist(
"Distribution");
308 hmcr_dist.set(
"Name",
"Dirac");
310 PL &hmcr_dirac = hmcr_dist.sublist(
"Dirac");
311 hmcr_dirac.set(
"Location",0.0);
321 #endif // ROL_VALID_PARAMETERS_H
ROL::Ptr< const ROL::ParameterList > getValidROLParameters()
Contains definitions of custom data types in ROL.
ROL::Objective_SimOpt value
ROL::Ptr< const ROL::ParameterList > getValidSOLParameters()