[R] Help with constrained optimization
spencer.graves at pdf.com
Sun Feb 27 18:58:30 CET 2005
1. I have not used nlm, but I would think for many problems, it
would be roughly equivalent to optim.
2. The parameter "a" in the objective function I wrote was the
relative weight between optimization of f1 and f2. I would expect to
get different answer with a = 0.5, 1, 2, though I could be mistaken.
This simplest way is to fix "a" in your objective function, though you
could also have it as an additional argument and pass it as part of the
"..." argument in optim. Venables and Ripley (2002) Modern Applied
Statistics with S, 4th ed. (Springer) discuss optim further, and "..."
is discussed in both Venables and Ripley (2002) and V&R (2000) S
Programming (Springer). Nonlinear optimization is discussed in many
places. The book I know the best on this is Bates and Watts (1988)
Nonlinear Regression Analysis & Its Applications (Wiley). This book
includes an important discussion of intrinsic vs. parameter effects
curvature, noting parameter effects are much bigger in virtually all the
examples they examined. That's good news, because it opens the
possibilities for getting better convergence and better asymptotically
normal approximations by changing transformations -- or by using
asymptotic chi-square instead of asymptotic normality to determine
confidence intervals. This latter discussion may not apply to your
immediate problem but is useful in many applications.
3. If you continue to have problems eith nlm, I suggest you give
optim another try, working through the examples in the help file until
you think you understand how it works.
hope this helps.
Dear Spencer Graves,
Thank you very much for your prompt reply. I read your comment from
November and tried it but smth goes bad in my programs. I thought that I
did not understand correct your idea.
I am using nlm not optim, and usually I am satisfied with it.
Just, one question re your comment: what is "a" in the objective
function you have written below?
Thanks again, Vicky.
PS: I have some problems with R-2.0.1 (under XP) - it crashes after I am
trying to open a source file. I remember that there was a discussion on
this problem in the list but I did not find time to solve this. Then, I
have re-installed R-1.9.1 back.
You say that the total number of parameters is approximately 30,
but you identify only 4, alpha1, alpha2, beta1 and beta2. I gather
these are vectors and g is a scalar?
Have you considered making the constraint part of the objective
function, so you minimize lambda*(g(alpha1)-g(alpha2))^2-f1-a*f2. I'd
then start with the values for alpha1, alpha2, beta1 and beta2 you got
from the individual optimizations and with a small or modest value of
the "pseudo-Lagrange multiplier", lambda. After you find a solution,
increase lambda until the constraint is sufficiently well satisfied.
You are using "optim"? If I ran into trouble with this, I'd
upgrade to R 2.0.1 and try again. I don't know if "optim" has changed
since R 1.9.1, but it's worth upgrading anyway. Also, "optim" has 4
unconstrained methods, and I've had good luck rotating between the 4
methods, using the answer from one as starting values for the other.
I've had the worse results with SANN, simulated annealing, I think
because my problems were sufficiently well behaved that the other three
methods tended to give reasonable results and because SANN spent lots of
time hopping all over the place without finding a better local minimum.
Also, have you tried "www.r-project.org" -> Search -> "R site
search" for "constrained optimization". When I did this just now, I got
87 hits, the third of which was me giving essentially this same comment
hope this helps.
p.s. You might also find useful the posting guide!
"http://www.R-project.org/posting-guide.html", in case you haven't
Vicky Landsman wrote:
>I need an advice in the following problem.
>I have to maximize two functions of the form f1(x)=f(y1,x,alpha1,beta1) and f2(x)=(y2,x,alpha2,beta2), the maximization is with respect to alpha1, alpha2, beta1, beta2. I can maximize each function separately using nlm.
>The problem is that I have to add the constraint of the form g(alpha1)=g(alpha2).
>The total number of parameters is approximately 30.
>What is the best way to do it?
>I am using R-1.9.1 on Windows XP.
>Much thanks in advance for any suggestions,
> [[alternative HTML version deleted]]
>R-help at stat.math.ethz.ch mailing list
>PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
More information about the R-help