Blame docs/html/gradient_tutorial.html

Packit ea1746
Packit ea1746
Packit ea1746
Packit ea1746
Packit ea1746
 <html class="no-js" lang="en" > 
Packit ea1746
<head>
Packit ea1746
  <meta charset="utf-8">
Packit ea1746
  
Packit ea1746
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
Packit ea1746
  
Packit ea1746
  <title>General Unconstrained Minimization — Ceres Solver</title>
Packit ea1746
  
Packit ea1746
Packit ea1746
  
Packit ea1746
  
Packit ea1746
Packit ea1746
  
Packit ea1746
Packit ea1746
  
Packit ea1746
  
Packit ea1746
    
Packit ea1746
Packit ea1746
  
Packit ea1746
Packit ea1746
  
Packit ea1746
  
Packit ea1746
    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
Packit ea1746
  
Packit ea1746
Packit ea1746
  
Packit ea1746
Packit ea1746
  
Packit ea1746
    <link rel="top" title="Ceres Solver" href="index.html"/>
Packit ea1746
        <link rel="up" title="Tutorial" href="tutorial.html"/>
Packit ea1746
        <link rel="next" title="On Derivatives" href="derivatives.html"/>
Packit ea1746
        <link rel="prev" title="Non-linear Least Squares" href="nnls_tutorial.html"/> 
Packit ea1746
Packit ea1746
  
Packit ea1746
  <script src="_static/js/modernizr.min.js"></script>
Packit ea1746
Packit ea1746
</head>
Packit ea1746
Packit ea1746
<body class="wy-body-for-nav" role="document">
Packit ea1746
Packit ea1746
  
Packit ea1746
Packit ea1746
    
Packit ea1746
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
Packit ea1746
      
Packit ea1746
        
Packit ea1746
          
Packit ea1746
Packit ea1746
          
Packit ea1746
             Ceres Solver
Packit ea1746
          
Packit ea1746
Packit ea1746
          
Packit ea1746
          
Packit ea1746
Packit ea1746
          
Packit ea1746
            
Packit ea1746
            
Packit ea1746
              
Packit ea1746
                1.13
Packit ea1746
              
Packit ea1746
            
Packit ea1746
          
Packit ea1746
Packit ea1746
          
Packit ea1746
Packit ea1746
  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
Packit ea1746
    <input type="text" name="q" placeholder="Search docs" />
Packit ea1746
    <input type="hidden" name="check_keywords" value="yes" />
Packit ea1746
    <input type="hidden" name="area" value="default" />
Packit ea1746
  </form>
Packit ea1746
Packit ea1746
Packit ea1746
          
Packit ea1746
        
Packit ea1746
Packit ea1746
        
Packit ea1746
          
Packit ea1746
            
Packit ea1746
            
Packit ea1746
                
    Packit ea1746
  • Why?
  • Packit ea1746
  • Installation
  • Packit ea1746
  • Tutorial
    • Packit ea1746
    • Non-linear Least Squares
    • Packit ea1746
    • General Unconstrained Minimization
      • Packit ea1746
      • Rosenbrock’s Function
      • Packit ea1746
        Packit ea1746
        Packit ea1746
        Packit ea1746
        Packit ea1746
      • On Derivatives
      • Packit ea1746
      • Modeling Non-linear Least Squares
      • Packit ea1746
      • Solving Non-linear Least Squares
      • Packit ea1746
      • Covariance Estimation
      • Packit ea1746
      • General Unconstrained Minimization
      • Packit ea1746
      • FAQS, Tips & Tricks
      • Packit ea1746
      • Users
      • Packit ea1746
      • Contributing
      • Packit ea1746
      • Version History
      • Packit ea1746
      • Bibliography
      • Packit ea1746
      • License
      • Packit ea1746
        Packit ea1746
        Packit ea1746
                    
        Packit ea1746
                  
        Packit ea1746
                
        Packit ea1746
              
        Packit ea1746
            </nav>
        Packit ea1746
        Packit ea1746
            <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
        Packit ea1746
        Packit ea1746
              
        Packit ea1746
              <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
        Packit ea1746
                
        Packit ea1746
                Ceres Solver
        Packit ea1746
              </nav>
        Packit ea1746
        Packit ea1746
        Packit ea1746
              
        Packit ea1746
              
        Packit ea1746
                
        Packit ea1746
                  
        Packit ea1746
        Packit ea1746
         
        Packit ea1746
        Packit ea1746
        Packit ea1746
        Packit ea1746
        Packit ea1746
          
          Packit ea1746
              
        • Docs »
        • Packit ea1746
                
          Packit ea1746
                    
        • Tutorial »
        • Packit ea1746
                
          Packit ea1746
              
        • General Unconstrained Minimization
        • Packit ea1746
                
        • Packit ea1746
                  
          Packit ea1746
                    
          Packit ea1746
                  
          Packit ea1746
                
          Packit ea1746
            
          Packit ea1746
            
          Packit ea1746
          Packit ea1746
                    
          Packit ea1746
                     
          Packit ea1746
                      
          Packit ea1746
            
          Packit ea1746

          General Unconstrained Minimization

          Packit ea1746

          While much of Ceres Solver is devoted to solving non-linear least

          Packit ea1746
          squares problems, internally it contains a solver that can solve
          Packit ea1746
          general unconstrained optimization problems using just their objective
          Packit ea1746
          function value and gradients. The GradientProblem and
          Packit ea1746
          GradientProblemSolver objects give the user access to this solver.

          Packit ea1746

          So without much further ado, let us look at how one goes about using

          Packit ea1746
          them.

          Packit ea1746
          Packit ea1746

          Rosenbrock’s Function

          Packit ea1746

          We consider the minimization of the famous Rosenbrock’s function [1].

          Packit ea1746

          We begin by defining an instance of the FirstOrderFunction

          Packit ea1746
          interface. This is the object that is responsible for computing the
          Packit ea1746
          objective function value and the gradient (if required). This is the
          Packit ea1746
          analog of the CostFunction when defining non-linear least
          Packit ea1746
          squares problems in Ceres.

          Packit ea1746
          class Rosenbrock : public ceres::FirstOrderFunction {
          Packit ea1746
           public:
          Packit ea1746
            virtual bool Evaluate(const double* parameters,
          Packit ea1746
                                  double* cost,
          Packit ea1746
                                  double* gradient) const {
          Packit ea1746
              const double x = parameters[0];
          Packit ea1746
              const double y = parameters[1];
          Packit ea1746
          Packit ea1746
              cost[0] = (1.0 - x) * (1.0 - x) + 100.0 * (y - x * x) * (y - x * x);
          Packit ea1746
              if (gradient != NULL) {
          Packit ea1746
                gradient[0] = -2.0 * (1.0 - x) - 200.0 * (y - x * x) * 2.0 * x;
          Packit ea1746
                gradient[1] = 200.0 * (y - x * x);
          Packit ea1746
              }
          Packit ea1746
              return true;
          Packit ea1746
            }
          Packit ea1746
          Packit ea1746
            virtual int NumParameters() const { return 2; }
          Packit ea1746
          };