QuantLib
: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
ql
math
optimization
armijo.hpp
Go to the documentation of this file.
1
/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
3
/*
4
Copyright (C) 2001, 2002, 2003 Nicolas Di Césaré
5
6
This file is part of QuantLib, a free-software/open-source library
7
for financial quantitative analysts and developers - http://quantlib.org/
8
9
QuantLib is free software: you can redistribute it and/or modify it
10
under the terms of the QuantLib license. You should have received a
11
copy of the license along with this program; if not, please email
12
<quantlib-dev@lists.sf.net>. The license is also available online at
13
<http://quantlib.org/license.shtml>.
14
15
This program is distributed in the hope that it will be useful, but WITHOUT
16
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
FOR A PARTICULAR PURPOSE. See the license for more details.
18
*/
19
20
/*! \file armijo.hpp
21
\brief Armijo line-search class
22
*/
23
24
#ifndef quantlib_optimization_armijo_hpp
25
#define quantlib_optimization_armijo_hpp
26
27
#include <
ql/math/optimization/linesearch.hpp
>
28
29
namespace
QuantLib
{
30
31
class
EndCriteria;
32
33
//! Armijo line search.
34
/*! Let \f$ \alpha \f$ and \f$ \beta \f$ be 2 scalars in \f$ [0,1]
35
\f$. Let \f$ x \f$ be the current value of the unknown, \f$ d
36
\f$ the search direction and \f$ t \f$ the step. Let \f$ f \f$
37
be the function to minimize. The line search stops when \f$ t
38
\f$ verifies
39
\f[ f(x + t \cdot d) - f(x) \leq -\alpha t f'(x+t \cdot d) \f]
40
and
41
\f[ f(x+\frac{t}{\beta} \cdot d) - f(x) > -\frac{\alpha}{\beta}
42
t f'(x+t \cdot d) \f]
43
44
(see Polak, Algorithms and consistent approximations, Optimization,
45
volume 124 of Applied Mathematical Sciences, Springer-Verlag, NY,
46
1997)
47
*/
48
class
ArmijoLineSearch
:
public
LineSearch
{
49
public
:
50
//! Default constructor
51
ArmijoLineSearch
(
Real
eps = 1e-8,
52
Real
alpha
= 0.05,
53
Real
beta
= 0.65)
54
:
LineSearch
(eps),
alpha_
(
alpha
),
beta_
(
beta
) {}
55
56
//! Perform line search
57
Real
operator()
(
Problem
& P,
// Optimization problem
58
EndCriteria::Type
& ecType,
59
const
EndCriteria
&,
60
Real
t_ini)
override
;
// initial value of line-search step
61
private
:
62
Real
alpha_
,
beta_
;
63
};
64
65
}
66
67
#endif
QuantLib::ArmijoLineSearch
Armijo line search.
Definition:
armijo.hpp:48
QuantLib::ArmijoLineSearch::beta_
Real beta_
Definition:
armijo.hpp:62
QuantLib::ArmijoLineSearch::operator()
Real operator()(Problem &P, EndCriteria::Type &ecType, const EndCriteria &, Real t_ini) override
Perform line search.
Definition:
armijo.cpp:26
QuantLib::ArmijoLineSearch::alpha_
Real alpha_
Definition:
armijo.hpp:62
QuantLib::ArmijoLineSearch::ArmijoLineSearch
ArmijoLineSearch(Real eps=1e-8, Real alpha=0.05, Real beta=0.65)
Default constructor.
Definition:
armijo.hpp:51
QuantLib::EndCriteria
Criteria to end optimization process:
Definition:
endcriteria.hpp:40
QuantLib::EndCriteria::Type
Type
Definition:
endcriteria.hpp:42
QuantLib::LineSearch
Base class for line search.
Definition:
linesearch.hpp:38
QuantLib::Problem
Constrained optimization problem.
Definition:
problem.hpp:42
QuantLib::Real
QL_REAL Real
real number
Definition:
types.hpp:50
linesearch.hpp
Line search abstract class.
QuantLib
Definition:
any.hpp:35
beta
Real beta
Definition:
sabr.cpp:200
alpha
Real alpha
Definition:
sabr.cpp:200
Generated by
Doxygen
1.9.5