Nonlinear Programming Packages

KNITRO Authors Richard Byrd
Jorge Nocedal
Northwestern University, Evanston, Illinois.
Richard Waltz
Northwestern University, Evanston, Illinois.
Mary Beth Hribar
Guanghui Lui
with assistance from:
Todd Plantenga, Sandia National Laboratories
Marcelo Marazzi
Northwestern University, Evanston, Illinois
Language FORTRAN 77
Algorithm The algorithm belongs to the class of interior (or barrier) methods, and uses trust regions to promote convergence.
Input Format AMPL; Special Fortran interface (4 subroutines);
Modeling Languages link AMPL
Commercial Status free (ask the author)
Platform Any machine with a reasonable amount of memory and a Fortran compiler.
Remarks KNITRO implements an interior point method for nonlinear programming. The nonlinear programming problem is replaced by a series of barrier subproblems controlled by a barrier parameter. The algorithm uses trust regions and a merit function to promote convergence. Each step is a sum of two components:
(i) a normal step whose objective is to improve feasibility; and
(ii) a tangential step that aims toward optimality.
The tangential step is computed using a projected conjugate gradient iteration. KNITRO does not compute each step by solving a linear algebraic system involving the KKT matrix. Instead, it factors (using MA27 subroutines) a projection matrix, and uses the conjugate gradient method to aproximately minimize a quadratic model of the barrier problem.
KNITRO is interfaced with AMPL.
For the Fortran interface the user must provide four Fortran subroutines describing:
(i) data about the problem,
(ii) the objective function and the constraints,
(iii) the gradient of the objective function and the Jacobian matrix of the constraints,
(iv) the Hessian of the Lagrangian function.
  • R. Byrd. M.E. Hribar, and J. Nocedal, "An Interior Point Method for Large Scale Nonlinear Programming" (1999), SIAM J. Optimization, 9,4, pp.877-900.
  • R. Byrd, J.C. Gilbert and J. Nocedal, "A Trust Region Method Based on Interior Point Techniques for Nonlinear Programming," Mathematical Programming A, 89: 149-185 (2000).
  • KNITRO manual