dilate is used to derive affine dilations for polynomially parametrized uncertain SDPs. The dilated constraint can then be used for conservatively solving robust SDP with polytopic uncertainty.

Syntax

Fdilated = dilate(F,w)
[G,H,M] = dilate(X,w)

Examples

The robust SDP framework in YALMIP allows SDP constraints with affine dependence on the uncertainty, and a polytopic uncertainty description. However, it is not uncommon that the dependence with respect to the uncertainty is polynomial.

A recent approach to address this is matrix dilations, where the polynomial dependence is reduced to an affine dependence, at the cost of a larger SDP and possible conservatism. Note that the implementation in YALMIP uses a slightly alternative approach.

Consider the problem of finding an upper bound on a polynomial f in the range 0 to 1 (this example is taken from the reference above)

sdpvar t1 t2
f = -375*t1^4 + 800*t1^3-570*t1^2+144*t1-375*t2^4 + 800*t2^3-570*t2^2+144*t2

This can be formulated as a robustness problem; find the smallest possible x such that x-f is positive on the region of interest.

The expression x-f is not affine in the uncertainty t1 and t2, hence the standard robust framework in YALMIP is not applicable. To get a robustness problem with affine dependence, we dilate the constraint

sdpvar x
Fdilated = dilate(x-f>=0,[t1 t2])

The dilated constraint is affine in the uncertainty, and we can apply standard robust programming.

F = [Fdilated, uncertain([t1 t2]), 0 <= [t1 t2] <= 1];
solvesdp(F,x)

The command can alternatively be called with an sdpvar object instead of a set object. The output arguments are then the matrices used in the dilation. The code above is equivalent to the following

[G,H,M] = dilate(x-f,[t1 t2])
W = sdpvar(size(G,1),size(H,2))
F = [G + W*H' + H*W' >= 0, uncertain([t1 t2]), 0 <= [t1 t2] <= 1]
solvesdp(F,x)

See also

uncertain, robustify, solvesdp, solvesos, robust optimization tutorial, robust MPC example, Robust SDP example