You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
To see the iPython document in Colaboratory from your web browser, please
navigate to this page.
TV-SDP: Time-varying Semi-definite Programs
The TV-SDP framework can be used for imposing constraints in an optimization problem of the form
$$X(t) \succeq 0 ; \forall t \in [0, 1],$$
where $$X(t)$$ is a polynomial symmetric matrix, i.e. a symmetric matrix whose
entries are polynomial functions of time, and $$X(t) \succeq 0$$ means that all
the eigenvalues values of the matrix $$X(t)$$ are non-negative.
The polynomial matrix $$X $$ is represented by a 3D-tensor $$X$$ of shape $$(m,
m, d+1)$$, where $$m \times m$$ is the shape of the matrix $$X$$ and $$d$$ is
the degree of its components. In other words, the polynomial matrix
One can think of the constraint $$F [x] (t) \succeq 0$$ as a describing a
feasible set that changes shapes as time $$t$$ progresses and $$x(t)$$ tries to
stay inside of it. The constraint $$G\frac{d}{dt}x \succeq 0$$ imposes
additional restrictions on the derivative of $$x(t)$$.
A visual representation is below. The feasible set $${x \in \mathbb R^2 ; |;
A_0(t) + x_1 A_1(t) + x_2A_2(t) \succeq 0 }$$ for some sample times $$t$$ is
delimited by blue lines. The objective function $$c(t)$$ is represented by a
black arrow, which also moves in time. The best polynomial solution of degree 20
is plotted with dotted red lines.
{width="600" height="300"}
*Figure: The feasible set, objective and solution of a TV-SDP.
Time-varying Linear Programming and Time-varying Convex QPs
A general time-varying convex quadratic program corresponds to an optimization
problem of the form:
where $$y(t) = \begin{pmatrix}x(t)\ \frac{d}{dt}x(t)\end{pmatrix}$$, the
$$Q_i(t)$$ are some convex polynomial matrices, the $$a_i(t)$$ are vectors of
polynomials, and the $$b_i(t)$$ are scalar-valued polynomials. The case where
all the $$Q_i(t)$$ are equal to 0 corresponds to time-varying linear programs.
Since every $$Q_i(t)$$ is convex, it can be decomposed as $$V_i(t)^TV_i(t)$$. By
Schur complement, the constraint
The main function of the library is
make_poly_matrix_psd_on_0_1(X) , which takes an $$(m, m,
d+1)\text{-tensor}$$$$X$$ representing a symmetric polynomial matrix $$A(t)$$,
and returns a list of constraints that can be directly fed to CVXPY to impose
$$A(t) \succeq 0; \forall t\in[0, 1]$$.
Basic API
importcvxpy# makes a 3x3 matrix of polynomials of degree 10m=3d=10X=cvxpy.Variable( (m, m, d+1), name='X')
# make it PSD on [0, 1]constraints= []
constraints+=make_poly_matrix_psd_on_0_1(X)
# add other constraints, possibly involving other variablesconstraints+= ...
# Minimize X_12(0)objective=cvxpy.Minimize(X[1, 2, 0])
# Solve the problem using the solver SCSprob=cvxpy.Problem(objective, constraints)
prob.solve(solver=cvxpy.SCS, verbose=True)