hello everyone , I am using CVX to solve an SDP problem. CVX fails to solve the problem .The result is always a full rank matrix, and the constraint condition does not work. Is there any problem with setting it?
Here’s the code:
cvx_begin
variable W(mm,mm) semidefinite
variable V(mm,mm) semidefinite
xi=1.312210^(-13); %%% the average electrical noise power is ?98.82 dBm (= 1.312210^(-13) watt)
gamma0=10; %%% the AN power versus SINR threshold on Bob gamma0=10 (=10log(10^1)dB = 10dB)
gammak=1; %%% Eve’s SINR threshold gamma0=1 (= 10log(10^0)dB = 0dB)
minimize (trace(W)+trace(V) )
subject to
d1W(d1’) >= gamma0*(d1Vd1’+xi);
dEW(dE’) <= 1*(dEVdE’+xi);
for i=1:mm
W(i,i)+V(i,i)<=25;
end
cvx_end
From a quick glance at your data it looks like all coefficients in your problem are essentially zero, so you get a solution that is also essentially zero.
You cannot expect to get anything meaningful if all the input data to your problem are of order 1e-10. You probably want to rescale your data.
Thank you very much for your answer, but these coefficients are all model parameters of an actual communication system. How can we scale it so as not to change the actual performance of the system? Can you give an example to answer it in detail?
Whatever you change d1, dE to then V,W=0 is still a solution, since the xi is essentially zero so we can ignore it, the two main inequalities are homogenous, and the upper bound constraints with 25 are satisfied. Only you know your model well enough to know how deal with it.
Okay, thank you very much for your answers, I will try to transform the coefficients or variables .
By the way, do you know that constraints such as xlog(1+x) can be solved by CVX?
Thank you very much for your answer, but xlog(1+x/y) is different from mine. It contains two variables, but mine only has one. Can I use the rel_entr(y,x) function?