December 1997 | CIYOU ZHU, RICHARD H. BYRD, PEIHUANG LU and JORGE NOCEDAL
Algorithm 778: L-BFGS-B is a Fortran implementation of a limited-memory algorithm for large-scale bound-constrained nonlinear optimization. It is designed for problems where the Hessian matrix is difficult to compute or is dense. The algorithm can also handle unconstrained problems and performs similarly to its predecessor, L-BFGS. It uses a compact representation of the limited-memory BFGS matrix, making it efficient for bound-constrained problems. The algorithm requires the user to provide the gradient of the function but not the Hessian. It is implemented in Fortran 77 and uses reverse communication for user control over function and gradient evaluations.
The algorithm works by updating a limited-memory BFGS approximation to the Hessian matrix at each iteration. It then computes a search direction using a two-stage approach: first, identifying active variables (those at their bounds), and then minimizing the quadratic model of the objective function with respect to the free variables. A line search is performed along the search direction using a subroutine from Moré and Thuente. The algorithm can be controlled by a parameter m, which determines the number of BFGS corrections saved. It requires roughly (12 + 2m)n storage locations and is efficient for large problems.
L-BFGS-B is an extension of the L-BFGS algorithm for unconstrained optimization. It can handle bounds on variables, making it more complex than its predecessor but equally effective for unconstrained problems. It is the only limited-memory quasi-Newton algorithm capable of handling bounds on variables. The algorithm is tested on a set of bound-constrained and unconstrained problems from the CUTE collection. It performs competitively in terms of CPU time and is effective for large-scale problems where the Hessian is not sparse or is difficult to compute. However, it may not converge rapidly on difficult problems and may fail to achieve high accuracy on highly ill-conditioned problems. It also cannot exploit problem structure to accelerate convergence. The algorithm is scale-invariant and is implemented in Fortran 77 with reverse communication for user control. It is recommended for large-scale optimization problems with bound constraints.Algorithm 778: L-BFGS-B is a Fortran implementation of a limited-memory algorithm for large-scale bound-constrained nonlinear optimization. It is designed for problems where the Hessian matrix is difficult to compute or is dense. The algorithm can also handle unconstrained problems and performs similarly to its predecessor, L-BFGS. It uses a compact representation of the limited-memory BFGS matrix, making it efficient for bound-constrained problems. The algorithm requires the user to provide the gradient of the function but not the Hessian. It is implemented in Fortran 77 and uses reverse communication for user control over function and gradient evaluations.
The algorithm works by updating a limited-memory BFGS approximation to the Hessian matrix at each iteration. It then computes a search direction using a two-stage approach: first, identifying active variables (those at their bounds), and then minimizing the quadratic model of the objective function with respect to the free variables. A line search is performed along the search direction using a subroutine from Moré and Thuente. The algorithm can be controlled by a parameter m, which determines the number of BFGS corrections saved. It requires roughly (12 + 2m)n storage locations and is efficient for large problems.
L-BFGS-B is an extension of the L-BFGS algorithm for unconstrained optimization. It can handle bounds on variables, making it more complex than its predecessor but equally effective for unconstrained problems. It is the only limited-memory quasi-Newton algorithm capable of handling bounds on variables. The algorithm is tested on a set of bound-constrained and unconstrained problems from the CUTE collection. It performs competitively in terms of CPU time and is effective for large-scale problems where the Hessian is not sparse or is difficult to compute. However, it may not converge rapidly on difficult problems and may fail to achieve high accuracy on highly ill-conditioned problems. It also cannot exploit problem structure to accelerate convergence. The algorithm is scale-invariant and is implemented in Fortran 77 with reverse communication for user control. It is recommended for large-scale optimization problems with bound constraints.