Takayuki Muranushi | 2 Oct 18:25 2012
Picon

ANNOUNCE: cmaes, a generic optimizer

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


Gmane