<div>Thanks to Jordan, Einstein, Karthik and Zachary,</div>
<div>&nbsp;</div>
<div>For the time being I am trying one plus one evolutionary optimizer and trying to read a bit on it too.</div>
<div>&nbsp;</div>
<div>I really appreciate the help !</div>
<div>with regards,</div>
<div>Ashish.<br><br>&nbsp;</div>
<div><span class="gmail_quote">On 6/22/05, <b class="gmail_sendername">Zachary Pincus</b> &lt;<a href="mailto:zpincus@stanford.edu">zpincus@stanford.edu</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Also, the OnePlusOneEvolutionaryOptimizer (<br><a href="http://itk.org/Insight/Doxygen/html/">http://itk.org/Insight/Doxygen/html/
</a><br>classitk_1_1OnePlusOneEvolutionaryOptimizer.html ) is an optimizer with<br>a simulated annealing flavor. It takes random steps within a certain<br>radius in parameter space, and adjusts that radius (anisotropically) to
<br>selectively favor directions which have produced good results in the<br>past. With each &quot;good&quot; step, the radius grows, and with each &quot;bad&quot; step<br>it shrinks (akin to the &quot;cooling&quot; that you do toward the end of a
<br>simulated annealing run).<br><br>Zach<br><br>On Jun 22, 2005, at 2:08 PM, Karthik Krishnan wrote:<br><br>&gt;<br>&gt;<br>&gt; Einstein, Daniel R wrote:<br>&gt;<br>&gt;&gt; Anish,<br>&gt;&gt;&nbsp;&nbsp;As far as I can tell, all of the optimization algorithms from Netlib
<br>&gt;&gt; are local. Global optimization is considerably harder, and requires<br>&gt;&gt; much more crunching. Examples are simulated annealing, multi-starts,<br>&gt;&gt; i.e. stochastically sampling the solutions space, particle swarm
<br>&gt;&gt; methods, and sequential response surfaces. I am new enough to ITK<br>&gt;&gt; that I cannot say which if any of these might usefully be implemented<br>&gt;&gt; in ITK.<br>&gt;<br>&gt; <a href="http://itk.org/Insight/Doxygen/html/classitk_1_1SPSAOptimizer.html">
http://itk.org/Insight/Doxygen/html/classitk_1_1SPSAOptimizer.html</a> was<br>&gt; recently added<br>&gt;<br>&gt;&gt; Particle swarm methods are an interesting option because they are so<br>&gt;&gt; easy to program. Be advised, however, there are no global methods
<br>&gt;&gt; that guarantee conversion.<br>&gt;&gt;&nbsp;&nbsp;Dan<br>&gt;&gt;<br>&gt;&gt; Daniel R Einstein, PhD<br>&gt;&gt; Biological Monitoring and Modeling<br>&gt;&gt; Pacific Northwest National Laboratory<br>&gt;&gt; P.O. Box 999; MSIN P7-59
<br>&gt;&gt; Richland, WA 99352<br>&gt;&gt; Tel: 509/ 376-2924<br>&gt;&gt; Fax: 509/376-9064<br>&gt;&gt; _daniel.einstein@pnl.gov_ &lt;mailto:<a href="mailto:daniel.einstein@pnl.gov">daniel.einstein@pnl.gov</a>&gt;<br>&gt;&gt;
<br>&gt;&gt;<br>&gt;&gt; ----------------------------------------------------------------------<br>&gt;&gt; --<br>&gt;&gt; *From:* insight-users-bounces+daniel.einstein=<a href="mailto:pnl.gov@itk.org">pnl.gov@itk.org</a>
<br>&gt;&gt; [mailto:<a href="mailto:insight-users-bounces+daniel.einstein=pnl.gov@itk.org">insight-users-bounces+daniel.einstein=pnl.gov@itk.org</a>] *On<br>&gt;&gt; Behalf Of *Ashish Poddar<br>&gt;&gt; *Sent:* Wednesday, June 22, 2005 10:58 AM
<br>&gt;&gt; *To:* Luis Ibanez<br>&gt;&gt; *Cc:* insight-users @ itk. org<br>&gt;&gt; *Subject:* [Insight-users] Re: [Insight-developers] a small bug<br>&gt;&gt; initkConjugateGradientOptimizer<br>&gt;&gt;<br>&gt;&gt; Hi,
<br>&gt;&gt;&nbsp;&nbsp;Most of the optimizers which I have came across help in finding the<br>&gt;&gt; local minima around the given initial approximation. But in that case<br>&gt;&gt; I mostly end up in a wrong place. Is there any algorithm which helps
<br>&gt;&gt; to scan the global space somehow and help in determining the global<br>&gt;&gt; minima.<br>&gt;&gt;&nbsp;&nbsp;Other problem that I am facing with the conjugate gradient method is<br>&gt;&gt; that the scales do not work for conjugate gradient optimizer. The
<br>&gt;&gt; scales are only taken into account in the very first initialization<br>&gt;&gt; step and are never considered again in any of the latter iterations.<br>&gt;&gt; I want to fix some of the parameters by setting the scale to some
<br>&gt;&gt; extreme value (I used to set 100 or something for regular step<br>&gt;&gt; gradient descent optimizer and it used to serve the purpose very<br>&gt;&gt; conveniently).<br>&gt;&gt;&nbsp;&nbsp;any help will be highly appreciated,
<br>&gt;&gt; with regards,<br>&gt;&gt; Ashish.<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;On 5/18/05, *Luis Ibanez* &lt;<a href="mailto:luis.ibanez@kitware.com">luis.ibanez@kitware.com</a><br>&gt;&gt; &lt;mailto:<a href="mailto:luis.ibanez@kitware.com">
luis.ibanez@kitware.com</a>&gt;&gt; wrote:<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; Hi Ashish,<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; The Conjugate Gradient method is only convenient when the cost<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; function has smooth second derivatives.&nbsp;&nbsp;If your cost function
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; is noisy, is is unlikely that this optimizer will behave nicely.<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; Note that is is common to find that Image Metrics are rather<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; noisy functions.<br>&gt;&gt;<br>&gt;&gt;
<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Regards,<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Luis<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; --------------------<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; Ashish Poddar wrote:<br>&gt;&gt;
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Hi,<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; I also am right now struggling with the initialization options<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; for the<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Conjugate Gradient for which I could not find any examples.
<br>&gt;&gt; While<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; searching I came across an example for Levenberg Marquardt<br>&gt;&gt; Optimizer<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; which seems to be having similar interface as that of conjugate<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; gradient optimizer. However the similar initialization did not
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; worked<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; for Conjugate gradient. If someone can point out any reference<br>&gt;&gt; for<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Conjugate Gradient, it would be great.<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Earlier I was using regular step gradient descent optimizer with
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; these<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; parameters:<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Transform - Centered Affine<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Scale for first 9 parameters - 1.0<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Scale for next 6 parameters - 0.0001<br>
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Number of Iterations - 400<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Minimum Step Length - 0.0001<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Maximum Step Length - 0.005<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Any help will be highly appreciated,
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; with regards,<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Ashish.<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; On 5/17/05, Ashish Poddar &lt;<a href="mailto:ahpoddar@gmail.com">ahpoddar@gmail.com
</a><br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mailto:<a href="mailto:ahpoddar@gmail.com">ahpoddar@gmail.com</a>&gt;&gt; wrote:<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;Hi Luis,<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;Thank you for the quick action. probably similar change is
<br>&gt;&gt; required<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;for Levenberg Marquardt Optimizer too.<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;with regards,<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;Ashish.<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;On 5/16/05, Luis Ibanez &lt;
<a href="mailto:luis.ibanez@kitware.com">luis.ibanez@kitware.com</a><br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mailto:<a href="mailto:luis.ibanez@kitware.com">luis.ibanez@kitware.com</a>&gt;&gt; wrote:<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;Hi Ashish,
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;Thanks for pointing this out.<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;You are right, the GetValue() method should be const.<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;A fix has now been committed to the CVS repository.<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;Please let us know if you encounter any other problem.<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;Thanks<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Luis<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;----------------------<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;Ashish Poddar wrote:
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;hi,<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;I am not sure whether it qualifies as a bug or not, but surely<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; affects<br>
&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;the re-usability and pluggability model of ITK Library.<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;the GetValue() function in ConjugateGradientOptimizer class<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; currently is
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;MeasureType GetValue();<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;but in case of RegularStepGradientDescentOptimizer class its<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; defined by macro as
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;MeasureType GetValue() const;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;which is an interface mis-match... This I encountered when i
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; replaced<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;regular step gradient descent optimizer by conjugate gradient<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;optimizer. In the observer I was using a const reference of<br>&gt;&gt; the
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;optimizer and displaying the value (just the example which is<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;available for the same nothing new =D)...<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;with regards,
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;Ashish.<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;--<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;Ashish Poddar<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;Have an acceptable reason for accepting anything.
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;Y:ashish_poddar | <a href="mailto:MSN:ashish_poddar@yahoo.com">MSN:ashish_poddar@yahoo.com</a><br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mailto:<a href="mailto:MSN">MSN</a>:<a href="mailto:ashish_poddar@yahoo.com">ashish_poddar@yahoo.com
</a>&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; --<br>&gt;&gt; Ashish Poddar<br>&gt;&gt; Have an acceptable reason for accepting anything.
<br>&gt;&gt; Y:ashish_poddar | <a href="mailto:MSN:ashish_poddar@yahoo.com">MSN:ashish_poddar@yahoo.com</a><br>&gt;&gt; &lt;mailto:<a href="mailto:MSN">MSN</a>:<a href="mailto:ashish_poddar@yahoo.com">ashish_poddar@yahoo.com
</a>&gt;<br>&gt;&gt;<br>&gt;&gt; ----------------------------------------------------------------------<br>&gt;&gt; --<br>&gt;&gt;<br>&gt;&gt; _______________________________________________<br>&gt;&gt; Insight-users mailing list
<br>&gt;&gt; <a href="mailto:Insight-users@itk.org">Insight-users@itk.org</a><br>&gt;&gt; <a href="http://www.itk.org/mailman/listinfo/insight-users">http://www.itk.org/mailman/listinfo/insight-users</a><br>&gt;&gt;<br>&gt; _______________________________________________
<br>&gt; Insight-users mailing list<br>&gt; <a href="mailto:Insight-users@itk.org">Insight-users@itk.org</a><br>&gt; <a href="http://www.itk.org/mailman/listinfo/insight-users">http://www.itk.org/mailman/listinfo/insight-users
</a><br>&gt;<br><br>_______________________________________________<br>Insight-users mailing list<br><a href="mailto:Insight-users@itk.org">Insight-users@itk.org</a><br><a href="http://www.itk.org/mailman/listinfo/insight-users">
http://www.itk.org/mailman/listinfo/insight-users</a><br></blockquote></div><br><br><br>-- <br>Ashish Poddar<br>Have an acceptable reason for accepting anything.<br>Y:ashish_poddar | <a href="mailto:MSN:ashish_poddar@yahoo.com">
MSN:ashish_poddar@yahoo.com</a>