Finds the minimum of a function in one dimension (R.W. Payne).
Options
PRINT = string tokens |
What output to produce (minimum, monitoring, plot); default mini |
|---|---|
CALCULATION = expression structures |
Expressions to calculate the target function |
FUNCTIONVALUE = scalars |
Identifier of the scalar, calculated by CALCULATION, whose value is to be minimized |
DATA = any type |
Data to be used with procedure _MIN1DFUNCTION |
CRITERION = string token |
Criterion for convergence (function, parameters); default func |
MAXCYCLE = scalars |
Maximum number of iterations; default 250 |
EXIT = scalars |
Indicates whether there has been convergence (0) or non-convergence (1) |
TOLERANCE = scalars |
Convergence criterion; default 10-6 or variate |
Parameters
PARAMETER = scalars |
Parameters to be estimated |
|---|---|
LOWER = scalars |
Lower bound for each parameter |
UPPER = scalars |
Upper bound for each parameter |
STEPLENGTH = scalars |
Step length for each parameter |
INITIAL = scalars |
Initial value for each parameter |
Description
MIN1DIMENSION searches for the minimum of a function in one dimension. The parameters to be estimated by the minimization are listed by the PARAMETER parameter of MIN1DIMENSION. Step lengths and initial values must be supplied using the STEPLENGTH and INITIAL parameters. When there are several parameters, these also define the dimension in the parameter space over which the function is minimized. Within each step of the minimization, the same multiple is used for the step length of every parameter. So the dimension is defined as the set of parameter values that can be calculated as
PARAMETER[1...p] = INITIAL[1...p] + Move * STEPLENGTH[1...p]
where Move is a scalar, and p is the number of parameters. You can also specify lower bounds with the LOWER parameter, and upper bounds with the UPPER parameter.
The function can be defined by specifying a list of Genstat calculation structures with the CALCULATION option, similarly to the way in which functions for optimization are specified for the FITNONLINEAR directive (see the Guide to the Genstat Command Language, Part 2 Statistics, Section 3.8). For example, you could find the minimum of the function 5*X-25*LOG(X) as follows.
EXPRESSION Calc; VALUE=!e(Fx = 5 * X - 25 * LOG(X))
MIN1DIMENSION [PRINT=minimum,monitor,plot; EXIT=exit;\
CALCULATION=Calc; FUNCTIONVALUE=Fx]\
X; STEPLENGTH=1; INITIAL=1; LOWER=0.001
Alternatively, more complicated functions can be specified by defining a procedure _MIN1DFUNCTION, which operates similarly to the RESAMPLE procedure that is called by procedures BOOTSTRAP and JACKKNIFE. This is more complicated to specify, but it has the advantage that you can use any Genstat command to obtain the function value (e.g. ANOVA, FIT, SVD and so on). The DATA option is then used to list any data structures that are needed by _MIN1DFUNCTION to calculate the value of the function. Details are given in the Methods Section.
The PRINT option controls printed output with the settings:
minimum |
to print the minimum function value and parameter values, |
|---|---|
monitoring |
to print to monitor information showing the progress of the minimization, and |
plot |
to plot the function values around the initial values. |
By default, PRINT=minimum.
The scalars specified by the PARAMETER parameter save the estimated values of the parameters, and the FUNCTIONVALUE scalar saves the minimum value. You can also save a scalar, using the EXIT option, which is set to 0 if the minimization was successful or to 1 if it did not converge.
The MAXCYCLE option sets a limit on the number of iterations; by default this is 250. The TOLERANCE option specifies the tolerance for convergence (default 10-6), and the CRITERION option specifies what is tested. When CRITERION=function, convergence is achieved when the current function evaluations differ by less than the (scalar) value supplied by TOLERANCE. Alternatively, when CRITERION=parameters, the parameter values at the current evaluations must differ by less than TOLERANCE, which can then be set to either a scalar (to use the same tolerance with every parameter) or a variate (for different tolerances).
Options: PRINT, CALCULATION, FUNCTIONVALUE, DATA, CRITERION, MAXCYCLE, EXIT, TOLERANCE.
Parameters: PARAMETER, LOWER, UPPER, STEPLENGTH, INITIAL.
Method
MIN1DIMENSION performs a series of iterations in which three points are moved in the one dimension to locate the minimum. The idea is that the two outer points should bracket the minimum, while the inner point locates it.
The procedure _MIN1DFUNCTION, which you can use to calculate the function instead of the CALCULATION and FUNCTIONVALUE options, has two options. DATA supplies a pointer containing the data structures specified by the DATA option of MIN1DIMENSION (so, DATA[1] is the first of these structures, DATA[2] is the second, and so on). FUNCTIONVALUE is a scalar, which should be set to the function value. There is one parameter, called PARAMETER. The PROCEDURE statement that defines _MIN1DFUNCTION should set option PARAMETER=pointer. The parameters of the function can then be referred to as PARAMETER[1], PARAMETER[2], and so on (and these will be in the same order as in the PARAMETER parameter of MIN1DIMENSION). The definition below has the same effect as the expression
EXPRESSION Calc; VALUE=!e(Fx = 5 * X - 25 * LOG(X))
shown in the description.
PROCEDURE [PARAMETER=pointer] '_MIN1DFUNCTION'
" calculates the function for MIN1DIMENSION "
OPTION NAME=\
'DATA', "(I: pointer) data to calculate the function"\
'FUNCTIONVALUE'; "(O: scalar) returns the function value"\
MODE=p; TYPE='pointer','scalar'
PARAMETER NAME=\
'PARAMETER'; "(I: scalar) parameter values"\
MODE=p; TYPE='scalar'; SET=yes; DECLARED=yes; PRESENT=yes
CALCULATE FUNCTIONVALUE = 5*PARAMETER[1] - 25*LOG(PARAMETER[1])
ENDPROCEDURE
The parameter X can then be estimated by the statement
MIN1DIMENSION [PRINT=minimum,monitor,plot; EXIT=exit]\
X; STEPLENGTH=1; INITIAL=1; LOWER=0.001
Action with RESTRICT
The effects of restrictions on the data variables will depend on how the calculation is defined (by the CALCULATION option or within the _MIN1DFUNCTION procedure).
See also
Directive: FITNONLINEAR.
Procedures: DEMC, FPARETOSET, MINIMIZE, SIMPLEX.
Commands for: Regression analysis.
Example
CAPTION 'MIN1DIMENSION examples',\
'Define the function using the CALCULATION option';\
STYLE=meta,plain
EXPRESSION Calc; VALUE=!e(Fx = 5 * X - 25 * LOG(X))
MIN1DIMENSION [PRINT=minimum,monitor,plot; EXIT=exit;\
CALCULATION=Calc; FUNCTIONVALUE=Fx]\
X; STEPLENGTH=1; INITIAL=1; LOWER=0.001
CAPTION 'Define the function using the _MIN1DFUNCTION procedure'
PROCEDURE [PARAMETER=pointer] '_MIN1DFUNCTION'
" calculates the function for MIN1DIMENSION "
OPTION NAME=\
'DATA', "(I: pointer) data to calculate the function"\
'FUNCTIONVALUE';"(O: scalar) returns the function value"\
MODE=p; TYPE='pointer','scalar'
PARAMETER NAME=\
'PARAMETER'; "(I: scalar) parameter values"\
MODE=p; TYPE='scalar'; SET=yes; DECLARED=yes; PRESENT=yes
CALCULATE FUNCTIONVALUE = 5 * PARAMETER[1] - 25 * LOG(PARAMETER[1])
ENDPROCEDURE
MIN1DIMENSION [PRINT=minimum,monitor,plot; EXIT=exit]\
X; STEPLENGTH=1; INITIAL=1; LOWER=0.001