MINUIT

Last updated

MINUIT, now MINUIT2, is a numerical minimization software library originally written in the FORTRAN programming language [1] by CERN staff physicist Fred James in the 1970s. It provides several minimization algorithms that search for parameter values that minimize a user-defined function. In addition to that it can compute confidence intervals for the parameters by scanning the function around the minimum.

Five minimization algorithms are available. The recommended default algorithm MIGRAD is described as "a variable-metric method with inexact line search, a stable metric updating scheme, and checks for positive-definiteness". [2]

The original FORTRAN code was later ported to C++ by the ROOT project; both the FORTRAN and C++ versions are in use as of 2009. The program is very widely used in particle physics, and thousands of published papers cite use of MINUIT. [3] In the early 2000s, Fred James started a project to implement MINUIT in C++ using object-oriented programming. [4] The new MINUIT is an optional package (minuit2) in the ROOT release. [5] [6] [7] As of October 2014 the latest version is 5.34.14, released on 24 January 2014. [5] A Java port was developed, [8] and a Python frontend to the C++ code is available. [9]

Related Research Articles

Heap (data structure) Computer science data structure

In computer science, a heap is a specialized tree-based data structure which is essentially an almost complete tree that satisfies the heap property: in a max heap, for any given node C, if P is a parent node of C, then the key of P is greater than or equal to the key of C. In a min heap, the key of P is less than or equal to the key of C. The node at the "top" of the heap is called the root node.

MUSIC-N refers to a family of computer music programs and programming languages descended from or influenced by MUSIC, a program written by Max Mathews in 1957 at Bell Labs. MUSIC was the first computer program for generating digital audio waveforms through direct synthesis. It was one of the first programs for making music on a digital computer, and was certainly the first program to gain wide acceptance in the music research community as viable for that task. The world's first computer-controlled music was generated in Australia by programmer Geoff Hill on the CSIRAC computer which was designed and built by Trevor Pearcey and Maston Beard. However, CSIRAC produced sound by sending raw pulses to the speaker, it did not produce standard digital audio with PCM samples, like the MUSIC-series of programs.

IDL, short for Interactive Data Language, is a programming language used for data analysis. It is popular in particular areas of science, such as astronomy, atmospheric physics and medical imaging. IDL shares a common syntax with PV-Wave and originated from the same codebase, though the languages have subsequently diverged in detail. There are also free or costless implementations, such as GNU Data Language (GDL) and Fawlty Language (FL).

ROOT

ROOT is an object-oriented program and library developed by CERN. It was originally designed for particle physics data analysis and contains several features specific to this field, but it is also used in other applications such as astronomy and data mining. The latest release is 6.24.00, as of 2021-04-15.

Basic Linear Algebra Subprograms (BLAS) is a specification that prescribes a set of low-level routines for performing common linear algebra operations such as vector addition, scalar multiplication, dot products, linear combinations, and matrix multiplication. They are the de facto standard low-level routines for linear algebra libraries; the routines have bindings for both C and Fortran. Although the BLAS specification is general, BLAS implementations are often optimized for speed on a particular machine, so using them can bring substantial performance benefits. BLAS implementations will take advantage of special floating point hardware such as vector registers or SIMD instructions.

The GNU Scientific Library is a software library for numerical computations in applied mathematics and science. The GSL is written in C; wrappers are available for other programming languages. The GSL is part of the GNU Project and is distributed under the GNU General Public License.

ScientificPython is an open source library of scientific tools for the Python programming language. Its development started in 1995.

A foreign function interface (FFI) is a mechanism by which a program written in one programming language can call routines or make use of services written in another.

Limited-memory BFGS is an optimization algorithm in the family of quasi-Newton methods that approximates the Broyden–Fletcher–Goldfarb–Shanno algorithm (BFGS) using a limited amount of computer memory. It is a popular algorithm for parameter estimation in machine learning. The algorithm's target problem is to minimize over unconstrained values of the real-vector where is a differentiable scalar function.

Tinker, previously stylized as TINKER, is a suite of computer software applications for molecular dynamics simulation. The codes provide a complete and general set of tools for molecular mechanics and molecular dynamics, with some special features for biomolecules. The core of the software is a modular set of callable routines which allow manipulating coordinates and evaluating potential energy and derivatives via straightforward means.

Sequential quadratic programming (SQP) is an iterative method for constrained nonlinear optimization. SQP methods are used on mathematical problems for which the objective function and the constraints are twice continuously differentiable.

Quasi-Newton methods are methods used to either find zeroes or local maxima and minima of functions, as an alternative to Newton's method. They can be used if the Jacobian or Hessian is unavailable or is too expensive to compute at every iteration. The "full" Newton's method requires the Jacobian in order to search for zeros, or the Hessian for finding extrema.

The nested sampling algorithm is a computational approach to the Bayesian statistics problems of comparing models and generating samples from posterior distributions. It was developed in 2004 by physicist John Skilling.

Nim (programming language) Programming language

Nim is an imperative, general-purpose, multi-paradigm, statically typed, and systems compiled programming language, designed and developed by a team around Andreas Rumpf. Nim is designed to be "efficient, expressive, and elegant", supporting metaprogramming, functional, message passing, procedural, and object-oriented programming styles by providing several features such as compile time code generation, algebraic data types, a foreign function interface (FFI) with C, C++, Objective-C, and JavaScript, and supporting compiling to those same languages.

In machine learning, hyperparameter optimization or tuning is the problem of choosing a set of optimal hyperparameters for a learning algorithm. A hyperparameter is a parameter whose value is used to control the learning process. By contrast, the values of other parameters are learned.

References

  1. James, F. MINUIT - Function Minimization and Error Analysis Reference Manual (PDF) (Report). 94.1. CERN Program Library Long Writeup. D506. Archived from the original on 2008-05-26.
  2. "Which Minimizer to Use".
  3. "Literature search for papers mentioning MINUIT". Inspire -High-Energy Physics Content. Will search current content for "MINUIT"
  4. "Home page for new C++ MINUIT". 2008-06-25. Archived from the original on 2010-04-11.
  5. 1 2 "ROOT Reference Guide: Minuit2". root.cern. Retrieved 24 January 2022. Also has link to download free-standing version, without using ROOT. In January 2022 the file was Minuit2-5.34.14.tar.gz.
  6. "Home page for new C++ MINUIT". 2008-06-25. Archived from the original on 2010-04-11.
  7. "ROOT Reference Guide: Minuit2 Minimization Library". root.cern. Current for the date accessed.
  8. "freehep-jminuit - Project Summary". FreeHEP. 14 September 2006.
  9. "iminuit - Jupyter-friendly Python frontend to the MINUIT2 C++ package". Updated as required; v2.9.0 released in January 2022