[Haskell-cafe] ANNOUNCE: cmaes, a generic optimizer
Takayuki Muranushi
muranushi at gmail.com
Tue Oct 2 18:25:52 CEST 2012
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
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!
Thanks,
--
Takayuki MURANUSHI
The Hakubi Center for Advanced Research, Kyoto University
http://www.hakubi.kyoto-u.ac.jp/02_mem/h22/muranushi.html
More information about the Haskell-Cafe
mailing list