Boost logo

Boost :

Subject: Re: [boost] Proposal for a Differential Evolution C++ library
From: Adrian Michel (adrian_at_[hidden])
Date: 2012-01-10 16:33:51

On 1/9/2012 12:09 PM, Simonson, Lucanus J wrote:
> I think that numerical optimization is more general than its application to
> machine learning. While you argue that you'd like to see the library go
> deep in machine learning I don't see anything wrong with a general purpose
> numerical optimization library. However, DE is more general than numerical
> optimization, while the library seems to be an application of DE to
> numerical optimization. I'm not sure that DE is even one of the best ways
> to do numerical optimization (I'm pretty sure genetic algorithm is a bad
> way, so I'm skeptical), and I know I'd like a more general interface to a DE
> engine than one designed for numerical optimization problems. I'd like to
> see the library go wide for max applicability rather than deep. Hopefully
> that will keep it out of all the different cans of worms that could be
> opened in each application domain. Put numerical optimization and machine
> learning applications in the example code of the library and submit just the
> core engine as the library itself. Narrowing the scope of a library submission
> is usually the path to success.

I forwarded Ken Price (one of the DE co-authors) some of the comments I
received for his view on things and here's his reply, which hopefully
should clarify some of the issues that have been raised:

"The skeptic is right in believing that GAs have traditionally done
poorly at numerical optimization, primarily because they rely on general
data manipulation operations (bit flips, exchanges, rotations,
insertions, replacements...) that are not appropriate for
real-parameter optimization. DE, however, was specifically designed for
numerical optimization (although it has since been applied with limited
success to combinatorial problems). Instead of relying on general data
manipulation operations, DE's unique differential mutation operation is
a real-valued vector operation that is appropriate for the numerical
optimization problem domain. More than just appropriate, the
differential mutation operation at the core of DE is effective because
it exploits the tendency of a population to distribute itself around
function contours. Randomly sampling the difference in the location of
population members when they are distributed along a function's level
surfaces turns out to be a very effective way to deal with some of the
most challenging aspects of numerical optimization, e.g. multiple
optima, parameter-dependence, slow-down at high resolution and disparate
parameter sensitivities.

As evidence of DE's utility as a numerical optimizer, I would offer that
it has been part of Mathematica's numerical optimization toolbox for
over a decade. It helped the Mathematica team win the SIAM 100-digit
challenge (ten problems to ten-digit accuracy) by solving what the
contest participants agreed was the contest's most difficult (numerical
optimization) problem. (DE also solved one of the other problems in the
contest). In the many other contests that have been held to compare
numerical optimizers, DE has consistently placed at or near the top.

DE is also part of the OPTIMUS package, which is highly respected and in
wide use by several automobile manufactures. Alternatively, skeptics can
do an Internet search and discover for themselves the enormous range of
engineering problems the DE has successfully solved, nearly all of which
are numerical optimization problems, often with multiple, non-linear
constraints. DE has also proven effective in the domain of
multi-objective numerical optimization.

Finally, I would suggest that since DE is so simple and easy to
implement, skeptics ought to just try it. Most people are surprised by
how effective something as simple as DE can be."

Boost list run by bdawes at, gregod at, cpdaniel at, john at