diff --git a/ChangeLog b/ChangeLog index 5ef08c8..f429d3f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-07-13 Naoaki Okazaki + + * libLBFGS 1.8: + - Accepted the patch submitted by Takashi Imamichi; the backtracking method now has three criteria for choosing the step length. + - Updated the documentation to explain the above three criteria. + + 2009-02-28 Naoaki Okazaki * libLBFGS 1.7: diff --git a/README b/README index 55761ef..c896497 100644 --- a/README +++ b/README @@ -1,8 +1,8 @@ libLBFGS: C library of limited-memory BFGS (L-BFGS) - Copyright (c) 1990, Jorge Nocedal - Copyright (c) 2007-2009, Naoaki Okazaki + Copyright (c) 1990, Jorge Nocedal + Copyright (c) 2007-2009, Naoaki Okazaki ========================================================================= 1. Introduction diff --git a/configure.in b/configure.in index d92408e..329c27c 100644 --- a/configure.in +++ b/configure.in @@ -18,7 +18,7 @@ AC_CONFIG_SRCDIR([lib/lbfgs.c]) dnl ------------------------------------------------------------------ dnl Initialization for automake dnl ------------------------------------------------------------------ -AM_INIT_AUTOMAKE(liblbfgs, 1.7) +AM_INIT_AUTOMAKE(liblbfgs, 1.8) AC_CONFIG_HEADERS(config.h) AM_MAINTAINER_MODE diff --git a/include/lbfgs.h b/include/lbfgs.h index b7e5fc9..8f5f4d0 100644 --- a/include/lbfgs.h +++ b/include/lbfgs.h @@ -155,21 +155,24 @@ enum { /** MoreThuente method proposd by More and Thuente. */ LBFGS_LINESEARCH_MORETHUENTE = 0, /** - * Backtracking method with the Armijo condition: + * Backtracking method with the Armijo condition. * The backtracking method finds the step length such that it satisfies * the sufficient decrease (Armijo) condition, - * f(x + a * d) <= f(x) + lbfgs_parameter_t::ftol * a * g(x) \cdot d, + * - f(x + a * d) <= f(x) + lbfgs_parameter_t::ftol * a * g(x)^T d, + * * where x is the current point, d is the current search direction, and * a is the step length. */ LBFGS_LINESEARCH_BACKTRACKING_ARMIJO = 1, - LBFGS_LINESEARCH_BACKTRACKING = 1, + /** The backtracking method with the defualt (regular Wolfe) condition. */ + LBFGS_LINESEARCH_BACKTRACKING = 2, /** * Backtracking method with regular Wolfe condition. * The backtracking method finds the step length such that it satisfies * both the Armijo condition (LBFGS_LINESEARCH_BACKTRACKING_ARMIJO) * and the curvature condition, - * g(x + a * d) \cdot d >= lbfgs_parameter_t::wolfe * g(x) \cdot d, + * - g(x + a * d)^T d >= lbfgs_parameter_t::wolfe * g(x)^T d, + * * where x is the current point, d is the current search direction, and * a is the step length. */ @@ -179,7 +182,8 @@ enum { * The backtracking method finds the step length such that it satisfies * both the Armijo condition (LBFGS_LINESEARCH_BACKTRACKING_ARMIJO) * and the following condition, - * |g(x + a * d) \cdot d| <= lbfgs_parameter_t::wolfe * |g(x) \cdot d|, + * - |g(x + a * d)^T d| <= lbfgs_parameter_t::wolfe * |g(x)^T d|, + * * where x is the current point, d is the current search direction, and * a is the step length. */ @@ -587,21 +591,22 @@ This library is used by: @section download Download -- Source code +- Source code libLBFGS is distributed under the term of the MIT license. @section changelog History - Version 1.8 (2009-07-13): - - The backtracking method now has three criteria for choosing the step + - Accepted the patch submitted by Takashi Imamichi; + the backtracking method now has three criteria for choosing the step length: - - ::LBFGS_LINESEARCH_BACKTRACKING_ARMIJO: sufficient decrease condition - (Armijo condition) + - ::LBFGS_LINESEARCH_BACKTRACKING_ARMIJO: sufficient decrease (Armijo) + condition only - ::LBFGS_LINESEARCH_BACKTRACKING_WOLFE: regular Wolfe condition (sufficient decrease condition + curvature condition) - ::LBFGS_LINESEARCH_BACKTRACKING_STRONG_WOLFE: strong Wolfe condition - This is based on the patch submitted by Takashi Imamichi. + - Updated the documentation to explain the above three criteria. - Version 1.7 (2009-02-28): - Improved OWL-QN routines for stability. - Removed the support of OWL-QN method in MoreThuente algorithm because