?optim # The default method for optim() is called "Nelder-Mead" optimization optim(par=c(0,0),fn=my.fcn,control=list(fnscale=-1)) # "SANN" does simulated annealing optim(par=c(0,0),fn=my.fcn,control=list(fnscale=-1,maxit=100000),method="SANN") # "CG" is a gradient method (Note: "BFGS" is another gradient method) optim(par=c(0,0),fn=my.fcn,control=list(fnscale=-1,maxit=10000),method="CG") optim(par=c(-2,-2),fn=my.fcn,control=list(fnscale=-1,maxit=10000),method="CG") ## The tricky function of one variable: # "Nelder-Mead" optimization: optim(par=c(0),fn=my.fcn.simp,control=list(fnscale=-1)) # It doesn't work here ... R recommends 'optimize'... # optimize() does simple one-dimensional optimization (but not always well ... see below) ?optimize # By default, 'optimize' will do minimization, so set maximum=T if you want the maximum. optimize(my.fcn.simp, lower=-512, upper=512, maximum=T) # It didn't work --- it found a local maximum, not the global maximum. # The Simple Stochastic Search method was slower but better in this case.