Skip to content
Source code for the examples accompanying the paper "Learning convex optimization control policies."
Jupyter Notebook
Branch: master
Clone or download
Latest commit a3c435c Dec 24, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
data add mean, covariance for the markowitz tuning example Dec 20, 2019
.gitignore initial commit Dec 19, 2019 README edits Dec 24, 2019
constrained_lqr.ipynb initial commit Dec 19, 2019
lqr.ipynb initial commit Dec 19, 2019
markowitz_tuning.ipynb add mean, covariance for the markowitz tuning example Dec 20, 2019
supply_chain.ipynb initial commit Dec 19, 2019 initial commit Dec 19, 2019
vehicle.ipynb initial commit Dec 19, 2019

Learning convex optimization control policies

This repository accompanies the paper Learning convex optimization control policies. It contains the source code for the examples therein as IPython notebooks.

Our examples make use the Python package cvxpylayers to differentiate through convex optimization problems.


Many control policies used in various applications determine the input or action by solving a convex optimization problem that depends on the current state and some parameters. These types of control policies are tuned by varying the parameters in the optimization problem, such as the linear quadratic regulator weights, to obtain good performance, judged by application-specific metrics. Our paper introduces a method to automate this process, by adjusting the parameters using an approximate gradient of the performance metric with respect to the parameters. Our procedure relies on recently developed methods that can efficiently evaluate the derivative of the solution of a convex optimization problem with respect to its parameters.


    author       = {Agrawal, Akshay and Barratt, Shane and Boyd, Stephen and Stellato, Bartolomeo},
    title        = {Learning Convex Optimization Control Policies},
    journal      = {arXiv},
    archivePrefix = {arXiv},
    eprint = {1912.09529},
    primaryClass = {math.OC},
    year    = {2019},
You can’t perform that action at this time.