<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/166233</link>
    <title>MATLAB Central Newsreader - function with multiple local minima?</title>
    <description>Feed for thread: function with multiple local minima?</description>
    <language>en-us</language>
    <copyright>&amp;copy;1994-2012 by MathWorks, Inc.</copyright>
    <webmaster>webmaster@mathworks.com</webmaster>
    <generator>MATLAB Central Newsreader</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <ttl>60</ttl>
    <image>
      <title>MathWorks</title>
      <url>http://www.mathworks.com/images/membrane_icon.gif</url>
    </image>
    <item>
      <pubDate>Mon, 24 Mar 2008 00:52:01 -0400</pubDate>
      <title>function with multiple local minima?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/166233#422437</link>
      <author>David Doria</author>
      <description>I have a function that looks like this:&lt;br&gt;
&lt;a href=&quot;http://rpi.edu/~doriad/view1.jpg&quot;&gt;http://rpi.edu/~doriad/view1.jpg&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
The function is non analytic, so I have to use something&lt;br&gt;
like the steepest descent method with numerical gradients to&lt;br&gt;
find the minimum. However, if my starting point is on the&lt;br&gt;
left of the tall peak, the min I find is on the left side&lt;br&gt;
(clearly) and if I choose the starting point to be on the&lt;br&gt;
right side I find the low point on the right. Clearly in&lt;br&gt;
this case I could just do both and take the smaller one, but&lt;br&gt;
if I'm not sure about the location of the tall peak to start&lt;br&gt;
with, I can't simply choose a starting point on either side.&lt;br&gt;
Is there a way to find the actual lowest point consistently?&lt;br&gt;
&lt;br&gt;
Thanks,&lt;br&gt;
&lt;br&gt;
David</description>
    </item>
    <item>
      <pubDate>Mon, 24 Mar 2008 03:17:02 -0400</pubDate>
      <title>Re: function with multiple local minima?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/166233#422446</link>
      <author>John D'Errico</author>
      <description>&quot;David Doria&quot; &amp;lt;daviddoria@gmail.com&amp;gt; wrote in message &lt;br&gt;
&amp;lt;fs6tvh$4bq$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; I have a function that looks like this:&lt;br&gt;
&amp;gt; &lt;a href=&quot;http://rpi.edu/~doriad/view1.jpg&quot;&gt;http://rpi.edu/~doriad/view1.jpg&lt;/a&gt;&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; The function is non analytic, so I have to use something&lt;br&gt;
&amp;gt; like the steepest descent method with numerical gradients to&lt;br&gt;
&lt;br&gt;
Well, you don't HAVE to use steepest descent,&lt;br&gt;
a provably poor method of optimization in&lt;br&gt;
general.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&amp;gt; find the minimum. However, if my starting point is on the&lt;br&gt;
&amp;gt; left of the tall peak, the min I find is on the left side&lt;br&gt;
&amp;gt; (clearly) and if I choose the starting point to be on the&lt;br&gt;
&amp;gt; right side I find the low point on the right. Clearly in&lt;br&gt;
&amp;gt; this case I could just do both and take the smaller one, but&lt;br&gt;
&amp;gt; if I'm not sure about the location of the tall peak to start&lt;br&gt;
&amp;gt; with, I can't simply choose a starting point on either side.&lt;br&gt;
&amp;gt; Is there a way to find the actual lowest point consistently?&lt;br&gt;
&lt;br&gt;
No, this is not an easy thing to assure. Global&lt;br&gt;
optimizers exist, but it is a nasty problem.&lt;br&gt;
&lt;br&gt;
I talk about the concept of domains of attraction&lt;br&gt;
in my optimization tips and tricks document. Each&lt;br&gt;
local minimizer has a locus of points which are&lt;br&gt;
attracted to a given solution. The locus for any&lt;br&gt;
given attractor may not be a very nice set in&lt;br&gt;
general.&lt;br&gt;
&lt;br&gt;
One thing that you can do is to use a multi-start&lt;br&gt;
approach. Generate multiple starting points, then&lt;br&gt;
start the optimizer from each location. Take the&lt;br&gt;
best solution overall. This is the approach that I&lt;br&gt;
employ in my rmsearch utility, if you want&lt;br&gt;
something that is already set up to do this.&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?&quot;&gt;http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?&lt;/a&gt;&lt;br&gt;
objectId=13733&amp;objectType=FILE&lt;br&gt;
&lt;br&gt;
HTH,&lt;br&gt;
John</description>
    </item>
    <item>
      <pubDate>Mon, 24 Mar 2008 11:19:02 -0400</pubDate>
      <title>Re: function with multiple local minima?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/166233#422477</link>
      <author>David Doria</author>
      <description>Thanks John -&lt;br&gt;
