optim with gradient
On Wed, 20 Mar 2002, [iso-8859-1] Göran Broström wrote:
I want to maximise a function using 'optim' with a method that requires the gradient, so I supply two functions, 'fun' for the function value and 'd.fun' for its gradient. My question is: Since some calculations are common to the two functions, is it possible to save time by feeding 'd.fun' with some of the calculations made in 'fun'? That would require (at least) that it is guaranteed that each time 'd.fun' is evaluated, it is done immediately after a call to 'fun' at the same parameter value. The help page says: "It is guaranteed that `gr' will be called immediately after a call to `fn' at the same parameter values."
Only if hessian=FALSE, and that phrase is now removed.
which is not exactly the same. However, look at this trivial example:
prov <- function(x.start = 0){
fun <- function(x) {
e.x <- exp(-x)
x * e.x
}
d.fun <- function(x) {
e.x <- exp(-x)
e.x * (1 - x)
}
optim(x.start, fun, d.fun, method = "BFGS",
control = list(fnscale = -1))
}
prov(2)$counts
function gradient
19 9
This contradicts the help page info, since that implies that the gradient
is called at least as many times as the function.
No, the other way around. It meant `if gr is called, it will be called ...'
Q1: What is the correct guarantee? Is it what I need?
Q2: If so, How do I share calculations between the two functions? In my
trivial example, exp(-x) is calculated in both.
You need to cache the par values and the results you need, and test both. It is unlikely to be worth it.
Thanks for any enlightenment! (Brian?) Göran -- Göran Broström tel: +46 90 786 5223 professor fax: +46 90 786 6614 Department of Statistics http://www.stat.umu.se/egna/gb/ Umeå University SE-90187 Umeå, Sweden e-mail: gb at stat.umu.se -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272860 (secr) Oxford OX1 3TG, UK Fax: +44 1865 272595 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._