- Modify your trust region code for unconstrained optimization into a
Truncated-Newton method, as detailed in the attached pseudo-code. As stated
on the first page, this involves eliminating the calls to the Hessian evaluation
or secant approximation and the calls to MODELHESS and CHOLSOLVE, and modifying
the trust region driver into TNDRIVER, modifying the trust region update
module into TNTRUPDATE, and writing the new Truncated-Newton module TNSTEP
which also calls the small new modules HESSPROD and QUAD. (For HESSPROD,
analgrad will be false unless you have coded analytic gradients.)
Test your Truncated-Newton code on the following problems: Extended
Rosenbrock and Extended Powell with n = 100, and Variable Dimension
and Penalty 1 (attached) with n = 100. Run each from the standard
starting point x_0 and from 10 (x_0 ). In addition to the
information requested below for all problems, please report the following
for each run of the truncated-Newton method: 1) the number of times the
truncated-Newton step terminated due to each of the four stopping conditions
(omega < 0, || stemp || >= delta, gnorm
<= tolerance, or k>n, respectively); 2) the average
number of inner iterations (ie the average value of k upon termination
of the inner loop) per outer iteration. Also run the Newton and secant
codes on these same problems if this is not a problem with your computing
resources and include these runs in the tables requested below.
- Each group will schedule a half hour meeting with the instructor
to discuss the project. To this meeting, please bring tables of the results
of your Newton/trust region, secant/trust region, and Truncated-Newton
codes on each of the test problems and starting points that have been assigned
in Phases II, III, and IV. Please arrange these by problem so that we can
easily compare the performance of the three methods for a given problem.
For each problem and method, the table should show: the starting point
(denoted by x_0, 10 ( x _0), 100 (x_0); the termination
code; the function value at the final point; the total number of iterations;
the total number of function evaluations not counting those used for finite
differences; and the total number of function evaluations counting those
used for finite differences. In addition, please bring along (in a format
that one can refer to easily) the additional information that was requested
for Phase II (you only need to do this for the Newton/trust region code):
the number of iterations that take the Newton step; the number of iterations
where the trust region is decreased within the iteration (and how many
times it was decreased in each case); and the number of iterations where
the trust region is increased within the iteration (and how many times
it was increased in each case). Finally, please bring the additional information
requested above for the Truncated-Newton code, in a format that one can
refer to easily.
At the meeting, we will discuss your experiences with the project and
what you have learned about the methods, including: the comparisons in
efficiency between the three methods, and the performance of the trust
region updating strategy and the truncated-Newton inner iterations.