Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

DFO-GN: Derivative-Free Nonlinear Least-Squares Solver

Build Status GNU GPL v3 License Latest PyPI version DOI:10.5281/zenodo.2629875

DFO-GN is a package for solving nonlinear least-squares minimisation, without requiring derivatives of the objective.

This is an implementation of the algorithm from our paper: A Derivative-Free Gauss-Newton Method, C. Cartis and L. Roberts, Mathematical Programming Computation (2019). For reproducibility of all figures in this paper, please feel free to contact the authors. A preprint of the paper is available here.

Note: we have released a newer package, called DFO-LS, which is an upgrade of DFO-GN to improve its flexibility and robustness to noisy problems. See here for details.

Citation To cite DFO-GN, please use

  Title    = {A derivative-free {G}auss-{N}ewton method},
  Author   = {Cartis, Coralia and Roberts, Lindon},
  Journal  = {Mathematical Programming Computation},
  Year     = {2019},
  Doi      = {10.1007/s12532-019-00161-7},
  Url      = {}


See manual.pdf or here.


DFO-GN requires the following software to be installed:

Additionally, the following python packages should be installed (these will be installed automatically if using pip, see Installation using pip):

Installation using pip

For easy installation, use pip as root:

$ [sudo] pip install --pre dfogn

If you do not have root privileges or you want to install DFO-GN for your private use, you can use:

$ pip install --pre --user dfogn

which will install DFO-GN in your home directory.

Note that if an older install of DFO-GN is present on your system you can use:

$ [sudo] pip install --pre --upgrade dfogn

to upgrade DFO-GN to the latest version.

Manual installation

The source code for DFO-GN is available on Github:

$ git clone
$ cd dfogn

DFO-GN is written in pure Python and requires no compilation. It can be installed using:

$ [sudo] pip install --pre .

If you do not have root privileges or you want to install DFO-GN for your private use, you can use:

$ pip install --pre --user .



If you installed DFO-GN manually, you can test your installation by running:

$ python test

Alternatively, the documentation provides some simple examples of how to run DFO-GN, which are also available in the examples directory.