Java Mailing List Archive

http://www.r-help.com/

Home » Home (12/2007) » R Help for Statistical Computing »

Re: [R] Bad optimization solution

Ravi Varadhan

2007-05-07

Replies:

Your function, (x1-x2)^2, has zero gradient at all the starting values such
that x1 = x2, which means that the gradient-based search methods will
terminate there because they have found a critical point, i.e. a point at
which the gradient is zero (which can be a maximum or a minimum or a saddle
point).

However, I do not why optim converges to the boundary maximum, when analytic
gradient is supplied (as shown by Sundar).

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@(protected)

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



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


-----Original Message-----
From: r-help-bounces@(protected)
[mailto:r-help-bounces@(protected)
Sent: Monday, May 07, 2007 6:26 PM
To: R-help
Subject: Re: [R] Bad optimization solution

On 5/7/07, Paul Smith <phhs80@(protected):
> > I think the problem is the starting point. I do not remember the
details
> > of the BFGS method, but I am almost sure the (.5, .5) starting point is
> > suspect, since the abs function is not differentiable at 0. If you
perturb
> > the starting point even slightly you will have no problem.
> >
> >         "Paul Smith"
> >         <phhs80@(protected)
> >         >
To
> >         Sent by:            R-help <r-help@(protected)>
> >         r-help-bounces@(protected)
cc
> >         at.math.ethz.ch
> >
Subject
> >                           [R] Bad optimization solution
> >         05/07/2007 04:30
> >         PM
> >
> >
> >
> >
> >
> >
> >
> >
> > Dear All
> >
> > I am trying to perform the below optimization problem, but getting
> > (0.5,0.5) as optimal solution, which is wrong; the correct solution
> > should be (1,0) or (0,1).
> >
> > Am I doing something wrong? I am using R 2.5.0 on Fedora Core 6 (Linux).
> >
> > Thanks in advance,
> >
> > Paul
> >
> > ------------------------------------------------------
> > myfunc <- function(x) {
> >  x1 <- x[1]
> >  x2 <- x[2]
> >  abs(x1-x2)
> > }
> >
> >
optim(c(0.5,0.5),myfunc,lower=c(0,0),upper=c(1,1),method="L-BFGS-B",control=
list(fnscale=-1))
>
> Yes, with (0.2,0.9), a correct solution comes out. However, how can
> one be sure in general that the solution obtained by optim is correct?
> In ?optim says:
>
>    Method '"L-BFGS-B"' is that of Byrd _et. al._ (1995) which allows
>    _box constraints_, that is each variable can be given a lower
>    and/or upper bound. The initial value must satisfy the
>    constraints. This uses a limited-memory modification of the BFGS
>    quasi-Newton method. If non-trivial bounds are supplied, this
>    method will be selected, with a warning.
>
> which only demands that "the initial value must satisfy the constraints".

Furthermore, X^2 is everywhere differentiable and notwithstanding the
reported problem occurs with

myfunc <- function(x) {
x1 <- x[1]
x2 <- x[2]
(x1-x2)^2
}

optim(c(0.2,0.2),myfunc,lower=c(0,0),upper=c(1,1),method="L-BFGS-B",control=
list(fnscale=-1))

Paul

______________________________________________
R-help@(protected)
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@(protected)
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.
©2008 r-help.com - Jax Systems, LLC, U.S.A.