Takayuki Muranushi | 2 Oct 18:25 2012

ANNOUNCE: cmaes, a generic optimizer


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
(Continue reading)