Hi guys,

I’m using cvx with sdpt3 to solve following sdp problem (prb.N = 1220)

variable Pm(prb.N)

variable Ib(prb.N)

variable Pel(prb.N)

variable dm_f(prb.N)

variable X(prb.N+1)

variable U1(prb.N)

variable Te(prb.N)

variable Tm(prb.N)

variable Tb(prb.N)

dual variables s{prb.N}

expression INe1(prb.N)

expression INe2(prb.N)

expression INe3(prb.N)

expression INe4(prb.N)

expression INb1(prb.N)

expression INb2(prb.N)

expression INb3(prb.N)

expression IN1(prb.N)

expression IN2(prb.N)

expression IN3(prb.N)

minimize(sum(Pel))

subject to

Te(INe1|INe2) == 0;

Te(INe3) == (1 - U1(INe3)) .* Ttot(INe3);

Te >= 0;

Te <= Te_max;

Tb(INb1|INb2) == 0;

Tb(INb3) == (1 - U1(INb3)) .* Ttot(INb3);

Pel(INe1|INe2) == 0;

Pel(INe4) == be(INe4) .* Te(INe4) + ce(INe4);

U1(IN1) == -1;

U1 <= 1;

U1 >= -1;

Tm(IN1) == 0;

Tm(IN2) <= 0;

Tm(IN3) == U1(IN3) .* Ttot(IN3);

Tm >= Tm_min;

Tm <= Tm_max;

Pm(IN1) == 0;

Pm(IN3) >= am(IN3) .* square(Tm(IN3)) + bm(IN3) .* Tm(IN3) + cm(IN3);

Pm(IN3) <= par.V_oc .* Ib(IN3) - R_i .* square(Ib(IN3));

Ib(IN1) == 0;

Ib >= -I_max_dc;

Ib <= I_max_c;

X >= X_min;

X <= X_max;

X(1) == X_0;

X(prb.N+1) >= X_N;

for i=1:prb.N

s{i} : - Ib(i) .* dt ./ (Q_0 .* 3600) + X(i) == X(i+1);

end

(IN~ are some indices)

This is part of an iterative optimization algorithm which means that I have to run the same problem with different parameter values a couple of times. There is no problem with solving this. However, the computation time is quite long (about 20s from cvx_begin til cvx_end). This problem is taken from a paper which claims that parsing with cvx and solving with sedumi takes about 1-2s.

Is there any possibility to parse this problem with cvx without solving it. In a way that I don’t have to parse it every iteration. Or maybe somebody have an idea how to achieve a computation time about 1-2s?

The authors of the paper mentioned above are reliable! That’s why I’m quite sure, that it must be possible.

I would appreciate every kind of help.