[R] Restricting optimisation algorithm's parameter space

Prof. John C Nash nashjc at uottawa.ca
Sat Apr 3 15:39:38 CEST 2010

> I have a problem. I am  using the NLME library to fit a non-linear model. There is a linear  component to the model that has a couple parameter values that can only  be positive (the coefficients are embedded in a sqrt). When I try and  fit the model to data the search algorithm tries to see if a negative  value for one of these parameter values will produce an optimal fit. When  it does so, it crashes because the equation can not have a negative  value because its in a sqrt function. 
> QUESTION: How do I  restrict the optimisation algorithm's  parameter space so it does not  search negative values when using GNLM? Are there other Libraries that Fit Non-linear models and allow for one to control the parameter space the search algorithm is restricted by?

There are two issues here:

1) Rendering optimization codes resistant to inadmissible parameter vectors (sqrt of 
negatives etc.)

2) Providing constraints, particularly parameter bounds, on parameter inputs to optimization.

There is quite a lot of activity going on right now with optimization in R. With Ravi 
Varadhan, Kate Mullen and Paul Gilbert, I've been putting some codes on R-forge in the 
OptimizeR project. Doug Bates has done some important kibbitzing. Stefan Theussl and 
others have the R Optimization Infrastructure. There are some differences of focus in 
these projects.

For the present poster, I cannot unfortunately help much on GNLM details, but I can say 
that there are trial versions of methods that will handle bounds (packages minqa, Rcgmin 
and Rvmmin) that accept bounds, along with existing L-BFGS-B in optim(). Rcgmin and Rvmmin 
also accept "masks", that is fixed parameters. These routines are about to go into CRAN.

It appears GNLM is not a CRAN package. Does it permit substitution of optimizer? That is 
something those of us working in optimization strongly recommend to package writers i.e., 
make the optimization a black box so any of a number of tools can be slotted in easily. 
That way, advances or even minor fixups to routines can be included in tools quickly.

However, the "bad parameters" issue, such as trying to take square root of negatives, 
requires the user or the writer of a package that the user calls to code the objective 
function to return a flag -- we are looking at an Inf or an NA, we are not yet fully 
decided on the rules -- AND the optimization package writer to then make it act 
appropriately. Mary Walker-Smith and I had this in BASIC codes in the 1980s, but we were 
maybe a bit ahead of folk and it didn't catch on generally.

If R users have some nice examples of things crashing because of such issues, I would 
really like to hear of them off-list. For us, "nice" means pretty small and easy to build 
into tests. Without such tests -- and users always provide better ones than we can think 
of -- the code is never as robust.


More information about the R-help mailing list