[37] | 1 | clear all; |
---|
| 2 | close all; |
---|
| 3 | |
---|
| 4 | N = 5; |
---|
| 5 | n_lower = ones(N,1); |
---|
| 6 | n_upper = 100*ones(N,1); |
---|
| 7 | x_lower = ones(N,1); |
---|
| 8 | x_upper = 4*ones(N,1); |
---|
| 9 | |
---|
| 10 | h = [0 0 0 0 0 0]'; |
---|
| 11 | E = [1 0 0 0 0; |
---|
| 12 | 0 1 1 0 0; |
---|
| 13 | 0 0 1 0 0; |
---|
| 14 | 0 1 1 1 0; |
---|
| 15 | 0 0 1 1 0; |
---|
| 16 | 0 0 0 1 0]; |
---|
| 17 | |
---|
| 18 | m = 2; |
---|
| 19 | tl = 2; |
---|
| 20 | Pl = 0.2; |
---|
| 21 | NL = 50; |
---|
| 22 | eta = 1.1; |
---|
| 23 | |
---|
| 24 | DPx = [1000 1000 1000 1000 1000]'; |
---|
| 25 | d_lower = [1 1 1 1 1]'; |
---|
| 26 | d_upper = [1000 1000 1000 1000 1000]'; |
---|
| 27 | p0 = randn(5,1)+[0 0 0 0 0]'; |
---|
| 28 | d0 = 1+[0 0 0 0 0]'; |
---|
| 29 | |
---|
| 30 | Result = sdpvar(1,1); |
---|
| 31 | Pt = sdpvar(1,1); |
---|
| 32 | n = sdpvar(N,1); |
---|
| 33 | x = sdpvar(N,1); |
---|
| 34 | D = sdpvar(N,1); |
---|
| 35 | P = sdpvar(N,1); |
---|
| 36 | fs = sdpvar(1,1); |
---|
| 37 | |
---|
| 38 | obj = (Result^m)*Pt; |
---|
| 39 | |
---|
| 40 | F = set( Result^-1*(1+1*(h'*(E*n)))*fs^-1 <= 1 ); |
---|
| 41 | % for i = 1:N |
---|
| 42 | % F = F + set( n_lower(i) <= n(i) ); |
---|
| 43 | % F = F + set( n(i) <= n_upper(i) ); |
---|
| 44 | % F = F + set( x_lower(i) <= x(i) ); |
---|
| 45 | % F = F + set( x(i) <= x_upper(i) ); |
---|
| 46 | % F = F + set( n(i)^-1*D(i) + tl <= x(i)/fs ); |
---|
| 47 | % F = F + set( (DPx(i)-p0(i)*d0(i))*D(i)^-1*P(i)^-1+p0(i)*P(i)^-1+d0(i)*D(i)^-1 <= 1 ); |
---|
| 48 | % F = F + set( d_lower(i) <= D(i) ); |
---|
| 49 | % F = F + set( D(i) <= d_upper(i) ); |
---|
| 50 | % end |
---|
| 51 | F = F + set( n_lower <= n ); |
---|
| 52 | F = F + set( n <= n_upper ); |
---|
| 53 | F = F + set( x_lower <= x ); |
---|
| 54 | F = F + set( x <= x_upper ); |
---|
| 55 | F = F + set( n.^-1.*D + tl <= x./fs ); |
---|
| 56 | F = F + set( (DPx-p0.*d0).*(D.^-1).*(P.^-1)+p0.*(P.^-1)+d0.*(D.^-1) <= 1 ); |
---|
| 57 | F = F + set( d_lower <= D); |
---|
| 58 | F = F + set( D <= d_upper); |
---|
| 59 | |
---|
| 60 | % What I wanted to do in the previous version |
---|
| 61 | F = F + set( Pt^-1*(x'*P)*fs + Pt^-1*((n.^eta)'*x)*NL*Pl*fs <= 1 ); |
---|
| 62 | |
---|
| 63 | % % Temporary solution |
---|
| 64 | % temp = sdpvar(N,1); |
---|
| 65 | % for i = 1:N |
---|
| 66 | % temp(i) = n(i)^eta; |
---|
| 67 | % end |
---|
| 68 | % F = F + set( Pt^-1*(x'*P)*fs + Pt^-1*(temp'*x)*NL*Pl*fs <= 1 ); |
---|
| 69 | |
---|
| 70 | solvesdp(F,obj,sdpsettings('verbose',1)) |
---|
| 71 | |
---|
| 72 | disp('Result') |
---|
| 73 | double(Result) |
---|