fminLBFGSB
Syntax
fminLBFGSB(func, X0, [fprime], [bounds], [m=10], [factr=1e7], [pgtol=1e-5],
                    [epsilon=1e-8], [maxIter=15000], [maxFun=15000], [maxLS=20])
Arguments
func is the function to minimize. The return value of the function must be numeric type.
X0 is a numeric scalar or vector indicating the initial guess.
fprime (optional) is the gradient of func. If not provided, then
                    func returns the function value and the gradient (f, g = func(x,
                    *args)).
bounds (optional) is a numeric matrix indicating the bounds on parameters of
                    X0. The matrix must be in the shape of (N,2), where
                    N=size(X0). The two elements of each row defines the bounds (min,
                max) on that parameter. float("inf") can be specified for no bound
                in that direction.
m (optional) is a positive integer indicating the maximum number of variable metric corrections used to define the limited memory matrix. The default value is 10.
factr (optional) is a positive number to stop the iteration when 
, where
                    eps is the machine precision. Typical values for factr are: 1e12
                for low accuracy; 1e7 (default) for moderate accuracy; 10.0 for extremely high
                accuracy.
pgtol (optional) is a positive number to stop the iteration when 
, where proj g_i
                is the i-th component of the projected gradient. The default value is 1e-5.
epsilon (optional) is a positive number indicating the step size used for numerically calculating the gradient. The default value is 1e-8.
maxIter (optional) is a non-negative integer indicating the maximum number of iterations. The default value is 15000.
maxFun (optional) is a non-negative integer indicating the maximum number of function evaluations. The default value is 15000.
maxLS (optional) is a non-negative integer indicating the maximum number of line search steps (per iteration). The default value is 20.
Details
Minimize a function func using the L-BFGS-B algorithm.
Return value: A dictionary with the following members:
- 
                    
xopt: A floating-point vector indicating the parameters of the minimum.
 - 
                    
fopt: A floating-point scalar indicating the value of func at the minimum, i.e.,
fopt=func(xopt). - 
                    
gopt: A floating-point vector indicating the gradient at the minimum, i.e.,
gopt=func'(xopt). - 
                    
iterations: The number of iterations.
 - 
                    
fcalls: The number of function calls made.
 - 
                    
warnFlag: An integer, which can be
- 
                            
0: Minimization performed.
 - 
                            
1: Maximum number of evaluations/iterations exceeded.
 - 
                            
2: Stopped for other reasons.
 
 - 
                            
 
Examples
X = double(0..9)
M = 2
B = 3
Y = double(M * X + B)
def fun(params, x, y) {
	m = params[0]
	b = params[1]
	y_model = m*x + b
	error = sum(square(y - y_model))
	return error
}
initial_values = [0.0, 1.0]
fminLBFGSB(fun{,X,Y}, initial_values)
            Output:
fcalls->27
warnFlag->0
xopt->[1.999999985435,3.000000060585]
gopt->[8.05E-10,8.84E-10]
fopt->0E-12
iterations->6
        