Christophe Pouzat
2007-Aug-07 09:54 UTC
[Rd] Automatic implementation of "trivial" constraints in optimization
Hi all, I am wondering if anyone has implemented (or at least tried to) an automatic reparametrization in order to satisfy "trivial" constraints (in the sense of Dennis & Schnabel, 1983) in optimization problems. To be perhaps clearer let us consider a simple bi-exponential model for some recorded signal (sorry for the LaTex notations I hope they aren't too confusing): $s(t) = A (p_{fast} \exp(-\frac{t}{t_{fast}}) + p_{slow} \exp(-\frac{t}{t_{slow}}) $ where we would have: $t_{fast} > 0$ and $t_{slow} > 0$ , $0 < p_{fast}, p_{slow} < 1$ and $p_{fast}+p_{slow}=1$. In addition we could want to enforce $A>0$, say, because our signal corresponds physically to a concentration and for ease of interpretation having $t_{fast} < t_{slow}$ would not hurt. We could then reparametrize our problem with: $A = \exp (\alpha)$ $t_{fast} = \exp (\tau_{fast})$ $t_{slow} = t_{fast} + \exp (\tau_{slow})$ $p_{fast} = 0.5 + 0.5 \frac{\pi_{fast}}{\sqrt{1+\pi_{fast}^2}}$ $p_{slow} = 1 - p_{fast}$ and the four parameters: $\alpha, \tau_{fast}, \tau_{slow}, \pi_{fast}$ would be unconstrained. One could then think of allowing "optim" users to specify more general boundaries ("lower", "upper") which would be used to generate a parameter transformation function. This function, say u2c (for "unconstrained to constrained"), would take a vector of parameters as one of its arguments and would return another vector (perhaps of a longer length). Then optim would internaly optimize f(u2c(p)) instead of f. Clearly more sophisticated constraint specifications (than "lower" and "upper") would be required, like a way to declare that some parameters form a simplex or that others are encoding a variance-covariance matrix (in the latter case the pdLogChol function of nlme already provides the reparametrization if I'm not wrong). Assuming that such a functionality does not exist yet in R (if it does, sorry to have missed it) do you guys think that: 1) it's not necessary because users can take care of it for themselves 2) it would be complicated and not general enough 3) it would be worth trying Thanks for your opinions, Christophe -- A Master Carpenter has many tools and is expert with most of them. If you only know how to use a hammer, every problem starts to look like a nail. Stay away from that trap. Richard B Johnson. -- Christophe Pouzat Laboratoire de Physiologie Cerebrale CNRS UMR 8118 UFR biomedicale de l'Universite Paris V 45, rue des Saints Peres 75006 PARIS France tel: +33 (0)1 42 86 38 28 fax: +33 (0)1 42 86 38 30 [[alternative HTML version deleted]]