Subject: Re: [boost] FW: Proposal for a Differential Evolution C++ library
From: Adrian Michel (adrian_at_[hidden])
Date: 2011-12-12 01:02:47
On 12/11/2011 6:31 PM, Beman Dawes wrote:
>> Would there be interest in a C++ Differential Evolution optimization (DE)
>> library as part of boost?
> Seems interesting, and you've clearly put in a lot of work, and the
> documentation makes a good initial impressions. But see below...
>> The full documentation is at http://www.amichel.com/de/doc/html but I'd
>> suggest these pages for a first read
>> http://www.amichel.com/de/doc/html/dd/d53/overview.html and
>> http://www.amichel.com/de/doc/html/db/d4e/tutorial.html .
> After skim reading the overview and the beginning of the tutorial, I
> was left with several unanswered questions:
> * What are some practical scientific or engineering problems that DE
> is good for?
I personally got interested in DE while doing some research in the area
of algorithmic trading system optimization. But DE is generic - it can
be used to optimize any function that would otherwise be very hard or
impossible to optimize using more traditional methods.
DE is used in many areas, some of which are listed here:
http://www.icsi.berkeley.edu/~storn/code.html#appl and here:
http://www.icsi.berkeley.edu/~storn/code.html#comm or to summarize:
chemistry, electronics, physics, agriculture, telecommunications etc.
> I'm having trouble calibrating - is your library
> primarily aimed at research and academic problems or is it an everyday
> tool for use in a broad spectrum of organizations?
I believe the answer is "both".
> * Who is the library aimed at? Is the library most likely to be used
> by optimization specialists who already know about DE or is it
> something that can be used by a wide range of programmers?
I tried to design the library so that it can be easily used "out of the
box" by all programmers, who can choose any of the predefined policy
classes for default behavior. The de_test application illustrates this
usage mode: the user can implement a de::objective_function derived
class with their own function to optimize, and then build and run the
application to get the best output.
However, those interested in tweaking its behavior, can create their own
policy classes and override the defaults. One of the obvious advantage
of a standardized DE library is that these customized components could
then be shared with the community at large. BTW, DE has the added
benefit of not having been patented by its authors, for the very purpose
of making it widely available.