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) |
---|