diff options
Diffstat (limited to 'examples/quadratic_auto_diff.cc')
-rw-r--r-- | examples/quadratic_auto_diff.cc | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/examples/quadratic_auto_diff.cc b/examples/quadratic_auto_diff.cc deleted file mode 100644 index 1e2f3ef..0000000 --- a/examples/quadratic_auto_diff.cc +++ /dev/null @@ -1,89 +0,0 @@ -// Ceres Solver - A fast non-linear least squares minimizer -// Copyright 2010, 2011, 2012 Google Inc. All rights reserved. -// http://code.google.com/p/ceres-solver/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// * Neither the name of Google Inc. nor the names of its contributors may be -// used to endorse or promote products derived from this software without -// specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// -// Author: keir@google.com (Keir Mierle) -// -// A simple example of using the Ceres minimizer. -// -// Minimize 0.5 (10 - x)^2 using jacobian matrix computed using -// automatic differentiation. - -#include <vector> -#include "ceres/ceres.h" -#include "gflags/gflags.h" -#include "glog/logging.h" - -using ceres::AutoDiffCostFunction; -using ceres::CostFunction; -using ceres::Problem; -using ceres::Solver; -using ceres::Solve; - -// A templated cost functor that implements the residual r = 10 - -// x. The method operator() is templated so that we can then use an -// automatic differentiation wrapper around it to generate its -// derivatives. -class QuadraticCostFunctor { - public: - template <typename T> bool operator()(const T* const x, T* residual) const { - residual[0] = T(10.0) - x[0]; - return true; - } -}; - -int main(int argc, char** argv) { - google::ParseCommandLineFlags(&argc, &argv, true); - google::InitGoogleLogging(argv[0]); - - // The variable to solve for with its initial value. - double initial_x = 5.0; - double x = initial_x; - - // Build the problem. - Problem problem; - - // Set up the only cost function (also known as residual). This uses - // auto-differentiation to obtain the derivative (jacobian). - problem.AddResidualBlock( - new AutoDiffCostFunction<QuadraticCostFunctor, 1, 1>( - new QuadraticCostFunctor), - NULL, - &x); - - // Run the solver! - Solver::Options options; - options.max_num_iterations = 10; - options.linear_solver_type = ceres::DENSE_QR; - options.minimizer_progress_to_stdout = true; - Solver::Summary summary; - Solve(options, &problem, &summary); - std::cout << summary.BriefReport() << "\n"; - std::cout << "x : " << initial_x - << " -> " << x << "\n"; - return 0; -} |