Click or drag to resize

CAUCHYRun Method


Namespace: DotNumerics.Optimization.LBFGSB
Assembly: DWSIM.MathOps.DotNumerics (in DWSIM.MathOps.DotNumerics.dll) Version: 1.0.0.0 (1.0.0.0)
Syntax
public void Run(
	int N,
	double[] X,
	int offset_x,
	double[] L,
	int offset_l,
	double[] U,
	int offset_u,
	int[] NBD,
	int offset_nbd,
	double[] G,
	int offset_g,
	ref int[] IORDER,
	int offset_iorder,
	ref int[] IWHERE,
	int offset_iwhere,
	ref double[] T,
	int offset_t,
	ref double[] D,
	int offset_d,
	ref double[] XCP,
	int offset_xcp,
	int M,
	double[] WY,
	int offset_wy,
	double[] WS,
	int offset_ws,
	double[] SY,
	int offset_sy,
	double[] WT,
	int offset_wt,
	double THETA,
	int COL,
	int HEAD,
	ref double[] P,
	int offset_p,
	ref double[] C,
	int offset_c,
	ref double[] WBP,
	int offset_wbp,
	ref double[] V,
	int offset_v,
	ref int NINT,
	double[] SG,
	int offset_sg,
	double[] YG,
	int offset_yg,
	int IPRINT,
	double SBGNRM,
	ref int INFO,
	double EPSMCH
)
Request Example View Source

Parameters

N  Int32
is an integer variable. On entry n is the dimension of the problem. On exit n is unchanged.
X  Double
is a double precision array of dimension n. On entry x is the starting point for the GCP computation. On exit x is unchanged.
offset_x  Int32
 
L  Double
is a double precision array of dimension n. On entry l is the lower bound of x. On exit l is unchanged.
offset_l  Int32
 
U  Double
is a double precision array of dimension n. On entry u is the upper bound of x. On exit u is unchanged.
offset_u  Int32
 
NBD  Int32
is an integer array of dimension n. On entry nbd represents the type of bounds imposed on the variables, and must be specified as follows: nbd(i)=0 if x(i) is unbounded, 1 if x(i) has only a lower bound, 2 if x(i) has both lower and upper bounds, and 3 if x(i) has only an upper bound. On exit nbd is unchanged.
offset_nbd  Int32
 
G  Double
is a double precision array of dimension n. On entry g is the gradient of f(x). g must be a nonzero vector. On exit g is unchanged.
offset_g  Int32
 
IORDER  Int32
is an integer working array of dimension n. iorder will be used to store the breakpoints in the piecewise linear path and free variables encountered. On exit, iorder(1),...,iorder(nleft) are indices of breakpoints which have not been encountered; iorder(nleft+1),...,iorder(nbreak) are indices of encountered breakpoints; and iorder(nfree),...,iorder(n) are indices of variables which have no bound constraits along the search direction.
offset_iorder  Int32
 
IWHERE  Int32
is an integer array of dimension n. 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)=-3 if x(i) is free and has bounds, but is not moved 0 if x(i) is free and has bounds, and is moved 1 if x(i) is fixed at l(i), and l(i) .ne. u(i) 2 if x(i) is fixed at u(i), and u(i) .ne. l(i) 3 if x(i) is always fixed, i.e., u(i)=x(i)=l(i) -1 if x(i) is always free, i.e., it has no bounds.
offset_iwhere  Int32
 
T  Double
is a double precision working array of dimension n. t will be used to store the break points.
offset_t  Int32
 
D  Double
is a double precision array of dimension n used to store the Cauchy direction P(x-tg)-x.
offset_d  Int32
 
XCP  Double
is a double precision array of dimension n used to return the GCP on exit.
offset_xcp  Int32
 
M  Int32
is an integer variable. On entry m is the maximum number of variable metric corrections used to define the limited memory matrix. On exit m is unchanged.
WY  Double
 
offset_wy  Int32
 
WS  Double
 
offset_ws  Int32
 
SY  Double
 
offset_sy  Int32
 
WT  Double
 
offset_wt  Int32
 
THETA  Double
is a double precision variable. On entry theta is the scaling factor specifying B_0 = theta I. On exit theta is unchanged.
COL  Int32
is an integer variable. On entry col is the actual number of variable metric corrections stored so far. On exit col is unchanged.
HEAD  Int32
is an integer variable. On entry head is the location of the first s-vector (or y-vector) in S (or Y). On exit col is unchanged.
P  Double
is a double precision working array of dimension 2m. p will be used to store the vector p = W^(T)d.
offset_p  Int32
 
C  Double
is a double precision working array of dimension 2m. c will be used to store the vector c = W^(T)(xcp-x).
offset_c  Int32
 
WBP  Double
is a double precision working array of dimension 2m. wbp will be used to store the row of W corresponding to a breakpoint.
offset_wbp  Int32
 
V  Double
is a double precision working array of dimension 2m.
offset_v  Int32
 
NINT  Int32
is an integer variable. On exit nint records the number of quadratic segments explored in searching for the GCP.
SG  Double
and yg are double precision arrays of dimension m. On entry sg and yg store S'g and Y'g correspondingly. On exit they are unchanged.
offset_sg  Int32
 
YG  Double
 
offset_yg  Int32
 
IPRINT  Int32
is an INTEGER variable that must be set by the user. It controls the frequency and type of output generated: iprint.LT.0 no output is generated; iprint=0 print only one line at the last iteration; 0.LT.iprint.LT.99 print also f and |proj g| every iprint iterations; iprint=99 print details of every iteration except n-vectors; iprint=100 print also the changes of active set and final x; iprint.GT.100 print details of every iteration including x and g; When iprint .GT. 0, the file iterate.dat will be created to summarize the iteration.
SBGNRM  Double
is a double precision variable. On entry sbgnrm is the norm of the projected gradient at x. On exit sbgnrm is unchanged.
INFO  Int32
is an integer variable. On entry info is 0. On exit info = 0 for normal return, = nonzero for abnormal return when the the system used in routine bmv is singular.
EPSMCH  Double
 
See Also