&lt;br&gt;
I've heard of a method called &quot;simulated annealing&quot;.  Would&lt;br&gt;
this help in this case? or would it just get out of the&lt;br&gt;
small local mins once I am on the correct side - but not&lt;br&gt;
help get over the &quot;big bump&quot; in the middle?&lt;br&gt;
&lt;br&gt;
Any other thoughts?&lt;br&gt;
&lt;br&gt;
David</description>
    </item>
    <item>
      <pubDate>Mon, 24 Mar 2008 11:43:01 -0400</pubDate>
      <title>Re: function with multiple local minima?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/166233#422479</link>
      <author>John D'Errico</author>
      <description>&quot;David Doria&quot; &amp;lt;daviddoria@gmail.com&amp;gt; wrote in message &lt;br&gt;
&amp;lt;fs82n6$44f$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; Thanks John -&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; I've heard of a method called &quot;simulated annealing&quot;.  Would&lt;br&gt;
&amp;gt; this help in this case? or would it just get out of the&lt;br&gt;
&amp;gt; small local mins once I am on the correct side - but not&lt;br&gt;
&amp;gt; help get over the &quot;big bump&quot; in the middle?&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Any other thoughts?&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; David&lt;br&gt;
&lt;br&gt;
There are several tools in the vein of stochastic&lt;br&gt;
optimization - simulated annealing, genetic&lt;br&gt;
algorithms, particle swarm optimizers, and&lt;br&gt;
randomly multiply started optimizers form&lt;br&gt;
the most popular variations.&lt;br&gt;
&lt;br&gt;
The idea is to get over the humps using a&lt;br&gt;
probabilistic methodology of some sort. There&lt;br&gt;
is no assurance that you will converge to the&lt;br&gt;
global optimum. No stochastic optimizer can&lt;br&gt;
assure you of this. They can only increase the&lt;br&gt;
probability that you do succeed. &lt;br&gt;
&lt;br&gt;
In the case of stochastic optimizers, think of&lt;br&gt;
them in terms of their physical metaphors.&lt;br&gt;
A genetic algorithm with a larger gene pool&lt;br&gt;
and a long time to converge will be more likely&lt;br&gt;
to give you a good result than the alternative.&lt;br&gt;
Likewise, if you wish to increase the odds of&lt;br&gt;
convergence, a simulated annealing tool with&lt;br&gt;
a slow, long annealing schedule is better than&lt;br&gt;
short and fast. You might even find that a&lt;br&gt;
schedule with &quot;temperature&quot; oscillations, on&lt;br&gt;
a downward trend are useful in the annealing&lt;br&gt;
context. A large particle swarm, covering more&lt;br&gt;
ground, will be more likely to fall into the&lt;br&gt;
basin for the global minimizer than will a&lt;br&gt;
small swarm. And finally, more random starts&lt;br&gt;
will increase the odds of success in a random&lt;br&gt;
multi-start method.&lt;br&gt;
&lt;br&gt;
There are also &quot;global&quot; tools out there, though&lt;br&gt;
not in the optimization toolbox. I'd suggest&lt;br&gt;
that they too have their own issues to deal&lt;br&gt;
with.&lt;br&gt;
&lt;br&gt;
John</description>
    </item>
  </channel>
</rss>

