UG: Python Toolbox for Optimal Control
Build a small, well-documented Python toolbox that solves classic optimal-control problems (brachistochrone, LQR, simple sweeping process) and visualizes trajectories.
Project at a glance
| Level | Undergraduate (AMS 487, or independent study) |
| Prerequisites | Calculus, basic ODEs, Python (NumPy / Matplotlib) |
| Effort | One semester (~4–6 hrs/week) |
| Skills gained | Numerical optimization, ODE solvers, scientific Python, technical writing |
Goal
Implement and benchmark several classical optimal-control problems in Python, packaged as a small reusable toolbox with notebooks and figures.
Suggested milestones
- Brachistochrone problem. Discretize, solve with
scipy.optimize, and reproduce the cycloid. - Linear–quadratic regulator (LQR). Implement the discrete-time Riccati recursion, compare with
python-control. - Simple sweeping process. Implement the catching-up algorithm for a 1D / 2D test problem with a moving constraint set, and animate the trajectory.
- Write-up. A short report (8–12 pages) and a Jupyter notebook demonstrating each example.
Why it matters
It gives you a hands-on entry point into the optimal-control + nonsmooth dynamics world that drives a lot of modern research, and produces a portfolio artifact you can put on GitHub.