45 #ifndef ROL_VALID_PARAMETERS_H
46 #define ROL_VALID_PARAMETERS_H
49 #include "ROL_ParameterList.hpp"
57 typedef ROL::ParameterList PL;
59 ROL::Ptr<PL> rol = ROL::makePtr<PL>(
"ROL");
62 PL &general = rol->sublist(
"General");
63 general.set(
"Recompute Objective Function",
false);
64 general.set(
"Scale for Epsilon Active Sets", 1.0 );
67 general.set(
"Inexact Objective Function",
false);
68 general.set(
"Inexact Gradient",
false);
69 general.set(
"Inexact Hessian-Times-A-Vector",
false);
70 general.set(
"Scale for Epsilon Active Sets", 1.0 );
71 general.set(
"Print Verbosity", 0 );
74 general.set(
"Projected Gradient Criticality Measure",
false);
77 PL &secant = general.sublist(
"Secant");
78 secant.set(
"Type",
"Limited-Memory BFGS" );
79 secant.set(
"Use as Preconditioner",
false );
80 secant.set(
"Use as Hessian",
false );
81 secant.set(
"Maximum Storage", 10 );
82 secant.set(
"Barzilai-Borwein", 1 );
83 secant.set(
"User Defined Secant Name",
"Unspecified User Defined Secant Method");
86 PL &krylov = general.sublist(
"Krylov");
87 krylov.set(
"Type",
"Conjugate Gradients" );
88 krylov.set(
"Absolute Tolerance", 1.e-4 );
89 krylov.set(
"Relative Tolerance", 1.e-2 );
90 krylov.set(
"Iteration Limit", 100 );
91 krylov.set(
"User Defined Krylov Name",
"Unspecified User Defined Krylov Method");
94 PL &step = rol->sublist(
"Step");
97 step.set(
"Type",
"Trust Region");
99 PL &linesearch = step.sublist(
"Line Search");
100 linesearch.set(
"Function Evaluation Limit", 20 );
101 linesearch.set(
"Sufficient Decrease Tolerance", 1e-4 );
102 linesearch.set(
"Use Previous Step Length as Initial Guess",
false);
103 linesearch.set(
"Initial Step Size", 1.0 );
104 linesearch.set(
"User Defined Initial Step Size",
false);
105 linesearch.set(
"Accept Linesearch Minimizer",
false);
106 linesearch.set(
"Accept Last Alpha",
false);
109 PL &descent = linesearch.sublist(
"Descent Method");
110 descent.set(
"Type",
"Quasi-Newton Method");
111 descent.set(
"Nonlinear CG Type",
"Oren-Luenberger ");
114 PL &curvature = linesearch.sublist(
"Curvature Condition");
115 curvature.set(
"Type",
"Strong Wolfe Conditions");
116 curvature.set(
"General Parameter", 0.9 );
117 curvature.set(
"Generalized Wolfe Parameter", 0.6 );
120 PL &lsmethod = linesearch.sublist(
"Line-Search Method");
121 lsmethod.set(
"Type",
"Cubic Interpolation");
122 lsmethod.set(
"Backtracking Rate", 0.5 );
123 lsmethod.set(
"Bracketing Tolerance", 1.e-8 );
124 lsmethod.set(
"User Defined Line-Search Name",
"Unspecified User Defined Line-Search");
127 PL &bisection = lsmethod.sublist(
"Bisection");
128 bisection.set(
"Tolerance", 1.e-10);
129 bisection.set(
"Iteration Limit", 1000 );
132 PL &brents = lsmethod.sublist(
"Brent's");
133 brents.set(
"Tolerance", 1.e-10);
134 brents.set(
"Iteration Limit", 1000 );
135 brents.set(
"Run Test Upon Initialization",
true );
138 PL &golden = lsmethod.sublist(
"Golden Section");
139 golden.set(
"Tolerance", 1.e-10);
140 golden.set(
"Iteration Limit", 1000 );
143 PL &pathtarg = lsmethod.sublist(
"Path-Based Target Level");
144 pathtarg.set(
"Target Relaxation Parameter", 1.0);
145 pathtarg.set(
"Upper Bound on Path Length", 1.0);
148 PL &trustregion = step.sublist(
"Trust Region");
149 trustregion.set(
"Subproblem Solver",
"Truncation CG");
150 trustregion.set(
"Subproblem Model",
"Kelley-Sachs" );
151 trustregion.set(
"Initial Radius", 10.0 );
152 trustregion.set(
"Maximum Radius", 5.e3 );
153 trustregion.set(
"Step Acceptance Threshold", 0.05 );
154 trustregion.set(
"Radius Shrinking Threshold", 0.05 );
155 trustregion.set(
"Radius Growing Threshold", 0.9 );
156 trustregion.set(
"Radius Shrinking Rate (Negative rho)", 0.0625 );
157 trustregion.set(
"Radius Shrinking Rate (Positive rho)", 0.25 );
158 trustregion.set(
"Radius Growing Rate", 2.5 );
159 trustregion.set(
"Sufficient Decrease Parameter", 1.e-2 );
160 trustregion.set(
"Safeguard Size", 1.e8 );
163 PL &smoothing = trustregion.sublist(
"Post-Smoothing");
164 smoothing.set(
"Function Evaluation Limit", 20 );
165 smoothing.set(
"Initial Step Size", 1.0 );
166 smoothing.set(
"Tolerance", 0.9999);
167 smoothing.set(
"Rate", 0.01 );
170 PL &coleman = trustregion.sublist(
"Coleman-Li");
171 coleman.set(
"Maximum Step Back", 0.9999);
172 coleman.set(
"Maximum Step Scale", 1.0 );
173 coleman.set(
"Single Reflection",
true );
176 PL &inexact = trustregion.sublist(
"Inexact");
179 PL &
value = inexact.sublist(
"Value");
180 value.set(
"Tolerance Scaling", 1.e-1);
181 value.set(
"Exponent", 0.9 );
182 value.set(
"Forcing Sequence Initial Value", 1.0 );
183 value.set(
"Forcing Sequence Update Frequency", 10 );
184 value.set(
"Forcing Sequence Reduction Factor", 0.1 );
187 PL &gradient = inexact.sublist(
"Gradient");
188 gradient.set(
"Tolerance Scaling", 1.e-1);
189 gradient.set(
"Relative Tolerance", 2.0 );
192 PL &activeset = step.sublist(
"Primal Dual Active Set");
193 activeset.set(
"Dual Scaling", 1.0 );
194 activeset.set(
"Iteration Limit", 10 );
195 activeset.set(
"Relative Step Tolerance", 1.e-8);
196 activeset.set(
"Relative Gradient Tolerance", 1.e-6);
199 PL &composite = step.sublist(
"Composite Step");
200 composite.set(
"Output Level", 0);
203 PL &ossolver = composite.sublist(
"Optimality System Solver");
204 ossolver.set(
"Nominal Relative Tolerance", 1e-8);
205 ossolver.set(
"Fix Tolerance",
true);
208 PL &tansolver = composite.sublist(
"Tangential Subproblem Solver");
209 tansolver.set(
"Iteration Limit", 20 );
210 tansolver.set(
"Relative Tolerance", 1e-2);
213 PL &auglag = step.sublist(
"Augmented Lagrangian");
215 auglag.set(
"Use Scaled Augmented Lagrangian",
false);
216 auglag.set(
"Level of Hessian Approximation", 0);
219 auglag.set(
"Initial Penalty Parameter", 1.e1 );
220 auglag.set(
"Penalty Parameter Growth Factor", 100.0 );
221 auglag.set(
"Penalty Parameter Reciprocal Lower Bound", 0.1 );
222 auglag.set(
"Maximum Penalty Parameter", 1.e8 );
225 auglag.set(
"Initial Optimality Tolerance", 1.0 );
226 auglag.set(
"Optimality Tolerance Update Exponent", 0.1 );
227 auglag.set(
"Optimality Tolerance Decrease Exponent", 0.9 );
230 auglag.set(
"Initial Feasibility Tolerance", 1.0 );
231 auglag.set(
"Feasibility Tolerance Update Exponent", 0.1 );
232 auglag.set(
"Feasibility Tolerance Decrease Exponent", 0.9 );
235 auglag.set(
"Print Intermediate Optimization History",
false );
236 auglag.set(
"Subproblem Step Type",
"Trust Region");
237 auglag.set(
"Subproblem Iteration Limit", 1000 );
240 PL &moreau = step.sublist(
"Moreau-Yosida Penalty");
241 moreau.set(
"Initial Penalty Parameter", 1e2);
242 moreau.set(
"Penalty Parameter Growth Factor", 1.0);
245 PL &mysub = moreau.sublist(
"Subproblem");
246 mysub.set(
"Optimality Tolerance", 1.e-12);
247 mysub.set(
"Feasibility Tolerance", 1.e-12);
248 mysub.set(
"Print History",
false );
249 mysub.set(
"Iteration Limit", 200 );
252 PL &bundle = step.sublist(
"Bundle");
255 bundle.set(
"Initial Trust-Region Parameter", 1.e1 );
256 bundle.set(
"Maximum Trust-Region Parameter", 1.e8 );
257 bundle.set(
"Tolerance for Trust-Region Parameter", 1.e-4 );
260 bundle.set(
"Epsilon Solution Tolerance", 1.e-12);
263 bundle.set(
"Upper Threshold for Serious Step", 1.e-1 );
264 bundle.set(
"Lower Threshold for Serious Step", 2.e-1 );
265 bundle.set(
"Upper Threshold for Null Step", 9.e-1 );
268 bundle.set(
"Distance Measure Coefficient", 1.e-6 );
269 bundle.set(
"Maximum Bundle Size", 50 );
270 bundle.set(
"Removal Size for Bundle Update", 2 );
273 bundle.set(
"Cutting Plane Tolerance", 1.e-8 );
274 bundle.set(
"Cutting Plane Iteration Limit", 1000 );
277 PL &status = rol->sublist(
"Status Test");
278 status.set(
"Gradient Tolerance", 1.e-10);
279 status.set(
"Constraint Tolerance", 1.e-10);
280 status.set(
"Step Tolerance", 1.e-14);
281 status.set(
"Iteration Limit", 1000 );
292 typedef ROL::ParameterList PL;
294 ROL::Ptr<PL> sol = ROL::makePtr<PL>(
"SOL");
296 sol->set(
"Stochastic Component Type",
"Risk Neutral");
297 sol->set(
"Store Sampled Value and Gradient",
true);
300 PL &risk = sol->sublist(
"Risk Measure");
301 risk.set(
"Name",
"CVaR");
304 PL &bpoe = risk.sublist(
"bPOE");
305 bpoe.set(
"Moment Order", 2.0);
306 bpoe.set(
"Threshold", 1.0);
309 PL &expo = risk.sublist(
"Exponential Utility");
310 expo.set(
"Rate", 2.0);
313 PL &kldiv = risk.sublist(
"KL Divergence");
314 kldiv.set(
"Threshold",1.e-2);
317 PL &fdiv = risk.sublist(
"F-Divergence");
318 fdiv.set(
"Threshold",1.e-2);
321 PL &cvar = risk.sublist(
"CVaR");
322 cvar.set(
"Confidence Level", 0.8);
323 cvar.set(
"Convex Combination Parameter", 0.8);
324 cvar.set(
"Smoothing Parameter", 1.e-2);
326 PL &cvar_dist = cvar.sublist(
"Distribution");
328 cvar_dist.set(
"Name",
"Parabolic");
330 PL &cvar_para = cvar_dist.sublist(
"Parbolic");
331 cvar_para.set(
"Lower Bound",-0.5);
332 cvar_para.set(
"Upper Bound", 0.5);
335 PL &hmcr = risk.sublist(
"HMCR");
336 hmcr.set(
"Confidence Level", 0.8 );
337 hmcr.set(
"Convex Combination Parameter", 0.8 );
338 hmcr.set(
"Order", 2 );
339 hmcr.set(
"Smoothing Parameter", 1.e-2);
341 PL &hmcr_dist = hmcr.sublist(
"Distribution");
343 hmcr_dist.set(
"Name",
"Dirac");
345 PL &hmcr_dirac = hmcr_dist.sublist(
"Dirac");
346 hmcr_dirac.set(
"Location",0.0);
356 #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()