L-BFGS-B
3.0
Large-scale Bound-constrained Optimization
|
Go to the source code of this file.
Functions/Subroutines | |
subroutine | setulb (n, m, x, l, u, nbd, f, g, factr, pgtol, wa, iwa, task, iprint, csave, lsave, isave, dsave) |
This subroutine partitions the working arrays wa and iwa, and then uses the limited memory BFGS method to solve the bound constrained optimization problem by calling mainlb. More... | |
subroutine setulb | ( | integer | n, |
integer | m, | ||
double precision, dimension(n) | x, | ||
double precision, dimension(n) | l, | ||
double precision, dimension(n) | u, | ||
integer, dimension(n) | nbd, | ||
double precision | f, | ||
double precision, dimension(n) | g, | ||
double precision | factr, | ||
double precision | pgtol, | ||
double precision, dimension(2*m*n + 5*n + 11*m*m + 8*m) | wa, | ||
integer, dimension(3*n) | iwa, | ||
character*60 | task, | ||
integer | iprint, | ||
character*60 | csave, | ||
logical, dimension(4) | lsave, | ||
integer, dimension(44) | isave, | ||
double precision, dimension(29) | dsave | ||
) |
This subroutine partitions the working arrays wa and iwa, and then uses the limited memory BFGS method to solve the bound constrained optimization problem by calling mainlb. (The direct method will be used in the subspace minimization.)
n | On entry n is the dimension of the problem. On exit n is unchanged. |
m | On entry m is the maximum number of variable metric corrections used to define the limited memory matrix. On exit m is unchanged. |
x | On entry x is an approximation to the solution. On exit x is the current approximation. |
l | On entry l is the lower bound on x. On exit l is unchanged. |
u | On entry u is the upper bound on x. On exit u is unchanged. |
nbd | On entry nbd represents the type of bounds imposed on the variables, and must be specified as follows: nbd(i)=
|
f | On first entry f is unspecified. On final exit f is the value of the function at x. |
g | On first entry g is unspecified. On final exit g is the value of the gradient at x. |
factr | On entry factr >= 0 is specified by the user. The iteration will stop when (f^k - f^{k+1})/max{|f^k|,|f^{k+1}|,1} <= factr*epsmch where epsmch is the machine precision, which is automatically generated by the code. Typical values for factr:
|
pgtol | On entry pgtol >= 0 is specified by the user. The iteration will stop when max{|proj g_i | i = 1, ..., n} <= pgtol where pg_i is the ith component of the projected gradient. On exit pgtol is unchanged. |
wa | working array |
iwa | working array |
task | working string indicating the current job when entering and quitting this subroutine. |
iprint | Must be set by the user. It controls the frequency and type of output generated:
|
csave | working string |
lsave | working array; On exit with 'task' = NEW_X, the following information is available:
|
isave | working array; On exit with 'task' = NEW_X, the following information is available:
|
dsave | working array; On exit with 'task' = NEW_X, the following information is available:
|
Definition at line 188 of file setulb.f.
References mainlb().