Derivative Free Optimization (DFO) in short

"In fact, we consider optimization without derivatives one of the most important, open, and challenging areas in computational science and engineering, and one with enormous practical potential." Andrew R. Conn, Katya Scheinberg, and Luís Nunes Vicente, Section 1.1 (page 1) of Introduction to Derivative-Free Optimization (SIAM, 2009).
Derivative Free Optimization is an continuous optimization technique wherein the only requirement is to be able to evaluate the function to optimize. DFO algorithms are based on simple intuitive ideas and are easy to understand. A wide range of DFO algorithms and techniques with their own advantages and disadvantages exist.


  • Wide range of continuous problems can be tackled with DFO
  • No knowledge of the objective function is required (possibility to deal with black-box functions)
  • Possibility to extend to multiobjective optimization
  • Wide range of available algorithms
  • Easy and ready-to-use algorithms
  • Typical problems where DFO is good at: optimization with simulations, physics problems, optimization with expensive objective functions


  • Tuning of parameters might be tricky (some algorithms have several parameters)
  • There is a learning curve to understand which algorithm to use for a given objective function
  • Can only deal with "box-constraints" (i.e. input of the evaluation function contained in a hyper-volume)
  • Some algorithms might get stuck into local optima, restarts needed

Why OscaR-DFO

  • Very crisp and elegant models using Scala (as short as dedicated languages)
  • Full control on the algorithm parameters
  • Several visualisation tools available to see the evolution of the solution while executing some algorithms
  • The functional paradigm of Scala allows to easily express constraint and objectives in few lines
  • Some unique algorithms (for the moment MOGEN)
  • New DFO algorithms included in each new version
  • Reliable: nightly tested through hundreds of regression tests
  • Very reactive development team (in case of question or bug fix)

Some links to learn to use OscaR and DFO