Non-monotonic trust region algorithm.

Non-monotonic trust region algorithm based on the work of Phil Toint, as
described in

Non-monotone trust region algorithms for nonlinear
optimization subject to convex constraints.
Philippe L. Toint
Mathematical Programming 77 (1997), 69-94.

Change-Id: I199ecc644e8d1a8cb43666052aef66fb93e15569
This commit is contained in:
Sameer Agarwal
2012-08-08 10:38:31 -07:00
parent 82b689a5fd
commit a8f87d7943
4 changed files with 125 additions and 4 deletions
+3
View File
@@ -86,6 +86,8 @@ DEFINE_bool(robustify, false, "Use a robust loss function");
DEFINE_bool(use_block_amd, true, "Use a block oriented fill reducing ordering.");
DEFINE_string(trust_region_strategy, "lm", "Options are: lm, dogleg");
DEFINE_double(max_solver_time, 1e32, "Maximum solve time in seconds.");
DEFINE_bool(nonmonotonic_steps, false, "Trust region algorithm can use"
" nonmonotic steps");
namespace ceres {
namespace examples {
@@ -221,6 +223,7 @@ void SetMinimizerOptions(Solver::Options* options) {
options->num_threads = FLAGS_num_threads;
options->eta = FLAGS_eta;
options->max_solver_time_in_seconds = FLAGS_max_solver_time;
options->use_nonmonotonic_steps = FLAGS_nonmonotonic_steps;
if (FLAGS_trust_region_strategy == "lm") {
options->trust_region_strategy_type = LEVENBERG_MARQUARDT;
} else if (FLAGS_trust_region_strategy == "dogleg") {