49 MINIMIZATION OF FUNCTIONS

The minimization of general functions of one or more variables can be carried out using the command:

`MINIMIZE`, *func, x*[, *x, x, ...*]

where *func* represents a function of up to 50 variables *x, x, ...*. Two different optimization methods can be selected as described below which do or do not use numerical derivative information.

The optimization method, as well as finer control over *func*, can be chosen using the `METHOD` directive

`METHOD`, *key* [, *key1=value, key2=value, ...*]

where *key* defines the optimization method. Valid options for *key* are:

`BFGS`- Broyden-Fletcher-Goldfarb-Shanno conjugate gradient method, which uses numerical gradients (default)
`SIMPLEX`- Downhill simplex method, which uses only function evaluations

Options to these methods, *key1, key2, ...*, are:

`VARSCALE`=*vscale*- Optimization in space of scaled variables.
*vscale=0*no scaling (not recommended)*vscale=1*optimization in the space of ln()*vscale=2*optimization in space of initial value scaling, e.g., (default) `THRESH`=*thresh*- Required accuracy of either the gradient (BFGS) or parameters (SIMPLEX). The default is for BFGS and for SIMPLEX. Note that previously this pertained to the function value in the Simplex case.
`VSTEP`=*epsd*- Step size for numerical gradients (BFGS) or initial SIMPLEX vertices
`PROC`=*procname*- Specifies the procedure to be executed in each optimization step. This defines a complete function evaluation (if needed, numerical gradients will be evaluated using this procedure as well)
`STARTCMD`=*command*- Specifies a start command. In each optimization step all input beginning
with
*command*to the current`MINIMIZE`is processed.

Miscellaneous directives (separated by semicolons or line breaks)

`MAXIT`,*maxit*- maximum number of optimization cycles. The default is 30 for BFGS and 100 for SIMPLEX.