# [R] L-BFGS-B needs finite values of 'fn'

Ravi Varadhan rvaradhan at jhmi.edu
Wed Apr 2 20:03:11 CEST 2008

```Yes, that is very important.  If you look at the ratios x[k]/x[k-1], they
are very close to 0.3 for the first few components, and then they start
slowly diverging (ratio becomes smaller than 0.3) from that.

So, optim is indeed finding a correct solution to the problem that you
"actually" posed.  You could increase your penalty to get a solution that is
closer to the analytical solution you are expecting.

Ravi.

----------------------------------------------------------------------------
-------

Ravi Varadhan, Ph.D.

Assistant Professor, The Center on Aging and Health

Division of Geriatric Medicine and Gerontology

Johns Hopkins University

Ph: (410) 502-2619

Fax: (410) 614-9625

Email: rvaradhan at jhmi.edu

Webpage:  http://www.jhsph.edu/agingandhealth/People/Faculty/Varadhan.html

----------------------------------------------------------------------------
--------

-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On
Behalf Of Paul Smith
Sent: Wednesday, April 02, 2008 1:57 PM
To: R-help
Subject: Re: [R] L-BFGS-B needs finite values of 'fn'

But let me add the following: the part

- 2000000*(sum(x)-k)^2

of my function is a penalty. In truth, I want to maximize

sum((b^(0:(n-1)))*log(x))

s.t.

sum(x) = k.

Paul

On Wed, Apr 2, 2008 at 6:48 PM, Paul Smith <phhs80 at gmail.com> wrote:
> Thanks, Ravi. The analytical solution, (x_1,x_2,...,x_10), should
>  satisfy this equality:
>
>  x_t / x_(t-1) = 0.3.
>
>  Unfortunately, the procedure that you suggest does not lead to a
>  solution that satisfies such an equality.
>
>  Paul
>
>
>
>
>
>  On Wed, Apr 2, 2008 at 5:12 PM, Ravi Varadhan <rvaradhan at jhmi.edu> wrote:
>  > Paul,
>  >
>  >  Have you tried using "BFGS" without bounds?
>  >
>  >  sols <- optim(rep(20,nvar), f, gr, method="BFGS",
control=list(fnscale=-1))
>  >
>  >  This converges to a solution, although I don't know if the converged
>  >  solution is what you want.
>  >
>  >  Ravi.
>  >
>  >
----------------------------------------------------------------------------
>  >  -------
>  >
>  >  Ravi Varadhan, Ph.D.
>  >
>  >  Assistant Professor, The Center on Aging and Health
>  >
>  >  Division of Geriatric Medicine and Gerontology
>  >
>  >  Johns Hopkins University
>  >
>  >  Ph: (410) 502-2619
>  >
>  >  Fax: (410) 614-9625
>  >
>  >  Email: rvaradhan at jhmi.edu
>  >
>  >  Webpage:
http://www.jhsph.edu/agingandhealth/People/Faculty/Varadhan.html
>  >
>  >
>  >
>  >
----------------------------------------------------------------------------
>  >  --------
>  >
>  >
>  >
>  >  -----Original Message-----
>  >  From: r-help-bounces at r-project.org
[mailto:r-help-bounces at r-project.org] On
>  >  Behalf Of Paul Smith
>  >
>  > Sent: Monday, March 31, 2008 2:25 PM
>  >  To: R-help
>  >
>  >
>  > Subject: Re: [R] L-BFGS-B needs finite values of 'fn'
>  >
>  >  On Mon, Mar 31, 2008 at 2:57 PM, Zaihra T <zaihra at uwindsor.ca> wrote:
>  >  > try something like  this before wrapping up your function else i
guess
>  >  u'll
>  >  > have to stick to Prof Brian Ripley  suggestion his suggestions are
usually
>  >  > best bet .
>  >  >
>  >  >  f <- function(x) {
>  >  >
>  >  >  n <- length(x)
>  >  >
>  >  > r <- sum((b^(0:(n-1)))*log(x)) - 2000000*(sum(x)-k)^2
>  >  >  if(!is.finite(r))
>  >  >
>  >  > r<-1e+20 return(r)
>  >  >
>  >  > }
>  >  >
>  >  > have a nice day.
>  >  >
>  >  >
>  >  >
>  >  >
>  >  > On Mon, 31 Mar 2008 12:24:09 +0100 "Paul Smith" wrote:
>  >  > > Dear All,
>  >  > >
>  >  > > I am trying to solve the optimization problem below, but I am
always
>  >  > > getting the following error:
>  >  > >
>  >  > > Error in optim(rep(20, nvar), f, gr, method = "L-BFGS-B", lower =
rep(0,
>  >  :
>  >  > > L-BFGS-B needs finite values of 'fn'
>  >  > >
>  >  > > Any ideas?
>  >  > >
>  >  > > Thanks in advance,
>  >  > >
>  >  > > Paul
>  >  > >
>  >  > > -----------------------------------------! ------
>  >  > >
>  >  > > k <- 10000
>  >  > > b <- 0.3
>  >  > >
>  >  > > f <- function(x) {
>  >  > >
>  >  > > n <- length(x)
>  >  > >
>  >  > > r <- sum((b^(0:(n-1)))*log(x)) - 2000000*(sum(x)-k)^2
>  >  > >
>  >  > > return(r)
>  >  > >
>  >  > > }
>  >  > >
>  >  > > gr <- function(x) {
>  >  > >
>  >  > > n <- length(x)
>  >  > >
>  >  > > r <- (b^(0:(n-1)))*(1/x) - 4000000*(sum(x)-k)
>  >  > >
>  >  > > return(r)
>  >  > >
>  >  > > }
>  >  > >
>  >  > > nvar <- 10
>  >  > > (sols <-
>  >  > >
>  >  >
>  >
optim(rep(20,nvar),f,gr,method="L-BFGS-B",lower=rep(0,nvar),upper=rep(k,nvar
>  >
),control=list(fnscale=-1,parscale=rep(2000,nvar),factr=1e-300,pgtol=1e-300)
>  >  ))
>  >
>  >  Not much progress, Zaihra. Unfortunately! I am wondering whether one
>  >  can transform the original problem into an equivalent one and solvable
>  >  with optim.
>  >
>  >  I know the analytical solution; I am just trying to check how far can
>  >  R go regarding optimization problems.
>  >
>  >  Paul
>  >
>  >  ______________________________________________
>  >
>  > R-help at r-project.org mailing list
>  >  https://stat.ethz.ch/mailman/listinfo/r-help
>  >  PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
>  >
>  >
>  > and provide commented, minimal, self-contained, reproducible code.
>  >
>

______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

```

More information about the R-help mailing list