Hello,

I am new in this forum. Here is my problem:

I’m solving some conic relaxations of the AC optimal power flow problem using CVX 2.1. Below is the general model. When I solve the SDP relaxation for n>= 1000, everything is ok with MOSEK 8.0.0.60 but when I solve any other conic relaxation (e.g. SOCP), I get this message Mosek error: MSK_RES_TRM_STALL ().

Can anyone tell me what matters? I read somewhere that when the above MOSEK message occures, it is likely due to bad scaling. But why I don’t have this message for the SDP relaxation?

Thank you very much for your help.

n = 1354: number of buses (vertices) in a graph

nGen << n: number of generator buses

busgen: nGen by n 0-1 matrix

nBranch = 1991: number of branches in the network

edges: list of edges in the graph

Yft: cell of nBranch 2 by 2 matrices

incidentF, incidentT: nBranch by n 0-1 matrix

SDP relaxation: replace XXXXXXX in the model by

V == hermitian_semidefinite(n)

SOCP relaxation: replace XXXXXXX in the model by

for l = 1:size(edges,1)

[V(edges(l,1),edges(l,1)) V(edges(l,1),edges(l,2)); V(edges(l,2),edges(l,1)) V(edges(l,2),edges(l,2))] == hermitian_semidefinite(2)

end

cvx_solver mosek

cvx_precision default

cvx_begin

variable V(n,n) hermitian

variables pf(nBranch) qf(nBranch) pt(nBranch) qt(nBranch)

variables pG(nGen) qG(nGen)

minimize ( c2’*(pG.^2) + c1’*pG + sum(c0) + const )

subject to

% CONIC CONSTRAINTS

XXXXXXXXXXXXXXXXXX

% PF EQUATIONS

busgen’*pG - pL - diag(gs)*diag(V) == incidentF’*pf + incidentT’*pt

busgen’*qG - qL + diag(bs)*diag(V) == incidentF’*qf + incidentT’ qt*qt(l) su(l)] == hermitian_semidefinite(2)

% VOLTAGE LIMITS

Vl <= diag(V) <= Vu

% GENERATION LIMITS

pGl <= pG <= pGu

qGl <= qG <= qGu

% BRANCH CONSTRAINTS

for l=1:nBranch

% FLOW INJECTION

pf(l) + 1iqf(l) == conj(Yft{l}(1,1))V(from(l),from(l)) + conj(Yft{l}(1,2))V(from(l),to(l))

pt(l) + 1iqt(l) == conj(Yft{l}(2,1))V(to(l),from(l)) + conj(Yft{l}(2,2))V(to(l),to(l))

% FLOW LIMITS

if (su(l) ~= 0)

[su(l) pf(l) + 1iqf(l); pf(l) - 1iqf(l) su(l)] == hermitian_semidefinite(2)

[su(l) pt(l) + 1iqt(l); pt(l) - 1i

end

end

cvx_end