Unfit: data fitting and optimization software

Unfit is a non-linear optimization tool applicable to curve-fitting, paramater estimation and minimisation problems in general. It is written in C++11. It has been developed as part of our BME Summer of Code programme.

As of Release 3.0, Unfit incorporates five popular optimization algorithms:

  • Differential Evolution
  • Genetic Algorithm
  • Levenberg-Marquardt Method
  • Nelder-Mead Simplex Method
  • Particle Swarm Optimization

All of these algorithms accept the same cost function, so you can write your cost function once and try as many algorithms as you like. It is also trivial to create hybrid solvers by simply passing the output of one algorithm (e.g. Particle Swarm) to the input of another (e.g. Levenberg-Marquardt). We have tried to keep the code as readable as possible so you can see how things work, and at the same time our core algorithms are 100% line and function covered by our unit tests.


You can download Unfit 3.0 (latest stable release) as
- a zip archive
- a tar.gz archive

See also the release notes and our new tutorial.

We are also developing a web-based GUI to Unfit. A beta version Unfit-GUI v 0.1 (beta) with a fixed set of fitting functions is available here (only accessible within the NUS network).

As of 30-06-2017, the number of downloads of Unfit is 1,559