[R] optim with specific constraints on possible values
Spencer Graves
spencer.graves at pdf.com
Fri May 19 18:31:11 CEST 2006
Searching over a finite set of possible values sounds like a variant
of integer programming. If the finite number is small, then the most
efficient algorithm may be just to compute them all.
However, if it's a number like 13^13, then that's not feasible. If
the objective function is sufficiently smooth and well defined over all
real numbers (at least in some convex set, preferably rectangular), then
a good "integer programming algorithm" may be to find the optimum
ignoring the integer constraint first, then search all integer
combinations in an appropriate region of the non-integer optimum.
Have you tried RSiteSearch("integer programming")? This just
produced 205 hits for me. Some were relevant, some weren't. Google
also seemed to produce some potentially useful hits.
What problem are you trying to solve? If a grid search is used just
to simplify the problem, I think that's wise if the objective function
is known to have multiple local optima, discontinuities, etc. If,
however, the objective function is smooth, then I think 'optim' or
'nlminb' might work better for you, especially if your "finite set" is
merely an attempt to reduce the compute time.
Hope this helps,
Spencer Graves
Camarda, Carlo Giovanni wrote:
> Dear R-users,
>
> I am working with some grid-search optimization for 13 values of an
> object function.
>
> At glance one may compute the object function for each possible
> combination of set of parameters, but in my case would not be feasible:
> taking for example 13 possible values for each parameters like, in
> logarithm scale, 10^seq(-3,3,.5) will lead to 13^13 combinations of
> results.
>
> As a second trial I use the general-purpose function "optim" both
> without and with constraints from the candidate values (of course the
> latter is fast and fine with me), but I am wondering whether there is
> kind of optim-function which optimize using only a series of values to
> give as additional arguments. Just inventing, something like:
>
> possible1 <- 10^seq(-3,3,0.5)
> possible2 <- 10^seq(-3,3,0.5)
> ...
> possible13 <- 10^seq(-3,3,0.5)
>
> new.optim(par=rep(median(possible1), 13),
> fn=my.object.function,
> from=cbind(possible1, possible2,..., possible13))
>
> Instead of just:
> optim(par=rep(median(possible1), 13),
> fn=my.object.function,
> method=c("L-BFGS-B"),
> lower=rep(min(possible1), 13),
> upper=rep(min(possible1), 13))
>
>
> Thanks in advance,
> Carlo Giovanni Camarda
>
> ===========================================
> Camarda Carlo Giovanni
> PhD-Student
> Max Planck Institute for Demographic Research
> Konrad-Zuse-Strasse 1
> 18057 Rostock, Germany
> Tel: +49 (0)381 2081 172
> Fax: +49 (0)381 2081 472
> camarda at demogr.mpg.de
> ===========================================
>
>
> ----------
> This mail has been sent through the MPI for Demographic Rese...{{dropped}}
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
More information about the R-help
mailing list