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-Opt... . 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
participants (1)
-
Takayuki Muranushi