├── LICENSE └── README.md /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 optimal-control 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Literature and list of software packages for optimal control 2 | 3 | The list includes resources to the following topics: Automatic/algorithmic differentiation, optimal control, model-predictive control (MPC), numerical optimization, modeling for control. The list will be updated regularly, create a pull request if you'd like to contribute. 4 | 5 | ## Literature 6 | 7 | ### Lectures 8 | 9 | * Lecture notes: Numerical Optimal Control by Prof. Moritz Diehl [[course](https://www.syscop.de/teaching/ss2017/numerical-optimal-control)] [[pdf](https://www.syscop.de/files/2017ss/NOC/script/book-NOCSE.pdf)] 10 | * Tutorial series by Metthew Kelly, [[web](http://www.matthewpeterkelly.com/tutorials/index.html)] 11 | * Liberzon, Daniel. Calculus of variations and optimal control theory: a concise introduction. Princeton University Press, 2011. [[pre-print](http://liberzon.csl.illinois.edu/teaching/cvoc.pdf)] 12 | * Videos of lectures at the University of Florida from the Spring of 2012. Dr. Anil V. Rao. [[web](http://www.anilvrao.com/Optimal-Control-Videos.html)] 13 | 14 | ### Books 15 | 16 | * Bertsekas, Dimitri P., et al. Dynamic programming and optimal control. Vol. 1. No. 2. Belmont, MA: Athena scientific, 1995. 17 | * Betts, J., Practical Methods for Optimal Control and Estimation Using Nonlinear Programming, SIAM, 2010 18 | * Biegler, L. T., Nonlinear Programming, SIAM, 2010 19 | * Model Predictive Control: Theory, Computation, and Design, 2nd Edition by Rawlings, Mayne, Diehl [[web](https://sites.engineering.ucsb.edu/~jbraw/mpc/)] [[pdf](https://sites.engineering.ucsb.edu/~jbraw/mpc/MPC-book-2nd-edition-2nd-printing.pdf)] 20 | 21 | ### Survey papers 22 | 23 | * F. Topputo and C. Zhang, “Survey of Direct Transcription for Low-Thrust Space Trajectory Optimization with Applications,” Abstract and Applied Analysis, vol. 2014, Article ID 851720, 15 pages, 2014. [[edited](https://www.hindawi.com/journals/aaa/2014/851720/) 24 | 25 | 26 | ## Software 27 | 28 | ### High level optimal control modeling languages and optimal control software 29 | 30 | - Acado [[github](https://github.com/acado/acado)] [[web](http://acado.github.io/)] 31 | - acados [[github](https://github.com/acados/acados)] [[web](http://acados.org/)] 32 | - BOCOP [[web](https://www.bocop.org/)] 33 | - Control toolbox, domain specific for robotics [[bitbucket](https://bitbucket.org/adrlab/ct/wiki/Home)] 34 | - Dymos: Open-source Optimal Control for Multidisciplinary Systems [[github](https://github.com/OpenMDAO/dymos)] 35 | - ICLOCS2 [[github](https://github.com/ImperialCollegeLondon/ICLOCS/)] [[web](http://www.ee.ic.ac.uk/ICLOCS/)] 36 | - Modelica with JModelica [[web](https://jmodelica.org/)] 37 | - OpenOCL [[github](https://github.com/OpenOCL/OpenOCL)] [[web](https://openocl.org/)] 38 | - PSOPT [[github](https://github.com/PSOPT/psopt)] [[web](http://www.psopt.org/)] 39 | - Pyomo with .DAE extension [[github](https://github.com/Pyomo/pyomo)] [[web](http://www.pyomo.org/)] 40 | - towr, domain specific for legged robots [[github](https://github.com/ethz-adrl/towr)] 41 | - AMPL with TACO extension (commercial) 42 | - DIDO (commercial) 43 | - Forces (commercial) 44 | - GPOPS2 (commercial) 45 | - gPROMS (commercial) 46 | - Mujoco, domain specific for robotics/contact, simulator (commercial) 47 | - Optimica, Dymola (commercial) 48 | - PROPT (commercial) 49 | 50 | ### High level numerical optimization modeling languages 51 | 52 | - CasADi [[github](https://github.com/casadi/casadi)] [[web](https://web.casadi.org/)] 53 | - CVX, convex [[web](http://cvxr.com/cvx/)] 54 | - Pyomo [[github](https://github.com/Pyomo/pyomo)] [[web](http://www.pyomo.org/)] 55 | - Yalmip [[github](https://github.com/yalmip/YALMIP)] [[web](https://yalmip.github.io/)] 56 | 57 | ### Numerical optimization solver 58 | 59 | #### Non-linear programming 60 | 61 | - Ipopt [[github](https://github.com/coin-or/Ipopt)] 62 | - CONOPT (commercial) 63 | - Forces (commercial) 64 | - KNITRO (commercial) 65 | - Matlab fmincon (commercial) 66 | - Snopt (commercial) 67 | - WORHP (commercial) 68 | 69 | 70 | #### Linear, quadratic, convex programming 71 | 72 | - ECOS [[github](https://github.com/embotech/ecos)] 73 | - hpipm [[github](https://github.com/giaf/hpipm)] 74 | - Sedumi [[github](https://github.com/sqlp/sedumi)] 75 | - qpDUNES [[github](https://github.com/jfrasch/qpDUNES)] 76 | - qpOASES [[coin-or](https://projects.coin-or.org/qpOASES)] 77 | - SDPT3 [[web](http://www.math.nus.edu.sg/~mattohkc/sdpt3.html)] 78 | - CPLEX (commercial) 79 | - Gruobi (commercial) 80 | - MINOS (commercial) 81 | - Mosek (commercial) 82 | 83 | #### Integer, mixed-integer programming 84 | 85 | - Bonmin 86 | 87 | ## Automatic differentiation 88 | 89 | - CasADi [[github](https://github.com/casadi/casadi)] [[web](https://web.casadi.org/)] 90 | - CppAD [[github](https://github.com/coin-or/CppAD)] 91 | - CppADCodeGen [[github](https://github.com/joaoleal/CppADCodeGen)] 92 | - JuliaDiff [[github](https://github.com/JuliaDiff/)] [[web](http://www.juliadiff.org/)] 93 | 94 | ## Other material 95 | 96 | - Summer School on Numerical Optimization Software (includes a long list of solvers in the slides, see repository), Hans D. Mittelmann, Moritz Diehl [[web](https://www.syscop.de/teaching/2016/summer-school-on-numerical-optimization-software)] [[repository](https://gitlab.syscop.de/teaching/NOS_public)] 97 | - Decision tree, benchmarks for optimization software, Hans D. Mittelmann [[web](http://plato.asu.edu/)] 98 | --------------------------------------------------------------------------------