Feel++
0.91.4
|
#include <bfgs.hpp>
Public Types | |
typedef VECTOR | vector_type |
typedef vector_type::value_type | T |
typedef vector_type::value_type | value_type |
typedef value_type | magnitude_type |
Public Member Functions | |
BFGSInvHessian (BFGSType v=BFGS) | |
template<typename VEC1 , typename VEC2 > | |
void | hmult (const VEC1 &X, VEC2 &Y) |
void | restart (void) |
template<typename VECT1 , typename VECT2 > | |
void | update (const VECT1 &deltak, const VECT2 &gammak) |
Public Attributes | |
std::vector< vector_type > | delta |
std::vector< vector_type > | gamma |
std::vector< vector_type > | zeta |
std::vector< T > | tau |
std::vector< T > | rho |
int | version |
delta[k] = x[k+1] - x[k] gamma[k] = grad f(x[k+1]) - grad f(x[k]) H[0] = I BFGS : zeta[k] = delta[k] - H[k] gamma[k] DFP : zeta[k] = H[k] gamma[k] tau[k] = gamma[k]^T zeta[k] rho[k] = 1 / gamma[k]^T delta[k] BFGS : H[k+1] = H[k] + rho[k](zeta[k] delta[k]^T + delta[k] zeta[k]^T)