Solving Robust QCQP

117 views
Skip to first unread message

Tobias

unread,
Dec 7, 2012, 2:09:17 PM12/7/12
to yal...@googlegroups.com
Hi,
 
Is it anyhow possible to solve a robust QCQP where the uncertainty lies in the matrix of the quadratic terms with YALMIP? I have not found a proper method (except linearization of the original problem) to solve. I think that's not really accurate.
 
Thanks in advance!

Johan Löfberg

unread,
Dec 7, 2012, 2:27:32 PM12/7/12
to yal...@googlegroups.com
Depends on the uncertainty set I think. Polytopic?

Tobias

unread,
Dec 7, 2012, 2:59:00 PM12/7/12
to yal...@googlegroups.com
Thanks for fast response!
I formulated it basically this way:
 
max_X min_eps  ao^T * X + X^T * Q(eps) * X
 
s.t.
eps_min <= eps <= eps_max 
 
X^T * Q(eps) * X - a1^T * X <= 0
 
eps has the uncertainty. Q(eps) is a diagonal matrix with elements 1/eps.  
 
   
 
 

Johan Löfberg

unread,
Dec 7, 2012, 3:08:54 PM12/7/12
to
So you want to find an X such that

X^T * Q(eps) * X - a1^T * X <= 0 for all eps_min <= eps <= eps_max  

If it weren't for a bug, you would write this as

X=sdpvar(n,1);
eps
=sdpvar
Q
=...
C
=X'*Q*X-a1'*X <= 0;
solvesdp
([C,uncertain(eps),eps_min <= eps <= eps_max],?)

I can send you a fixed version if you want.

Tobias

unread,
Dec 7, 2012, 3:17:27 PM12/7/12
to yal...@googlegroups.com
Thank you very much! I attached my version
 
I feel ashamed since it seems I didn't understood YALMIP.....
 
RobustQCQP.txt

Johan Löfberg

unread,
Dec 7, 2012, 3:28:29 PM12/7/12
to yal...@googlegroups.com
Well, your code looks pretty ok. Note though that the command robustify is unnecessary.

I will send you some updates per email to account for a bug showing up on this problem.

Note that the robust counterpart derived by YALMIP in the fix I send you and include in the next release is done by a vertex enumeration, despite the fact that the uncertainty set is very simple and thus perhaps could be treated more efficiently.

Johan Löfberg

unread,
Dec 7, 2012, 3:39:20 PM12/7/12
to yal...@googlegroups.com
Just noticed that you have inverses of your uncertainties. My quick fix didn't bother about this, but in the final version this will not work. You will have to reparameterize your uncertainty and work with the inverse parameters instead, in order to make the expressions linear in the uncertainty.

Tobias

unread,
Dec 7, 2012, 3:44:22 PM12/7/12
to yal...@googlegroups.com

Thank you very much! You saved my evening. I will give it a try.

Hopefully I don’t have to bother you again.

 

Best regards,

Tobias

Reply all
Reply to author
Forward
0 new messages