Mixed-Integer Sequential Quadratic Programming

Version 7.1 (2013)


MISQP solves mixed-integer nonlinear programming problems by a modified sequential quadratic programming (SQP) method. It is not assumed that integer variables are relaxable, i.e., problem functions are evaluated only at integer points. The code is applicable also to nonconvex optimization problems.

Numerical Method

The algorithm is stabilized by a trust region method including Yuan's second order corrections. The Hessian of the Lagrangian function is approximated by BFGS updates subject to the continuous and integer variables. Successively, mixed-integer quadratic programs must be solved.

Program Organization

MISQP is a double precision FORTRAN subroutine where all data are passed by subroutine arguments. Function and gradient values must be submitted through reverse communication. Partial derivatives subject to integer variables are approximated internally at grid points. The generated mixed-integer quadratic programming subproblems must be solved by the code MIQL.

Special Features

  • separate handling of upper and lower bounds
  • boolean, integer, and continuous variables
  • accepts non-relaxable integer/boolean variables
  • no partial derivatives subject to integer variables required
  • extensive numercal tests (186 examples)
  • full documentation by initial comments
  • reverse communication
  • FORTRAN source code (close to F77, conversion to C by f2c possible)


The development of MISQP was supported by the Shell GameChanger program, and MISQP is included in Shell's simulation packages. In addition, the code is in use at General Electric, Epcos, Dassault/Simulia (iSight), ANSYS (DesignXplorer), BASF (ChemaSim) and at several smaller companies and research institutes.