Path: news.mathworks.com!not-for-mail
From: "John D'Errico" <woodchips@rochester.rr.com>
Newsgroups: comp.soft-sys.matlab
Subject: Re: function with multiple local minima?
Date: Mon, 24 Mar 2008 03:17:02 +0000 (UTC)
Organization: John D'Errico (1-3LEW5R)
Lines: 45
Message-ID: <fs76fe$67n$1@fred.mathworks.com>
References: <fs6tvh$4bq$1@fred.mathworks.com>
Reply-To: "John D'Errico" <woodchips@rochester.rr.com>
NNTP-Posting-Host: webapp-02-blr.mathworks.com
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Trace: fred.mathworks.com 1206328622 6391 172.30.248.37 (24 Mar 2008 03:17:02 GMT)
X-Complaints-To: news@mathworks.com
NNTP-Posting-Date: Mon, 24 Mar 2008 03:17:02 +0000 (UTC)
X-Newsreader: MATLAB Central Newsreader 869215
Xref: news.mathworks.com comp.soft-sys.matlab:458785



"David Doria" <daviddoria@gmail.com> wrote in message 
<fs6tvh$4bq$1@fred.mathworks.com>...
> I have a function that looks like this:
> http://rpi.edu/~doriad/view1.jpg
> 
> 
> The function is non analytic, so I have to use something
> like the steepest descent method with numerical gradients to

Well, you don't HAVE to use steepest descent,
a provably poor method of optimization in
general.


> find the minimum. However, if my starting point is on the
> left of the tall peak, the min I find is on the left side
> (clearly) and if I choose the starting point to be on the
> right side I find the low point on the right. Clearly in
> this case I could just do both and take the smaller one, but
> if I'm not sure about the location of the tall peak to start
> with, I can't simply choose a starting point on either side.
> Is there a way to find the actual lowest point consistently?

No, this is not an easy thing to assure. Global
optimizers exist, but it is a nasty problem.

I talk about the concept of domains of attraction
in my optimization tips and tricks document. Each
local minimizer has a locus of points which are
attracted to a given solution. The locus for any
given attractor may not be a very nice set in
general.

One thing that you can do is to use a multi-start
approach. Generate multiple starting points, then
start the optimizer from each location. Take the
best solution overall. This is the approach that I
employ in my rmsearch utility, if you want
something that is already set up to do this.

http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?
objectId=13733&objectType=FILE

HTH,
John