45 #include "GlobiPack_TestLagrPolyMeritFunc1D.hpp"
46 #include "GlobiPack_ArmijoPolyInterpLineSearch.hpp"
65 using GlobiPack::armijoQuadraticLineSearch;
66 using GlobiPack::computeValue;
68 using Teuchos::inOutArg;
69 using Teuchos::outArg;
72 using Teuchos::rcpFromRef;
76 using Teuchos::parameterList;
85 "tol", &g_tol,
"Floating point tolerance" );
101 typedef typename ST::magnitudeType ScalarMag;
103 RCP<ArmijoPolyInterpLineSearch<Scalar> > linesearch =
104 armijoQuadraticLineSearch<Scalar>();
123 ECHO(RCP<ArmijoPolyInterpLineSearch<Scalar> > linesearch =
124 armijoQuadraticLineSearch<Scalar>());
125 const double eta = 0.99999;
126 const double minFrac = 4.0;
127 const double maxFrac = 5.0;
128 const int minIters = 5;
129 const int maxIters = 100;
130 const bool doMaxIters =
true;
131 ECHO(
const RCP<ParameterList> pl = parameterList());
132 ECHO(pl->set(
"Armijo Slope Fraction", eta));
133 ECHO(pl->set(
"Min Backtrack Fraction", minFrac));
134 ECHO(pl->set(
"Max Backtrack Fraction", maxFrac));
135 ECHO(pl->set(
"Min Num Iterations", minIters));
136 ECHO(pl->set(
"Max Num Iterations", maxIters));
137 ECHO(pl->set(
"Do Max Iterations", doMaxIters));
138 ECHO(linesearch->setParameterList(pl));
139 const Scalar tol = ST::eps();
177 typedef typename ST::magnitudeType ScalarMag;
179 const RCP<TestLagrPolyMeritFunc1D<Scalar> > phi = quadPhi<Scalar>();
181 RCP<ArmijoPolyInterpLineSearch<Scalar> > linesearch =
182 armijoQuadraticLineSearch<Scalar>();
184 linesearch->setOStream(rcpFromRef(out));
186 const PointEval1D<Scalar> point_k =
computePoint(*phi, ST::zero(),
true,
true);
187 PointEval1D<Scalar> point_kp1 =
computePoint(*phi, as<Scalar>(5.0));
190 const bool linesearchResult = linesearch->doLineSearch(
191 *phi, point_k, inOutArg(point_kp1), outArg(numIters) );
214 const RCP<TestLagrPolyMeritFunc1D<Scalar> > phi = quadPhi<Scalar>();
216 RCP<ArmijoPolyInterpLineSearch<Scalar> > linesearch =
217 armijoQuadraticLineSearch<Scalar>();
219 linesearch->setOStream(rcpFromRef(out));
221 const Scalar alpha_k_init = as<Scalar>(2.1);
222 const PointEval1D<Scalar> point_k =
computePoint(*phi, ST::zero(),
true,
true);
223 PointEval1D<Scalar> point_kp1 =
computePoint(*phi, alpha_k_init);
226 const bool linesearchResult = linesearch->doLineSearch(
227 *phi, point_k, inOutArg(point_kp1), outArg(numIters) );
247 typedef typename ST::magnitudeType ScalarMag;
249 const RCP<TestLagrPolyMeritFunc1D<Scalar> > phi = quadPhi<Scalar>();
251 RCP<ArmijoPolyInterpLineSearch<Scalar> > linesearch =
252 armijoQuadraticLineSearch<Scalar>();
254 const RCP<ParameterList> pl = parameterList();
255 pl->set(
"Max Backtrack Fraction", 1.0);
256 pl->set(
"Min Num Iterations", 1);
257 linesearch->setParameterList(pl);
259 linesearch->setOStream(rcpFromRef(out));
261 const Scalar alpha_k_init = as<Scalar>(2.1);
262 const PointEval1D<Scalar> point_k =
computePoint(*phi, ST::zero(),
true,
true);
263 PointEval1D<Scalar> point_kp1 =
computePoint(*phi, alpha_k_init);
266 const bool linesearchResult = linesearch->doLineSearch(
267 *phi, point_k, inOutArg(point_kp1), outArg(numIters) );