GPOPS-II
GPOPS-II (pronounced "GPOPS 2") is a general-purpose MATLAB software for solving continuous optimal control problems using hp-adaptive Gaussian quadrature collocation and sparse nonlinear programming. The acronym GPOPS stands for "General Purpose OPtimal Control Software", and the Roman numeral "II" refers to the fact that GPOPS-II is the second software of its type (that employs Gaussian quadrature integration). Problem Formulation. GPOPS-II is designed to solve multiple-phase optimal control problems of the following mathematical form (where formula_1 is the number of phases): It is important to note that the event constraints can contain any  functions that relate information at the start and/or terminus of any phase (including relationships that include both static parameters and integrals) and that the phases themselves need not be sequential. It is noted that the approach to linking phases is based on well-known formulations in the literature. Method Employed by GPOPS-II. GPOPS-II uses a class of methods referred to as formula_10-adaptive Gaussian quadrature collocation where the collocation points are the nodes of a Gauss quadrature (in this case, the Legendre-Gauss-Radau [LGR] points). The mesh consists of intervals into which the total time interval formula_11  in each phase is divided, and LGR collocation is performed in each interval. Because the mesh can be adapted such that both the degree of the polynomial used to approximate the state formula_12 and the width of each mesh interval can be different from interval to interval, the method is referred to as an formula_10-adaptive method (where "formula_14" refers to the width of each mesh interval, while "formula_15" refers to the polynomial degree in each mesh interval). The LGR collocation method has been developed rigorously in Refs., while formula_10-adaptive mesh refinement methods based on the LGR collocation method  can be found in Refs., . Development. The development of GPOPS-II began in 2007. The code development name for the software was "OptimalPrime", but was changed to GPOPS-II in late 2012 in order to keep with the lineage of the original version of GPOPS which implemented global collocation using the Gauss pseudospectral method. The development of GPOPS-II continues today, with improvements that include the open-source algorithmic differentiation package ADiGator and continued development of formula_10-adaptive mesh refinement methods for optimal control. Applications of GPOPS-II. GPOPS-II has been used extensively throughout the world both in academia  and industry. Published academic research where GPOPS-II has been used includes Refs., where the software has been used in applications such as performance optimization of Formula One race cars, Ref. where the software has been used for minimum-time optimization of low-thrust orbital transfers, where the software has been used for human performance in cycling, Ref. where the software has been used for soft lunar landing, and Ref. where the software has been used to optimize the motion of a bipedal robot.