ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/optimization/ConjugateGradient.hpp
Revision: 1741
Committed: Tue Jun 5 18:02:44 2012 UTC (12 years, 10 months ago) by gezelter
File size: 2081 byte(s)
Log Message:
Adding initial import of optimization library

File Contents

# Content
1 /* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
3 /*
4 Copyright (C) 2006 Ferdinando Ametrano
5 Copyright (C) 2001, 2002, 2003 Nicolas Di Césaré
6 Copyright (C) 2009 Frédéric Degraeve
7
8 This file is part of QuantLib, a free-software/open-source library
9 for financial quantitative analysts and developers - http://quantlib.org/
10
11 QuantLib is free software: you can redistribute it and/or modify it
12 under the terms of the QuantLib license. You should have received a
13 copy of the license along with this program; if not, please email
14 <quantlib-dev@lists.sf.net>. The license is also available online at
15 <http://quantlib.org/license.shtml>.
16
17 This program is distributed in the hope that it will be useful, but WITHOUT
18 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
19 FOR A PARTICULAR PURPOSE. See the license for more details.
20 */
21
22 /*! \file conjugategradient.hpp
23 \brief Conjugate gradient optimization method
24 */
25
26 #ifndef quantlib_optimization_conjugate_gradient_h
27 #define quantlib_optimization_conjugate_gradient_h
28
29 #include "optimization/LineSearchBasedMethod.hpp"
30
31 namespace QuantLib {
32
33 //! Multi-dimensional Conjugate Gradient class.
34 /*! Fletcher-Reeves-Polak-Ribiere algorithm
35 adapted from Numerical Recipes in C, 2nd edition.
36
37 User has to provide line-search method and optimization end criteria.
38 Search direction \f$ d_i = - f'(x_i) + c_i*d_{i-1} \f$
39 where \f$ c_i = ||f'(x_i)||^2/||f'(x_{i-1})||^2 \f$
40 and \f$ d_1 = - f'(x_1) \f$
41 */
42 class ConjugateGradient: public LineSearchBasedMethod {
43 public:
44 ConjugateGradient(LineSearch* lineSearch = NULL)
45 : LineSearchBasedMethod(lineSearch) {}
46 private:
47 //! \name LineSearchBasedMethod interface
48 //@{
49 DynamicVector<RealType> getUpdatedDirection(const Problem &P,
50 RealType gold2,
51 const DynamicVector<RealType>& oldGradient);
52 //@}
53 };
54
55 }
56
57 #endif

Properties

Name Value
svn:eol-style native