Some weeks ago, the first release of the optimization scikit was done. I’d like to expose here the internal structure and the way the implementation was thought.
It’s funny I’ve started reading this book shortly before Google announced it withdraws from China because of a cyber attack. Well, this book is about this new theater of operations and explains what everyone should be ready for.
In a previous post, I’ve tried to use Qt for the editor window of a VST plugin. The thing is, I want to do more than just play with a GUI, I also want to see what is done to an audio stream by a plugin.
To do so, I’ve decided to expose the VST interface to Python. There are some implementation I’ve heard of, but they are based on Cython or other wrapping tools. Ctypes has the advantage of not needing a compilation step. There are also every functionality needed, as callback creation (plugins use a callback to ask the host some stuffs), and Python provides the additional mathematical tools to display what the plugin does. It may not be perfect, but it will be enough for a starter.
I’m pleased to announce the first release of one of my projects. This scikits is based on a generic framework that can support unconstrained cost function minimization. It is based on a separation principle and is also completely object oriented.
Several optimizers are available:
- Nelder-Mead or simplex minimization
- Unconstrained gradient-based minimization
The usual criterias can be used:
- Iteration limit
- Parameter change (relative and absolute)
- Cost function changer (relative and absolute)
- Composite criterion generation (AND/OR)
Different direction searches are available:
- Several conjugate-gradient (Fletcher-Reeves, …)
- Decorators for selecting part of the gradient
- Marquardt step
Finally several line searches (1D minimization) were coded:
- Fibonacci and gold number methods (exact line searches)
- Wolfe-Powell soft and strong rules
- Goldstein line search
- Cubic interpolation
Additional helper classes can be used:
- Finite difference differentation (central and forward)
- Quadratic cost (for least square estimation)
- Levenberg-Marquardt approximation for least square estimation
Although it is the 0.1 version, the code is quite stable and is used in the learn scikit.
The package can be easy-installed or can be found on PyPI.
Several tutorials are available or will be available on the future at the following locations: