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

Ravi Varadhan rvaradhan at jhmi.edu
Wed Apr 2 18:12:56 CEST 2008


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.



More information about the R-help mailing list