There is a contradiction between what the help page says and what constrOptim actually does with the constraints. The issue is what happens on the boundary. The help page says The feasible region is defined by ‘ui %*% theta - ci >= 0’, but the R code for constrOptim reads if (any(ui %*% theta - ci <= 0)) stop("initial value not feasible") The following example shows that when the initial point is on the boundary of the feasibility region, you get the above error message and execution stops.
> fn <- function(x) { return(sum(x)) } > > ui <- diag(rep(1,2)) > ci <- matrix(0,nrow=2,ncol=1) > constrOptim( c(0,0), fn, NULL, ui, ci ) Error in optim(theta.old, fun, gradient, control = control, method = method, : function cannot be evaluated at initial parameters > > version platform i386-pc-mingw32 arch i386 os mingw32 system i386, mingw32 status major 2 minor 10.0 year 2009 month 10 day 26 svn rev 50208 language R version.string R version 2.10.0 (2009-10-26) In contrast, at a different place in constrOptim - the internal function R - the boundary of the feasibility region is allowed: if (any(gi < 0)) return(NaN), and it seems to explicitly allow boundaries at another place: allowing gi==0 and interpreting log(gi) as -Inf. John ........................................................................... John P. Nolan Math/Stat Department 227 Gray Hall American University 4400 Massachusetts Avenue, NW Washington, DC 20016-8050 jpno...@american.edu 202.885.3140 voice 202.885.3155 fax http://academic2.american.edu/~jpnolan ........................................................................... ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel