The minimization of general functions of one or more variables can be carried out using the command:
MINIMIZE, func, x$_1$[, x$_2$, x$_3$, …]
where func represents a function of up to 50 variables x$_1$, x$_2$, …. 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, …] [minimize:method]
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 evaluationsOptions 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($x$)
vscale=2 optimization in space of initial value scaling, e.g., $x_1/x_{1i}$ (default)
THRESH=thresh Required accuracy of either the gradient (BFGS) or parameters (SIMPLEX). The default is $1 \cdot 10^{-4}$ for BFGS and $1 \cdot 10^{-2}$ 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 verticesPROC=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 linebreaks)
MAXIT,maxit maximum number of optimization cycles. The default is 30 for BFGS and 100 for SIMPLEX.***, Simple geometry optimization
basis=vdz
geometry={
O
H 1 r
H 1 r 2 theta}
r=1.8
theta=104
hf
mp2
{minimize,energy,r,theta}
---
***, Optimization of 2 d functions
geometry={Ne}
dexp=[2.0,1.0]
basis={
sp,Ne,vdz;c;
d,Ne,dexp(1),dexp(2)
}
hf
mp2
eval=energy
minimize,eval,dexp(1),dexp(2)
---
***, Optimization of 2 d functions
geometry={Ne}
dexp=[2.0,1.0]
{minimize,eval,dexp(1),dexp(2)
method,bfgs,varscale=1,thresh=1e-5,proc=optd}
proc optd
basis={
sp,Ne,vdz;c;
d,Ne,dexp(1),dexp(2)
}
hf
mp2
eval=energy
endproc
***, MP2 optimization of core-valence cc-pCVDZ functions
geometry={Ne}
sexp=20.
pexp=30.
{minimize,ecv,sexp,pexp
method,bfgs,varscale=1,thresh=1e-5,proc=myopt}
proc myopt
basis={
spd,Ne,vdz;c;
s,Ne,sexp
p,Ne,pexp
}
hf
{mp2;core,1}
eval=energy
{mp2;core,0}
eall=energy
ecv=eall-eval
endproc
***, Try to find intersection seam of singlet-triplet CH2 as function of angle
basis=vdz
geometry={
C
H 1 r
H 1 r 2 theta}
r=1.6
angles=[70,75,80,85,90]
do i=1,#angles
theta=angles(i)
{minimize,ediff,r
method,bfgs,thresh=1e-5,proc=findit}
ropt(i)=r
eseam(i)=etriplet
converge(i)=ediff
enddo
table,angles,ropt,eseam,converge
digit,0,3,5,6
proc findit
{hf;wf,8,2,2}
etriplet=energy
{hf;wf,8,1,0}
esinglet=energy
ediff=(etriplet-esinglet)**2
endproc
---