From nashjc at uottawa.ca  Tue Oct 20 22:47:43 2009
From: nashjc at uottawa.ca (Prof. John C Nash)
Date: Tue, 20 Oct 2009 16:47:43 -0400
Subject: [Rd] Buglet in optim() SANN
Message-ID: <4ADE21EF.2010606@uottawa.ca>

I think SANN method in optim() is failing to report that it has not 
converged. Here is an example

genrose.f<- function(x, gs=NULL){ # objective function
## One generalization of the Rosenbrock banana valley function (n 
parameters)
	n <- length(x)
         if(is.null(gs)) { gs=100.0 }
	fval<-1.0 + sum (gs*(x[1:(n-1)]^2 - x[2:n])^2 + (x[2:n] - 1)^2)
         return(fval)
}

xx<-rep(pi,10)
test<-optim(xx,genrose.f,method="SANN",control=list(maxit=1000,trace=1))
print(test)


Output is:

 > source("tsann.R")
sann objective function values
initial       value 40781.805639
iter      999 value 29.969529
final         value 29.969529
sann stopped after 999 iterations
$par
  [1] 1.0135254 0.9886862 1.1348609 1.0798927 1.0327997 1.1087146 1.1642130
  [8] 1.3038754 1.8628391 3.7569285

$value
[1] 29.96953

$counts
function gradient
     1000       NA

$convergence
[1] 0  <------ THIS SHOULD BE 1 ACCORDING TO THE DOCS

$message
NULL

Note terribly important, but maybe fixable.

Cheers,

John Nash



[Rd] Buglet in optim() SANN
Prof. John C Nash