PSOPT Project Home

PSOPT is an open source optimal control software package written in C++ that uses direct collocation methods, including pseudospectral and local discretizations. Pseudospectral methods solve optimal control problems by approximating the time-dependent variables using global polynomials, such as Legendre or Chebyshev functions. Local discretization methods approximate the time dependent functions using local splines, and can be seen as implementations of implicit Runge-Kutta integrators. With both global and local methods, differential equations, continuous constraints and integrals associated with the problem are discretized over a grid of nodes. Sparse nonlinear programming is then used to find local optimal solutions. PSOPT is able to deal with problems with the following characteristics:

  • Single or multiphase problems
  • Continuous time nonlinear dynamics
  • Nonlinear path constraints
  • General event constraints
  • Integral constraints
  • Interior point constraints
  • Bounds on controls and state variables
  • General cost function with Lagrange and Mayer terms.
  • Linear or nonlinear linkages between phases
  • Fixed or free initial phase time
  • Fixed or free final phase time
  • Optimization of static parameters
  • Optimal parameter estimation given sampled observations
As PSOPT is implemented in C++ using state of the art numerical and symbolic libraries, it is very fast, particularly when compared with MATLAB® implementations of similar algorithms.

Even though PSOPT is free and open source software, PSOPT is very powerful, as shown by the complexity of the problems that it is able to solve (see the examples section of this web page).

Full details on PSOPT and its features can be found in its PDF documentation.

    Image courtesy of