All Projects → lacerbi → Optimviz

lacerbi / Optimviz

Licence: gpl-3.0
Visualize optimization algorithms in MATLAB.

Programming Languages

matlab
3953 projects

Projects that are alternatives of or similar to Optimviz

gibbous
Convex optimization for java and scala, built on Apache Commons Math
Stars: ✭ 17 (-83.96%)
Mutual labels:  optimization, optimization-algorithms
Ojalgo
oj! Algorithms
Stars: ✭ 336 (+216.98%)
Mutual labels:  optimization-algorithms, optimization
qpmad
ROS-compatible Eigen-based Goldfarb-Idnani quadratic programming solver
Stars: ✭ 41 (-61.32%)
Mutual labels:  optimization, optimization-algorithms
procrustes
Python library for finding the optimal transformation(s) that makes two matrices as close as possible to each other.
Stars: ✭ 48 (-54.72%)
Mutual labels:  optimization, optimization-algorithms
Pagmo2
A C++ platform to perform parallel computations of optimisation tasks (global and local) via the asynchronous generalized island model.
Stars: ✭ 540 (+409.43%)
Mutual labels:  optimization-algorithms, optimization
FrankWolfe.jl
Julia implementation for various Frank-Wolfe and Conditional Gradient variants
Stars: ✭ 47 (-55.66%)
Mutual labels:  optimization, optimization-algorithms
ForBES
Generic and efficient MATLAB solver for nonsmooth optimization problems
Stars: ✭ 19 (-82.08%)
Mutual labels:  optimization, optimization-algorithms
geneal
A genetic algorithm implementation in python
Stars: ✭ 47 (-55.66%)
Mutual labels:  optimization, optimization-algorithms
Awesome Robotics
A curated list of awesome links and software libraries that are useful for robots.
Stars: ✭ 478 (+350.94%)
Mutual labels:  optimization-algorithms, optimization
Ensmallen
A header-only C++ library for numerical optimization --
Stars: ✭ 436 (+311.32%)
Mutual labels:  optimization-algorithms, optimization
a-tour-of-pytorch-optimizers
A tour of different optimization algorithms in PyTorch.
Stars: ✭ 46 (-56.6%)
Mutual labels:  optimization, optimization-algorithms
Cppnumericalsolvers
a lightweight C++17 library of numerical optimization methods for nonlinear functions (Including L-BFGS-B for TensorFlow)
Stars: ✭ 638 (+501.89%)
Mutual labels:  optimization-algorithms, optimization
nuxt-prune-html
🔌⚡ Nuxt module to prune html before sending it to the browser (it removes elements matching CSS selector(s)), useful for boosting performance showing a different HTML for bots/audits by removing all the scripts with dynamic rendering
Stars: ✭ 69 (-34.91%)
Mutual labels:  optimization, optimization-algorithms
Nonlinear-Optimization-Algorithms
MATLAB implementations of a variety of nonlinear programming algorithms.
Stars: ✭ 86 (-18.87%)
Mutual labels:  optimization, optimization-algorithms
zoofs
zoofs is a python library for performing feature selection using a variety of nature-inspired wrapper algorithms. The algorithms range from swarm-intelligence to physics-based to Evolutionary. It's easy to use , flexible and powerful tool to reduce your feature size.
Stars: ✭ 142 (+33.96%)
Mutual labels:  optimization, optimization-algorithms
dfogn
DFO-GN: Derivative-Free Optimization using Gauss-Newton
Stars: ✭ 20 (-81.13%)
Mutual labels:  optimization, optimization-algorithms
Fewshotlearning
Pytorch implementation of the paper "Optimization as a Model for Few-Shot Learning"
Stars: ✭ 223 (+110.38%)
Mutual labels:  optimization-algorithms, optimization
Argmin
Mathematical optimization in pure Rust
Stars: ✭ 234 (+120.75%)
Mutual labels:  optimization-algorithms, optimization
Optim
OptimLib: a lightweight C++ library of numerical optimization methods for nonlinear functions
Stars: ✭ 411 (+287.74%)
Mutual labels:  optimization-algorithms, optimization
Solid
🎯 A comprehensive gradient-free optimization framework written in Python
Stars: ✭ 546 (+415.09%)
Mutual labels:  optimization-algorithms, optimization

OptimViz - Optimizer visualization demo for MATLAB

This demo visualizes several MATLAB derivative-free optimizers at work on standard test functions. This is purely for demonstration purposes. For a proper benchmark of different MATLAB optimizers, see [1].

[email protected] to talk about computational modeling, optimization, and (approximate) Bayesian inference.

I have been giving seminars and tutorials on optimization, model fitting, and model comparison. If you are interested, see my webpage.

Optimizers

The optimization algorithms visualized here are:

  • BADS (Bayesian adaptive direct search), a novel algorithm that combines a direct search approach with local Bayesian optimization (link);
  • fminsearch (Nelder-Mead), the standard simplex method for nonlinear optimization;
  • fmincon, a powerful method for constrained optimization based on numerical approximation of the gradient;
  • ga (genetic algorithms), a heuristic population-based method for global optimization;
  • MCS (Multi-level coordinate search), an advanced method for global optimization (link);
  • CMA-ES (Covariance matrix adaptation - evolution strategies), a state-of-the-art method for nonconvex optimization (link).

Examples

We see here an example on the Rosenbrock banana function:

demo_opt

We see how the algorithms react to noise, by adding unit Gaussian noise at each function evaluation:

demo_opt

We see here another noiseless example on the Ackley function:

demo_opt

Comments

  • BADS works well on these examples, which were chosen to show how different algorithms explore the space. More generally, BADS is best for functions with a noisy or jagged landscape, and with non-negligible computational cost (see here). BADS is available as a ready-to-use MATLAB toolbox here.
  • fminsearch is a generic optimizer which can deal with simple functions, but it should never be the main choice as there are always better alternatives.
  • fmincon is generally superior to most optimizers (and in partcular, to fminsearch) on smooth functions. However, fmincon deals very badly with jagged or noisy landscapes.
  • We are not aware of scenarios in which ga is a good off-the-shelf choice for continuous-valued optimization. It is often just barely better than random search.
  • MCS can be a great optimizer, but it is somewhat idiosyncratic (it might converge very quickly to a solution).
  • CMA-ES, despite the poor performance shown here, is a good optimizer if allowed a very large number of function evaluations.

Code

These animated gifs can be generated via the optimviz.m function. You can easily test different optimizers and add other functions.

The generated animated gifs are uncompressed. We recommend to compress them before using them in any form (e.g., via some online tool).

To run some of these algorithms you will need MATLAB's Optimization Toolbox and Global Optimization Toolbox.

References

For more details about the benchmark comparing different MATLAB optimizers on artificial and real applied problems (fitting of computational models), see the following reference:

  1. Acerbi, L. & Ma, W. J. (2017). Practical Bayesian Optimization for Model Fitting with Bayesian Adaptive Direct Search. In Advances in Neural Information Processing Systems 30, pages 1834-1844. (link, arXiv preprint)

For more info about my work in machine learning and computational neuroscience, follow me on Twitter: https://twitter.com/AcerbiLuigi

License

OptimViz is released under the terms of the GNU General Public License v3.0.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].