2 Oct 18:25 2012

## ANNOUNCE: cmaes, a generic optimizer

Takayuki Muranushi <muranushi <at> gmail.com>

2012-10-02 16:25:52 GMT

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