QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
|
Multi-dimensional simplex class. More...
#include <simplex.hpp>
Public Member Functions | |
Simplex (Real lambda) | |
EndCriteria::Type | minimize (Problem &P, const EndCriteria &endCriteria) override |
minimize the optimization problem P More... | |
Real | lambda () const |
Public Member Functions inherited from OptimizationMethod | |
virtual | ~OptimizationMethod ()=default |
virtual EndCriteria::Type | minimize (Problem &P, const EndCriteria &endCriteria)=0 |
minimize the optimization problem P More... | |
Private Member Functions | |
Real | extrapolate (Problem &P, Size iHighest, Real &factor) const |
Private Attributes | |
Real | lambda_ |
std::vector< Array > | vertices_ |
Array | values_ |
Array | sum_ |
Multi-dimensional simplex class.
This method is rather raw and requires quite a lot of computing resources, but it has the advantage that it does not need any evaluation of the cost function's gradient, and that it is quite easily implemented. First, we choose N+1 starting points, given here by a starting point \( \mathbf{P}_{0} \) and N points such that
\[ \mathbf{P}_{\mathbf{i}}=\mathbf{P}_{0}+\lambda \mathbf{e}_{\mathbf{i}}, \]
where \( \lambda \) is the problem's characteristic length scale). These points will form a geometrical form called simplex. The principle of the downhill simplex method is, at each iteration, to move the worst point (highest cost function value) through the opposite face to a better point. When the simplex seems to be constrained in a valley, it will be contracted downhill, keeping the best point unchanged.
Definition at line 58 of file simplex.hpp.
Constructor taking as input the characteristic length
Definition at line 61 of file simplex.hpp.
|
overridevirtual |
minimize the optimization problem P
Implements OptimizationMethod.
Definition at line 96 of file simplex.cpp.
Real lambda | ( | ) | const |
Definition at line 63 of file simplex.hpp.
Definition at line 58 of file simplex.cpp.
|
private |
Definition at line 69 of file simplex.hpp.
|
mutableprivate |
Definition at line 70 of file simplex.hpp.
|
mutableprivate |
Definition at line 71 of file simplex.hpp.
|
private |
Definition at line 71 of file simplex.hpp.