The algorithms developed in the MiTiV project are based on inverse approach and require the minimization of large problems (e.g., with as many variables as pixels for an image reconstruction). For our needs, we have developed OptimPack, a library for solving large scale optimization problems. Although it is mainly targeted at solving inverse problems like image reconstruction, our library implements state of the art optimization algorithms for any kind of smooth objective functions and may be useful in other domains. For these reasons, we provide a number of bindings to OptimPack in various languages.


The current version implements:

  • various non-linear conjugate gradient (NLCG) methods;

  • limited memory variable metric (L-BFGS);

  • bound constraints limited memory methods (VMLMB, BLMVM);

  • spectral project gradient (SPG) method;

  • inexact monotone and nonmonotone line searches;

  • computation of a trust region step;

  • linear conjugate gradients and trust region conjugate gradient.


  • Java: The mitiv.optim package of the TiPi toolkit implements most the optimization routines of OptimPack.
  • Julia: The OptimPack.jl project provides OptimPack bindings for Julia.
  • C/C++: OptimPack is written in ANSI C.
  • Yorick: A Yorick plugin is available in the source tree of OptimPack.


The software is available on GitHub.