I am working on a package named gloptim for global optimization problems.
See below an example of applying a "simple evolutionary algorithm" to a well-know test function with thousands of local minima.
I plan to include a version of "differential evolution" and one of the pure CMAES approach.
Hope to have a package on github within a few days.
I certainly would like to work together with others on such a global optimization problem,
especially as I am a total newcomer to the Julia programming language.
Please let me know when someone is interested in global optimization or is working on similar solvers.
Also, I have a whole bunch of more or less 'official' test problems.
Hans Werner
PS:
The following is a well-known test function from the SIAM 100-Digits Challenge with thousands of local minima:
# Trefethen's test function
julia> function ftrefethen(p)
x = p[1]; y = p[2]
return exp(sin(50 * x)) + sin(60 * exp(y)) + sin(70 * sin(x)) +
sin(sin(80 * y)) - sin(10 * (x + y)) + (x^2 + y^2)/4
end
Here is an implementation of the simple evolutionary algorithm applied to this function:
julia> @time pmin, fmin, hmin = simple_ea(ftrefethen, [-1, -1], [1, 1]);
elapsed time: 0.053213764 seconds (8640504 bytes allocated)
# Display minimum point and value
julia> println(pmin); println(fmin)
-.024403079696579247
.2106124267973353
-3.3068686474752407
This is exactly the global minimum of Trefethen's test function, found in about 0.05 sec.
It is 10 times faster than my implementation in another interpretative language.
But I assume the allocation of space can still be greatly improved.