/usr/include/roboptim/core/sum-of-c1-squares.hh is in libroboptim-core-dev 2.0-7.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | // Copyright (c) 2011 CNRS
// Authors: Florent Lamiraux
//
// This file is part of the roboptim.
//
// roboptim is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// roboptim is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with roboptim. If not, see <http://www.gnu.org/licenses/>.
#ifndef ROBOPTIM_CORE_SUM_OF_C1_SQUARES_HH
# define ROBOPTIM_CORE_SUM_OF_C1_SQUARES_HH
# include <boost/shared_ptr.hpp>
# include <roboptim/core/differentiable-function.hh>
# include <roboptim/core/function.hh>
namespace roboptim {
/// \addtogroup roboptim_meta_function
/// @{
/// \brief Sum of the squares of differentiable functions
///
/// This types enables roboptim to handle Levenberg Marquardt algorithm.
/// This algorithm indeed minimizes the sum of squares of differentiable
/// functions.
///
/// The differentiable functions are stored in a vector valued function
/// called base function.
class SumOfC1Squares : public DifferentiableFunction
{
public:
/// @name Types
/// @{
typedef DifferentiableFunction parent_t;
typedef parent_t::argument_t argument_t;
typedef parent_t::jacobian_t jacobian_t;
typedef parent_t::gradient_t gradient_t;
typedef parent_t::jacobianSize_t jacobianSize_t;
typedef Function::size_type size_t;
typedef Function::value_type value_t;
/// @}
/// \brief Constructot by vector valued functions
/// The value of this scalar valued function is the sum of the
/// squares of the coordinates of the vector valued base function.
explicit SumOfC1Squares (const boost::shared_ptr<DifferentiableFunction>&
function,
const std::string& name) throw ();
explicit SumOfC1Squares (const SumOfC1Squares& function) throw ();
virtual ~SumOfC1Squares () throw ();
/// \brief Get base function
/// Base function is the vector valued function given at construction
/// of this class.
const boost::shared_ptr<const DifferentiableFunction>& baseFunction () const;
protected:
/// \brief Compute value of function
/// Value is sum of squares of coordinates of vector valued base function
virtual void
impl_compute(result_t &result, const argument_t &x) const throw ();
/// \brief Gradient
virtual void
impl_gradient(gradient_t& gradient, const argument_t& x,
size_type row = 0) const throw ();
private:
/// Compute base function and store result in value_.
void computeFunction (const argument_t x) const;
/// \brief Vector valued function given at construction
boost::shared_ptr<const DifferentiableFunction> baseFunction_;
/// \brief Store last argument for which the function has been computed
mutable argument_t x_;
/// \brief temporary variable to store vector value of input function
mutable result_t value_;
/// \brief temporary variable to store gradients
mutable gradient_t gradient_;
}; // class Solver
/// @}
} // namespace roboptim
#endif // ROBOPTIM_CORE_SUM_OF_C1_SQUARES_HH
|