L-BFGS-B
3.0
Large-scale Bound-constrained Optimization
|
Go to the source code of this file.
Functions/Subroutines | |
subroutine | cauchy (n, x, l, u, nbd, g, iorder, iwhere, t, d, xcp, m, wy, ws, sy, wt, theta, col, head, p, c, wbp, v, nseg, iprint, sbgnrm, info, epsmch) |
Compute the Generalized Cauchy Point along the projected gradient direction. More... | |
subroutine cauchy | ( | integer | n, |
double precision, dimension(n) | x, | ||
double precision, dimension(n) | l, | ||
double precision, dimension(n) | u, | ||
integer, dimension(n) | nbd, | ||
double precision, dimension(n) | g, | ||
integer, dimension(n) | iorder, | ||
integer, dimension(n) | iwhere, | ||
double precision, dimension(n) | t, | ||
double precision, dimension(n) | d, | ||
double precision, dimension(n) | xcp, | ||
integer | m, | ||
double precision, dimension(n, col) | wy, | ||
double precision, dimension(n, col) | ws, | ||
double precision, dimension(m, m) | sy, | ||
double precision, dimension(m, m) | wt, | ||
double precision | theta, | ||
integer | col, | ||
integer | head, | ||
double precision, dimension(2*m) | p, | ||
double precision, dimension(2*m) | c, | ||
double precision, dimension(2*m) | wbp, | ||
double precision, dimension(2*m) | v, | ||
integer | nseg, | ||
integer | iprint, | ||
double precision | sbgnrm, | ||
integer | info, | ||
double precision | epsmch | ||
) |
For given x, l, u, g (with sbgnrm > 0), and a limited memory BFGS matrix B defined in terms of matrices WY, WS, WT, and scalars head, col, and theta, this subroutine computes the generalized Cauchy point (GCP), defined as the first local minimizer of the quadratic
Q(x + s) = g's + 1/2 s'Bs
along the projected gradient direction P(x-tg,l,u). The routine returns the GCP in xcp.
n | On entry n is the dimension of the problem. On exit n is unchanged. |
x | On entry x is the starting point for the GCP computation. On exit x is unchanged. |
l | On entry l is the lower bound of x. On exit l is unchanged. |
u | On entry u is the upper bound of 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)=
|
g | On entry g is the gradient of f(x). g must be a nonzero vector. On exit g is unchanged. |
iorder | iorder will be used to store the breakpoints in the piecewise linear path and free variables encountered. On exit,
|
iwhere | On entry iwhere indicates only the permanently fixed (iwhere=3) or free (iwhere= -1) components of x. On exit iwhere records the status of the current x variables. iwhere(i)=
|
t | working array; will be used to store the break points. |
d | the Cauchy direction P(x-tg)-x |
xcp | returns the GCP on exit |
m | On entry m is the maximum number of variable metric corrections used to define the limited memory matrix. On exit m is unchanged. |
ws | On entry this stores S, a set of s-vectors, that defines the limited memory BFGS matrix. On exit this array is unchanged. |
wy | On entry this stores Y, a set of y-vectors, that defines the limited memory BFGS matrix. On exit this array is unchanged. |
sy | On entry this stores S'Y, that defines the limited memory BFGS matrix. On exit this array is unchanged. |
wt | On entry this stores the Cholesky factorization of (theta*S'S+LD^(-1)L'), that defines the limited memory BFGS matrix. On exit this array is unchanged. |
theta | On entry theta is the scaling factor specifying B_0 = theta I. On exit theta is unchanged. |
col | On entry col is the actual number of variable metric corrections stored so far. On exit col is unchanged. |
head | On entry head is the location of the first s-vector (or y-vector) in S (or Y). On exit col is unchanged. |
p | will be used to store the vector p = W^(T)d. |
c | will be used to store the vector c = W^(T)(xcp-x). |
wbp | will be used to store the row of W corresponding to a breakpoint. |
v | working array |
nseg | On exit nseg records the number of quadratic segments explored in searching for the GCP. |
iprint | variable that must be set by the user. It controls the frequency and type of output generated:
|
sbgnrm | On entry sbgnrm is the norm of the projected gradient at x. On exit sbgnrm is unchanged. |
info | On entry info is 0. On exit info =
|
epsmch | machine precision epsilon |
Definition at line 130 of file cauchy.f.
References bmv(), and hpsolb().
Referenced by mainlb().