This is wrapper of the famous lbfgsb fortran library of Julia language inspired by this wrapper
Update by @brunowu
This is a fork of a Julia wrapper of the L-bfgs-b fortran code from jey/Lbfgsb.jl.
The only change is to support the installation of package trough Pkg.add
rather than Pkg.clone
. The latter was
deprecated since Julia 1.0.
run Pkg.add(PackageSpec(url="https://github.com/brunowu/Lbfgsb.jl", rev="master"))
0.0.1 (just usable)
Currently only for Linux with gfortran
installed
File fotran routine is written by the authors of the following papers,
- R. H. Byrd, P. Lu and J. Nocedal. A Limited Memory Algorithm for Bound Constrained Optimization, (1995), SIAM Journal on Scientific and Statistical Computing , 16, 5, pp. 1190-1208.
- C. Zhu, R. H. Byrd and J. Nocedal. L-BFGS-B: Algorithm 778: L-BFGS-B, FORTRAN routines for large scale bound constrained optimization (1997), ACM Transactions on Mathematical Software, Vol 23, Num. 4, pp. 550 - 560.
- J.L. Morales and J. Nocedal. L-BFGS-B: Remark on Algorithm 778: L-BFGS-B, FORTRAN routines for large scale bound constrained optimization (2011), to appear in ACM Transactions on Mathematical Software.
I am new to Julia language so the code will be cleaned gradually
- First, run
Pkg.clone("https://github.com/yuhonglin/Lbfgsb.jl")
, then runPkg.build("Lbfgsb")
- Currently only provide a function called
lbfgsb
, see its option below,
ogFunc
: Objective and gradient function. It accept currentx
and a gradient arrayg
. It should return the objective function value and put the gradient into intog
.x
: Initial value ofx
.lb
: lower bounds of each dimension ofx
. Set to-Inf
if equals to[]
.ub
: upper bounds of each dimension ofx
. Set toInf
if equals to[]
.btype
: boundary types, see below,
btype | boundary type of corresponding dimension |
---|---|
0 | unbounded |
1 | only lower bound |
2 | both lower and upper bound |
3 | only upper bound |
- Other parameters : see the paper above for reference (mostly does not need to modify)
iprint
: printing level of the fortran routine, set to-1
if you does not want to print anything
BSD-3