With some chagrin after spending a couple of hours trying to debug a script, I realized I had typed in something like ans<-optimx(start, myfn, mygr, lower<-lo, upper=up) that is, the "<-" rather than "=". The outcome on my machine was a non-obvious error several layers deep in the call stack. For info, optim() seems to stop much more quickly. The error is "obvious", but I'm wondering if there is a simple way to trap or warn of it. For completeness, I include the commands I used to force the error. Note that it will only work fully with the latest (R-forge) version of optimx/optfntools because of the form of gr="gfwd" that allows a choice of different numerical gradient routines. This is a curiosity rather than a necessity, but if there is a simple way to check, I'll put it in my codes. Cheers, JN rm(list=ls()) start<-rep(3,6) lo<-rep(2,6) up<-rep(4,6) flb <- function(x) { p <- length(x); sum(c(1, rep(4, p-1)) * (x - c(1, x[-p])^2)^2) } ans<-optim(start, flb, lower=lo, upper=up) ans ans<-optim(start, flb, lower<-lo, upper=up) ans ans1<-optim(start, flb, lower<-lo, upper=up) ans1 require(optimx) ans1x<-optimx(start, flb, lower<-lo, upper=up) ans1x<-optimx(start, flb, gr="gfwd",lower<-lo, upper=up) ans1<-optim(start, flb, gr=NULL,lower<-lo, upper=up)
This is valid syntax, so what should we check for?. Uwe On 12.12.2011 22:10, John C Nash wrote:> With some chagrin after spending a couple of hours trying to debug a script, I realized I > had typed in something like > > ans<-optimx(start, myfn, mygr, lower<-lo, upper=up) > > that is, the "<-" rather than "=". The outcome on my machine was a non-obvious error > several layers deep in the call stack. For info, optim() seems to stop much more quickly. > > The error is "obvious", but I'm wondering if there is a simple way to trap or warn of it. > For completeness, I include the commands I used to force the error. Note that it will only > work fully with the latest (R-forge) version of optimx/optfntools because of the form of > gr="gfwd" that allows a choice of different numerical gradient routines. > > This is a curiosity rather than a necessity, but if there is a simple way to check, I'll > put it in my codes. > > Cheers, > > JN > > rm(list=ls()) > start<-rep(3,6) > lo<-rep(2,6) > up<-rep(4,6) > flb<- function(x) > { p<- length(x); sum(c(1, rep(4, p-1)) * (x - c(1, x[-p])^2)^2) } > ans<-optim(start, flb, lower=lo, upper=up) > ans > ans<-optim(start, flb, lower<-lo, upper=up) > ans > ans1<-optim(start, flb, lower<-lo, upper=up) > ans1 > require(optimx) > ans1x<-optimx(start, flb, lower<-lo, upper=up) > ans1x<-optimx(start, flb, gr="gfwd",lower<-lo, upper=up) > ans1<-optim(start, flb, gr=NULL,lower<-lo, upper=up) > > ______________________________________________ > R-devel at r-project.org mailing list > stat.ethz.ch/mailman/listinfo/r-devel