All, I am looking for an optimization library that does well on something as chaotic as the Schwefel function:
schwefel <- function(x) sum(-x * sin(sqrt(abs(x)))) With these guys, not much luck: > optim(c(1,1), schwefel)$value [1] -7.890603 > optim(c(1,1), schwefel, method="SANN", control=list(maxit=10000))$value [1] -28.02825 > optim(c(1,1), schwefel, lower=c(-500,-500), upper=c(500,500), > method="L-BFGS-B")$value [1] -7.890603 > optim(c(1,1), schwefel, method="BFGS")$value [1] -7.890603 > optim(c(1,1), schwefel, method="CG")$value [1] -7.890603 All trapped in local minima. I get the right answer when I pick a starting point that's close: > optim(c(400,400), schwefel, lower=c(-500,-500), upper=c(500,500), > method="L-BFGS-B")$value [1] -837.9658 Of course I can always roll my own: r <- vector() for(i in 1:1000) { x <- runif(2, -500,500) m <- optim(x, schwefel, lower=c(-500,-500), upper=c(500,500), method="L-BFGS-B") r <- rbind(r, c(m$par, m$value)) } And this does fine. I'm just wondering if this is the right approach, or if there is some other package that wraps this kind of multi-start up so that the user doesn't have to think about it. Best, Ara ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.