Use LBFGS_LINESEARCH_BACKTRACKING_STRONG instead of LBFGS_LINESEARCH_BACKTRACKING.

git-svn-id: file:///home/svnrepos/software/liblbfgs/trunk@45 ecf4c44f-38d1-4fa4-9757-a0b4dd0349fc
This commit is contained in:
naoaki 2009-02-16 13:37:48 +00:00
parent 1cae453cca
commit 1b33e075df
3 changed files with 8 additions and 10 deletions

View File

@ -153,9 +153,9 @@ enum {
/** MoreThuente method proposd by More and Thuente. */ /** MoreThuente method proposd by More and Thuente. */
LBFGS_LINESEARCH_MORETHUENTE = 0, LBFGS_LINESEARCH_MORETHUENTE = 0,
/** Backtracking method with strong Wolfe condition. */ /** Backtracking method with strong Wolfe condition. */
LBFGS_LINESEARCH_BACKTRACKING, LBFGS_LINESEARCH_BACKTRACKING_STRONG,
/** Backtracking method with regular Wolfe condition. */ /** Backtracking method with regular Wolfe condition. */
LBFGS_LINESEARCH_BACKTRACKING_LOOSE, LBFGS_LINESEARCH_BACKTRACKING,
}; };
/** /**
@ -538,9 +538,9 @@ libLBFGS is distributed under the term of the
- Version 1.6 (2008-11-02): - Version 1.6 (2008-11-02):
- Improved line-search algorithm with strong Wolfe condition, which was - Improved line-search algorithm with strong Wolfe condition, which was
contributed by Takashi Imamichi. This routine is now default for contributed by Takashi Imamichi. This routine is now default for
::LBFGS_LINESEARCH_BACKTRACKING. The previous line search algorithm ::LBFGS_LINESEARCH_BACKTRACKING_STRONG. The previous line search algorithm
with regular Wolfe condition is still available as with regular Wolfe condition is still available as
::LBFGS_LINESEARCH_BACKTRACKING_LOOSE. ::LBFGS_LINESEARCH_BACKTRACKING.
- Configurable stop index for L1-norm computation. A member variable - Configurable stop index for L1-norm computation. A member variable
::lbfgs_parameter_t::orthantwise_end was added to specify the index ::lbfgs_parameter_t::orthantwise_end was added to specify the index
number at which the library stops computing the L1 norm of the number at which the library stops computing the L1 norm of the
@ -563,7 +563,7 @@ libLBFGS is distributed under the term of the
- Configurable line search algorithms. A member variable - Configurable line search algorithms. A member variable
::lbfgs_parameter_t::linesearch was added to choose either MoreThuente ::lbfgs_parameter_t::linesearch was added to choose either MoreThuente
method (::LBFGS_LINESEARCH_MORETHUENTE) or backtracking algorithm method (::LBFGS_LINESEARCH_MORETHUENTE) or backtracking algorithm
(::LBFGS_LINESEARCH_BACKTRACKING). (::LBFGS_LINESEARCH_BACKTRACKING_STRONG).
- Fixed a bug: the previous version did not compute psuedo-gradients - Fixed a bug: the previous version did not compute psuedo-gradients
properly in the line search routines for OWL-QN. This bug might quit properly in the line search routines for OWL-QN. This bug might quit
an iteration process too early when the OWL-QN routine was activated an iteration process too early when the OWL-QN routine was activated

View File

@ -362,9 +362,7 @@ int lbfgs(
linesearch = line_search_morethuente; linesearch = line_search_morethuente;
break; break;
case LBFGS_LINESEARCH_BACKTRACKING: case LBFGS_LINESEARCH_BACKTRACKING:
linesearch = line_search_backtracking; case LBFGS_LINESEARCH_BACKTRACKING_STRONG:
break;
case LBFGS_LINESEARCH_BACKTRACKING_LOOSE:
linesearch = line_search_backtracking; linesearch = line_search_backtracking;
break; break;
default: default:
@ -756,7 +754,7 @@ static int line_search_backtracking(
if (*f <= finit + *stp * dgtest) { if (*f <= finit + *stp * dgtest) {
/* The sufficient decrease condition. */ /* The sufficient decrease condition. */
if (param->linesearch == LBFGS_LINESEARCH_BACKTRACKING) { if (param->linesearch == LBFGS_LINESEARCH_BACKTRACKING_STRONG) {
/* Check the strong Wolfe condition. */ /* Check the strong Wolfe condition. */
vecdot(&dg, g, s, n); vecdot(&dg, g, s, n);
if (dg > -wolfe * dginit) { if (dg > -wolfe * dginit) {

View File

@ -65,7 +65,7 @@ int main(int argc, char *argv)
/* Initialize the parameters for the L-BFGS optimization. */ /* Initialize the parameters for the L-BFGS optimization. */
lbfgs_parameter_init(&param); lbfgs_parameter_init(&param);
param.orthantwise_c = 1; param.orthantwise_c = 1;
/* param.linesearch = LBFGS_LINESEARCH_BACKTRACKING; */ /* param.linesearch = LBFGS_LINESEARCH_BACKTRACKING_STRONG; */
/* /*
Start the L-BFGS optimization; this will invoke the callback functions Start the L-BFGS optimization; this will invoke the callback functions