Subject: Re: [boost] Proposal for a Differential Evolution C++ library
From: Adrian Michel (adrian_at_[hidden])
Date: 2012-01-17 19:56:46
Sorry for the late reply.
On 1/10/2012 11:01 AM, Topher Cooper wrote:
> On 1/10/2012 1:37 AM, Adrian Michel wrote:
>> The way I see it, the only common point between different optimization
>> algorithms (if they are generic enough) is the objective function,
>> which should have a very simple prototype:
>> double f( std::vector< double> );
>> so in theory if different algorithms are implemented to accept the
>> same types (in C++ sense) of objective functions, then you could run
>> them interchangeably between GA, DE etc without any modification to
>> the function or algorithm.
> That ignores multi-objective optimization. In that case the return type
> would be, at a minimum std:vector<double>, and might require information
> on what characteristics are maximized.
The points you raised make sense, but I think they go beyond the
intended scope of this initial release.
Unlike many other boost libraries whose main purpose is to enhance the
language, DE is intended almost exclusively for solving domain specific
problems. Because DE can be applied in many areas, by developers with a
variety of requirements and levels of knowledge, I believe taking an
iterative approach based on users' feedback will increase the chances of
creating a library that's useful in solving real problems.
As I mentioned before, this is an initial implementation. Some of the
features I intend to add in a later release are:
- multi-objective optimization
- constraint functions (as opposed to just plain boundary constraints)
- design centering ("Design centering is a constraint satisfaction
problem whose goal is to find the solution, which, when perturbed,
remains feasible more often than any other solution")
But these features are not trivial, and it would help me to get a sense
of how the library is used before I start working on them.
So far, I have received several good suggestions, I would like to nail
down a list of specific additional requirements that this library needs
to meet before moving on to the next step (and I'm not sure what that
Please let me know how to proceed.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk