[Rd] constrOptim( ): conflict between help page and code

John Nolan jpnolan at american.edu
Thu Jun 17 04:47:59 CEST 2010


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

 jpnolan at american.edu
 202.885.3140 voice
 202.885.3155 fax
 http://academic2.american.edu/~jpnolan
 ...........................................................................


More information about the R-devel mailing list