[Haskell-cafe] ANNOUNCE: cmaes, a generic optimizer
muranushi at gmail.com
Tue Oct 2 18:25:52 CEST 2012
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
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
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
SYB will find the hidden Doubles to be optimized over for you. It was
my joy to see optimization of function of type such as (Triangle ->
Double) works out of the box.
Any comments, suggestions, bug reports are welcome!
The Hakubi Center for Advanced Research, Kyoto University
More information about the Haskell-Cafe