[SciPy-Dev] Consideration of differential evolution minimizer being added to scipy.optimize.

Andrea Gavana andrea.gavana at gmail.com
Sun Mar 9 08:08:51 EDT 2014


Hi,


On 5 March 2014 07:46, Geoff Oxberry wrote:

>
>
>
> On Tue, Mar 4, 2014 at 2:01 PM, Andrea Gavana <andrea.gavana at gmail.com>wrote:
>
>> Hi Ralf & All,
>>
>>
>> On Tuesday, March 4, 2014, Ralf Gommers wrote:
>>
>>>
>>>
>>>
>>> On Tue, Mar 4, 2014 at 3:21 AM, Andrew Nelson <andyfaff at gmail.com>wrote:
>>>
>>>> I have written some code implementing the differential evolution
>>>> minimization algorithm, as invented by Storn and Price.  It's a
>>>> stochastic technique, not gradient based, but it's quite good at
>>>> finding global minima of functions.
>>>>
>>>> (see http://www1.icsi.berkeley.edu/~storn/code.html,
>>>> http://en.wikipedia.org/wiki/Differential_evolution)
>>>>
>>>> I'd like it to be considered for inclusion in scipy.optimize, and have
>>>> tried to write it as such. Can anyone give advice of how to go about
>>>> polishing the code, such that it's suitable for inclusion in
>>>> scipy.optimize?
>>>>
>>>
>>> Hi Andrew. What I'd like to see is some benchmarking to show that your
>>> algorithm has at least comparable performance to optimize.basinhopping. DE
>>> uses similar principles as simulated annealing (if with better performance
>>> from what I can tell from a quick literature search), and we just
>>> deprecated optimize.anneal because of its hopelessly poor performance. In
>>> light in that experience I think that for any new optimization algorithm we
>>> add we should first benchmark it.
>>>
>>> Andrea Gavana has posted a nice set of benchmarks before:
>>> http://article.gmane.org/gmane.comp.python.scientific.devel/18383, you
>>> could contact him to add your algorithm (or do a similar comparison
>>> yourself). Seeing your code in a comparison like
>>> http://infinity77.net/global_optimization/multidimensional.html would
>>> be useful.
>>>
>>
>>
> One of the typical plots used to assess performance is a "performance
> profile", which was defined in "Benchmarking Optimization Software with
> Performance Profiles" by Dolan and Moré (
> http://arxiv.org/pdf/cs/0102001.pdf). I didn't see any plots in this
> format. Do you plan on presenting performance data in this manner? The
> solved problems versus function evaluations looks pretty close to this sort
> of presentation. This sort of format also avoids some of the pitfalls
> mentioned on your site re: performance comparisons.
>
> A couple publications have done benchmarking on these sorts of algorithms:
> "Benchmarking Derivative-Free Optimization Methods" by Moré and Wild (
> http://www.optimization-online.org/DB_FILE/2008/01/1883.pdf, relevant
> code is at www.mcs.anl.gov/~more/dfo), and "Derivative-Free optimization:
> a review of algorithms and comparison of software implementation" by
> Sahinidis and Rios (
> http://www2.peq.coppe.ufrj.br/Pessoal/Professores/Arge/COQ897/dfo-Sahinidis.pdf,
> relevant code is at http://archimedes.cheme.cmu.edu/?q=dfocomp) How does
> your benchmark compare to the benchmarks in these references?
>
>

Thank you for the suggestions, I have now update the page:

http://infinity77.net/global_optimization/multidimensional.html

To reflect this performance profiles approach. I simply converted the
Matlab code from Dolan and More to Python and generated the performance
profiles graphs. Looks nice, but to me it seems to reproduce the picture
labelled as "Percentage of problems solved given a fixed number of function
evaluations".



> Are there references in your benchmark suite? I was curious as to the
> source of some of the functions, but couldn't find any references in a
> quick perusal of your benchmark site.
>


I've added them in, see here at the top of the page (first section):

http://infinity77.net/global_optimization/test_functions.html





-- 
Andrea.

"Imagination Is The Only Weapon In The War Against Reality."
http://www.infinity77.net

# ------------------------------------------------------------- #
def ask_mailing_list_support(email):

    if mention_platform_and_version() and include_sample_app():
        send_message(email)
    else:
        install_malware()
        erase_hard_drives()
# ------------------------------------------------------------- #
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scipy-dev/attachments/20140309/8497ab75/attachment.html>


More information about the SciPy-Dev mailing list