3 #include "../ScalarTraits.hpp" 4 #include "../Types.hpp" 9 namespace Implementation {
22 template<
typename Scalar,
typename OutputFunction>
132 template<
typename Scalar,
typename OutputFunction>
140 , output_function(output_function)
145 template<
typename Scalar,
typename OutputFunction>
153 template<
typename Scalar,
typename OutputFunction>
161 template<
typename Scalar,
typename OutputFunction>
169 template<
typename Scalar,
typename OutputFunction>
175 template<
typename Scalar,
typename OutputFunction>
183 template<
typename Scalar,
typename OutputFunction>
191 template<
typename Scalar,
typename OutputFunction>
197 template<
typename Scalar,
typename OutputFunction>
205 H *= y.dot(s) / y.dot(y);
206 B *= y.dot(y) / y.dot(s);
211 B =
B - (
B * s * s.transpose() *
B)/(s.transpose() *
B * s)
212 + (y * y.transpose()) / (s.transpose() * y);
214 Scalar rho = Scalar{1} / y.dot(s);
219 + rho * s * s.transpose();
Scalar calculate_vBv(const Vector< Scalar > &v)
Calculate normalized scalar product of vector with Hessian approximation .
Definition: BFGSStorage.hpp:184
Vector< Scalar > calculate_Hv(const Vector< Scalar > &v)
Calculate product of inverse Hessian approximation with vector .
Definition: BFGSStorage.hpp:154
BFGS storage.
Definition: BFGSStorage.hpp:23
BFGSStorage(Eigen::Index n, Eigen::Index, Scalar, OutputFunction &output_function)
Construct a BFGS storage.
Definition: BFGSStorage.hpp:133
Traits for scalar values.
Definition: ScalarTraits.hpp:16
const Matrix< Scalar > & calculate_B()
Access the Hessian approximation .
Definition: BFGSStorage.hpp:192
bool update(const Vector< Scalar > &s, const Vector< Scalar > &y, const Vector< Scalar > &g)
Update the (inverse) Hessian approximation.
Definition: BFGSStorage.hpp:198
Matrix< Scalar > B
Hessian approximation.
Definition: BFGSStorage.hpp:124
Eigen::Index n
dimensionality of the problem
Definition: BFGSStorage.hpp:119
Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > Vector
Vector type used.
Definition: Types.hpp:15
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > Matrix
Matrix type used.
Definition: Types.hpp:24
Matrix< Scalar > H
inverse Hessian approximation
Definition: BFGSStorage.hpp:122
BFGS optimizations.
Definition: BFGS.hpp:24
OutputFunction & output_function
output function for status messages
Definition: BFGSStorage.hpp:129
Vector< Scalar > calculate_Bv(const Vector< Scalar > &v)
Calculate product of Hessian approximation with vector .
Definition: BFGSStorage.hpp:176
void reset()
Reset the (inverse) Hessian approximation to identity matrix.
Definition: BFGSStorage.hpp:146
bool initial
is this the initial approximation?
Definition: BFGSStorage.hpp:126
const Matrix< Scalar > & calculate_H()
Access the inverse Hessian approximation .
Definition: BFGSStorage.hpp:170
Scalar calculate_vHv(const Vector< Scalar > &v)
Calculate normalized scalar product of vector with inverse Hessian approximation ...
Definition: BFGSStorage.hpp:162