The argument maxit used in libraries optimr, hydroPSO, and FME to control the maximal number of iterations to be performed does not work at ALL!!
This needs to be fixed... mysamp <- function(n, m, s, lwr, upr, nnorm) { samp <- rnorm(nnorm, m, s) samp <- samp[samp >= lwr & samp <= upr] if (length(samp) >= n) { return(sample(samp, n)) } stop(simpleError("Not enough values to sample from. Try increasing nnorm.")) } x <- mysamp(1000,0.8117648,0.1281839,0,1,1000000) y <- mysamp(1000,0.7530346,0.1865946,0,1,1000000) n <- length(x) xgroup <- c('a','b') ygroup <- c('c','d') for (i in c(2:n)){ xgroup[i] <- c('b') ygroup[i] <- c('d') } dataset <- data.frame(x = x, y = y, xgroup = as.factor(xgroup), ygroup = as.factor(ygroup)) dataset$ObsNo <- 1:n dataset <- dataset[order(dataset$x,decreasing=F),] xopt <- c(dataset$x[1],0.95) #Initial critical x,y values my.function <- function(xopt){ for (i in c(1:n)){ dataset$xgroup[i] <- if(dataset$x[i] < xopt[1]) 'a' else 'b' dataset$ygroup[i] <- if(dataset$y[i] < xopt[2]) 'c' else 'd' dataset$q.i[i] <- with(dataset, ifelse (dataset$xgroup[i]=='a' & dataset$ygroup[i]=='d', 1, 0)) dataset$q.ii[i] <- with(dataset, ifelse (dataset$xgroup[i]=='b' & dataset$ygroup[i]=='d', 1, 0)) dataset$q.iii[i] <- with(dataset, ifelse (dataset$xgroup[i]=='b' & dataset$ygroup[i]=='c', 1, 0)) dataset$q.iv[i] <- with(dataset, ifelse (dataset$xgroup[i]=='a' & dataset$ygroup[i]=='c', 1, 0)) dataset$q.err[i] <- sum(dataset$q.i[i] + dataset$q.iii[i]) } min.qerr <- sum(dataset$q.err) q.I <- sum(dataset$q.i) q.II <- sum(dataset$q.ii) q.III <- sum(dataset$q.iii) q.IV <- sum(dataset$q.iv) q.Iandq.III <- sum(dataset$q.err) print(c(q.I, q.II, q.III, q.IV, q.Iandq.III)) return(min.qerr) } my.function(xopt) #-------Algorithm xmin=c(0,0.60) xmax=c(0.95,0.95) res= hydroPSO(par=xopt,my.function,method="spso2011", lower=xmin,upper=xmax,control=list(maxit=3)) res= modFit(my.function,p=xopt,method="Pseudo", lower=xmin,upper=xmax,control=list(numiter=3)) res= optimr(par=xopt,my.function,method="L-BFGS-B", lower=xmin,upper=xmax,control=list(maxit=3,trace=T)) #Only the hjkb form dfoptim that has argument maxfeval and it works. res=hjkb(par=xopt,my.function, lower=xmin,upper=xmax,control=list(maxfeval=3,tol=2^-10,info=T)) Ahmed Attia, Ph.D. Agronomist & Crop Modeler ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.