[R] Advice wanted on using optim with both continuous and discrete par arguments...

Ravi Varadhan rvaradhan at jhmi.edu
Mon Mar 1 20:25:54 CET 2010


Hi Uwe & Jeff,

It seems to me that Jeff's problem falls under the class of "mixed-integer nonlinear programming" (MINLP) problem.  I would classify this as a "damn tough optimization problem" (DTOP!).  I am not sure if there is any R package that can handle this or there is any R link to a commercial package that can handle this (e.g. Rcplex).  The optimzation task view only talks about MILP and MIQP (mixed-integer linear and quadratic programming).

Being totally ignorant of the state-of-art methods for MINLP, I would like to suggest a "novel" approach for solving this:

Let f(X,Y) be the objective function where X and Y be the continuous and categorical variables.  You already have constraints g(X) on X.  Now, let us treat Y as continuous.  Let us define some artificial constraints on Y.  For example, if we have only one variable y, let us define a constraint function that penalizes y as it gets away from integer values I = {0, 1, ..., K}, call this h(y; I, \sigma).  This function is defined such that it is zero on the integer set I, but increases monotonically as a function of the distance away from the integer points.  The parameter \sigma is like a scaling parameter.  It should be relatively easy to come up with a smooth penalty function (may be some kind of a K-sum of reciprocal of Gaussian densities).  You can then solve the resulting nonlinear programming problem for a sequence of \sigma values starting with a large dispersion and then decreasing it towards zero.  You could use extrapolation to extrapolate to the limit as \sigma goes 
to zero.  Of course, you will then round-off the solution at the end.  Does this make sense?

Ravi.

____________________________________________________________________

Ravi Varadhan, Ph.D.
Assistant Professor,
Division of Geriatric Medicine and Gerontology
School of Medicine
Johns Hopkins University

Ph. (410) 502-2619
email: rvaradhan at jhmi.edu


----- Original Message -----
From: Uwe Ligges <ligges at statistik.tu-dortmund.de>
Date: Monday, March 1, 2010 12:59 pm
Subject: Re: [R] Advice wanted on using optim with both continuous and discrete par arguments...
To: Jeffrey Racine <racinej at mcmaster.ca>
Cc: "r-help at r-project.org" <r-help at r-project.org>


>  
>  On 01.03.2010 18:34, Jeffrey Racine wrote:
>  > Thanks Uwe.
>  >
>  > I appreciate your feedback.. in the paragraph in my email beginning 
> "The problem..."
>  
>  Whoops, apologies, I was too quickly reading your message, apparently.
>  CCing R-help to add:
>  
>  There is the Optimization Task View on CRAN:
>  
>  
>  See particularly the hints related to Mixed integer programming and 
> its 
>  variants
>  
>  Best wishes,
>  uwe
>  
>  
>  
>  
>  
>  
>  
>  
>  
>   > I point out that yes, I indeed do what you suggest for small 
>  problems, but encounter problems where this is not feasible (e.g., 10 
> 
>  variables with integer ranging from 0-20 for each variable for instance).
>  >
>  > Thanks again!
>  >
>  > -- Jeff
>  >
>  > On 2010-03-01, at 12:28 PM, Uwe Ligges wrote:
>  >
>  >>
>  >>
>  >> On 01.03.2010 16:34, Jeffrey Racine wrote:
>  >>> Dear R users,
>  >>>
>  >>> I have a problem for which my objective function depends on both 
> discrete and continuous arguments.
>  >>>
>  >>> The problem is that the number of combinations for the 
> (multivariate) discrete arguments can become overwhelming (when it is 
> univariate this is not an issue) hence search over the continuous 
> arguments for each possible combination of the discrete arguments may 
> not be feasible. Guided search over the discrete and continuous 
> arguments would be infinitely preferable. That is, exhaustive search 
> over all possible combinations works perfectly, but for large problems 
> exhaustive search simply is not in the feasible set.
>  >>>
>  >>> Both the discrete and continuous arguments are bounded (the 
> discrete lie in [0,K] and the continuous in [0,1]) and I am using 
> L-BFGS-B with lower and upper vectors defining these bounds.
>  >>>
>  >>> The issue is that when I feed optim my objective function and par 
> (whose first `k' elements must necessarily be rounded by my objective 
> function while the remaining `l' arguments are continuous), the 
> default settings naturally do not perform well at all. Typically if 
> the initial values for the discrete variables are, say, par[1:3]= 
> c(2,3,4) while those for the continuous are, say, par[4:6] = c(.17, 
> .35, .85), then optim finds the minimum for only the continuous 
> variables and dumps back the initial values for the discrete 
> variables. I presume that the numerical approximation to the 
> gradients/hessian is thrown off by the `flat spots' or 
> step-like-nature of the objective function with respect to the 
> discrete variables.
>  >>>
>  >>> I have played with ndeps, parscale etc. but nothing really works. 
> I realize this is a mixed combinatorial optimization/continuous 
> optimization problem and ideally would love pointers to any related 
> literature or ideally an R package that implements such a beast.
>  >>>
>  >>> However, if anyone has attempted to use optimization routines 
> native to R with any success in similar settings, I would love to get 
> your feedback.
>  >>
>  >>
>  >> If your 3 first discrete variables have a rather limited number of 
> possible values (sounds like that is the case), you may want to apply 
> optim() on the other variables on a complete grid of the first 3 
> variables and select the best result. Even with this complete 
> evaluation of the whole grid with say 20 possible values in each 
> dimension the results should be there within minutes without a need 
> for more specialized optimization procedures. ...
>  >>
>  >> Best wishes,
>  >> Uwe Ligges
>  >>
>  >>
>  >>
>  >>> Many thanks in advance for your advice.
>  >>>
>  >>> -- Jeff
>  >>>
>  >>>
>  >>>
>  >>> Professor J. S. Racine         Phone:  (905) 525 9140 x 23825
>  >>> Department of Economics        FAX:    (905) 521-8232
>  >>> McMaster University            e-mail: racinej at mcmaster.ca
>  >>> 1280 Main St. W.,Hamilton,     URL: 
>  >>> Ontario, Canada. L8S 4M4
>  >>>
>  >>> `The generation of random numbers is too important to be left to 
> chance'
>  >>>
>  >>> ______________________________________________
>  >>> R-help at r-project.org mailing list
>  >>> 
>  >>> PLEASE do read the posting guide 
>  >>> and provide commented, minimal, self-contained, reproducible code.
>  >
>  > Professor J. S. Racine         Phone:  (905) 525 9140 x 23825
>  > Department of Economics        FAX:    (905) 521-8232
>  > McMaster University            e-mail: racinej at mcmaster.ca
>  > 1280 Main St. W.,Hamilton,     URL: 
>  > Ontario, Canada. L8S 4M4
>  >
>  > `The generation of random numbers is too important to be left to chance'
>  >
>  >
>  >
>  >
>  
>  ______________________________________________
>  R-help at r-project.org mailing list
>  
>  PLEASE do read the posting guide 
>  and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list