ANNOUNCE: cmaes, a generic optimizer

Takayuki Muranushi <muranushi <at> gmail.com>
2012-10-02 16:25:52 GMT

Hello,
I'm pleased to announce "cmaes"
http://hackage.haskell.org/package/cmaes , a library for optimization
(in mathematical sense). That is, given a function f :: a->Double, to
find x of type a so that (f x) is as small as possible.
CMA-ES is an optimization algorithm developed by Nikolaus Hansen and
his folks http://www.lri.fr/~hansen/cmaesintro.html . It is a
stochastic approach, it does not require gradient information. These
properties makes it robust against noise and makes it widely
applicable.
The cmaes packages is a Haskell wrapper to their elaborate Python
code. The robustness of CMA-ES and generic programming put together,
you can now describe optimization problems for various types of
functions just in one line. CMA-ES is not a silver bullet, of course,
but it's been working fine for many application including mine, and I
hope this library will drastically reduce the initial cost of trying
one for you.
Type will tell what cmaes can do. Please refer to the running document
http://hackage.haskell.org/packages/archive/cmaes/0.2.1/doc/html/Numeric-Optimization-Algorithms-CMAES.html
.
You can optimize functions of type ([Double]-> Double) and ([Double]->
IO Double) , that's usual. Next up, you can optimize (Traversable t =>
t Double-> Double) and (Traversable t => t Double-> IO Double) where
you are pretty sure about which parameter you're tuning. Finally, you
can do (Data a => a -> Double) and (Data a => a -> IO Double) , where