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

Paul Smith phhs80 at gmail.com
Wed Apr 2 19:48:47 CEST 2008

```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.
>
>  ----------------------------------------------------------------------------
>  -------
>
>
>  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
>
>
>
>
>
>  ----------------------------------------------------------------------------
>  --------
>
>
>
>  -----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
>
>
> and provide commented, minimal, self-contained, reproducible code.
>

```