|
L-BFGS-B
3.0
Large-scale Bound-constrained Optimization
|
Go to the source code of this file.
Functions/Subroutines | |
| subroutine | freev (n, nfree, index, nenter, ileave, indx2, iwhere, wrk, updatd, cnstnd, iprint, iter) |
| This subroutine counts the entering and leaving variables when iter > 0, and finds the index set of free and active variables at the GCP. More... | |
| subroutine freev | ( | integer | n, |
| integer | nfree, | ||
| integer, dimension(n) | index, | ||
| integer | nenter, | ||
| integer | ileave, | ||
| integer, dimension(n) | indx2, | ||
| integer, dimension(n) | iwhere, | ||
| logical | wrk, | ||
| logical | updatd, | ||
| logical | cnstnd, | ||
| integer | iprint, | ||
| integer | iter | ||
| ) |
This subroutine counts the entering and leaving variables when iter > 0, and finds the index set of free and active variables at the GCP.
| n | number of parameters |
| nfree | number of free parameters, i.e., those not at their bounds |
| index | for i=1,...,nfree, index(i) are the indices of free variables for i=nfree+1,...,n, index(i) are the indices of bound variables On entry after the first iteration, index gives the free variables at the previous iteration. On exit it gives the free variables based on the determination in cauchy using the array iwhere. |
| nenter | On exit nenter is the number of variables that entered the free set this iteration (were active, now free at the GCP). |
| ileave | On exit indx2(ileave),...,indx2(n) list the variables that left the free set this iteration. ileave starts at n+1 and is decremented each time a leaving variable is recorded. |
| indx2 | On entry indx2 is unspecified. On exit with iter>0, indx2 indicates which variables have changed status since the previous iteration. For i= 1,...,nenter, indx2(i) have changed from bound to free. For i= ileave+1,...,n, indx2(i) have changed from free to bound. |
| iwhere | On entry iwhere(i) classifies each variable's bound status (set by cauchy): <=0 means free at GCP, >0 means at-bound. Used here to compare against the previous index/nfree to detect leaving and entering variables. |
| wrk | On exit .true. if the active-set or L-BFGS bookkeeping has changed enough that the workspace WN needs to be rebuilt (some variable entered/left, or updatd is .true.). |
| updatd | On entry .true. if the L-BFGS matrix was updated in the previous iteration. Combined with the entering/leaving counts to set wrk. |
| cnstnd | Whether bounds are present (true if at least one variable is bounded). When false, the entering/leaving counting loop is skipped. |
| iprint | Console output flag (>=99 prints summary, >=100 prints per-variable change records). |
| iter | Current outer iteration number. The entering/leaving counting loop only runs when iter > 0 (the first iteration has no "previous" set to compare against). |
Definition at line 47 of file freev.f.
Referenced by mainlb().