Talk:Beginning with CVX
From Wikimization
(Difference between revisions)
| (2 intermediate revisions not shown.) | |||
| Line 6: | Line 6: | ||
Thanks a lot for all the ideas, they all are greats. | Thanks a lot for all the ideas, they all are greats. | ||
| - | + | The code still not working. I think I’m making thinks wrong (sure). I have a dude. | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | I think I’m making thinks wrong. I have a dude. | + | |
The new code could be: | The new code could be: | ||
| - | <pre> | ||
| - | 1º I calculate some variables, | ||
| - | |||
| - | 2º with one if (with depends to variables point 1º) I select one linear constrint depending | ||
| - | value of variables in 1º and I make all the: minimize…subjet to with apropiate constraints, convex | ||
| - | and the one linear, | ||
| - | |||
| - | if | ||
| - | cvx_begin | ||
| - | ... | ||
| - | cvx_end | ||
| - | else | ||
| - | cvx_begin | ||
| - | ... | ||
| - | cvx_end | ||
| - | end | ||
| - | |||
| - | 3ºIf there is not solution STOP, if there is, go to 1º, | ||
| - | </pre> | ||
| - | I’ve tried making this, I make: 1º, 2, 3º; return to 1º,2º, 3º And here the CVX says that there is not solution, that’s the reason for trying to keep inside the if – else. | ||
| - | |||
| - | My dude is, why CVX says there is not solution, it could be because the iteration (making steps 1-2-3) before is the correct. For explain (I know my English isn’t the best, and it’s hard for me to explain and for you to read) | ||
| - | <pre> | ||
| - | One iteracion (steps 1, 2, 3) | ||
| - | |||
| - | All well | ||
| - | |||
| - | Save data = DATA1 | ||
| - | |||
| - | One iteracion (steps 1, 2, 3) | ||
| - | |||
| - | All well | ||
| - | |||
| - | Save data = DATA2 | ||
| - | |||
| - | One iteracion (steps 1, 2, 3) | ||
| - | |||
| - | Wrong, no solution | ||
| - | |||
| - | Correct data = DATA2 | ||
| - | </pre> | ||
| - | What do you think? Any idea? | ||
| - | |||
| - | Thanks a lot for all, again. | ||
| - | |||
| - | ----------------------------------------------------------------------- | ||
| - | |||
| - | I don't know how to initialice Epsilon1 and Epsilon2. I'm trying different values. | ||
| - | |||
| - | Thanks a lot again. | ||
| - | |||
| - | Here is the new code: | ||
<pre> | <pre> | ||
%0)Initialization | %0)Initialization | ||
clear all; | clear all; | ||
| + | |||
| + | %cvx_setup | ||
n=2; m=1; | n=2; m=1; | ||
A_a=3*eye(2*n,2*n) | A_a=3*eye(2*n,2*n) | ||
| - | B_a=4*eye(2*n,2*m) | + | B_a=4*eye(2*n,2*m) |
%1)1 | %1)1 | ||
| Line 92: | Line 29: | ||
lamda_W=min(eig(full(W))) | lamda_W=min(eig(full(W))) | ||
lamda_H=max(eig(H)) | lamda_H=max(eig(H)) | ||
| - | + | Epsilon1=1e-6; | |
| - | Epsilon1= | + | Epsilon2=1e-6; |
| - | Epsilon2= | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
%3)3 | %3)3 | ||
| - | [v_W,D] = eig(full(W)) | + | [v_W,D] = eig( full ( W ) ) |
| - | [v_H,D] = eig(full(H)) | + | [v_H,D] = eig( full ( H ) ) |
| + | |||
| + | cvx_begin | ||
| + | variables p1 p2 W(4,4) R(2,4) | ||
| + | if ( Epsilon1 - lamda_W )>(lamda_H+Epsilon2) CK=v_W'*W*v_W - Epsilon1*eye(2*n) ; | ||
| + | else CK=-Epsilon2*eye(2*n) - v_H'*H*v_H ; | ||
| + | end | ||
| + | |||
| + | minimize (p1+p2) | ||
| + | |||
| + | subject to | ||
| - | + | W(1,1)<=p1 | |
| - | + | W(2,2)<=p1 | |
| - | + | W(1,1)>=Epsilon1 | |
| - | + | W(2,2)>=Epsilon1 | |
| - | + | W(3,3)==W(1,1) | |
| - | + | W(4,4)==W(2,2) | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | R(1,1)>=-p2 | |
| - | + | R(1,1)<=p2 | |
| - | + | R(2,3)==R(1,1) | |
| - | + | R(1,2)>=-p2 | |
| - | + | R(1,2)<=p2 | |
| - | + | R(2,4)==R(1,2) | |
| + | |||
| + | CK == semidefinite(2*n); | ||
| - | H=W*A_a'+A_a*W-B_a*R-R'*B_a'; | ||
| - | if (Epsilon1 - lamda_W) > (lamda_H + Epsilon2) | ||
| - | v_W'*W*v_W - Epsilon1*eye(2*n) == semidefinite(2*n); | ||
| - | else | ||
| - | Epsilon2*eye(2*n) + v_H'*H*v_H == -semidefinite(2*n); | ||
| - | end | ||
cvx_end | cvx_end | ||
| + | |||
| + | lamda_W = min ( eig ( full ( W ) ) ) | ||
| + | lamda_H = max ( eig ( full ( H ) ) ) | ||
R | R | ||
W=full(W) | W=full(W) | ||
K=R/W | K=R/W | ||
| + | |||
</pre> | </pre> | ||
Current revision
lamda_W=eig(full(W))
Thanks a lot for all the ideas, they all are greats.
The code still not working. I think I’m making thinks wrong (sure). I have a dude.
The new code could be:
%0)Initialization
clear all;
%cvx_setup
n=2; m=1;
A_a=3*eye(2*n,2*n)
B_a=4*eye(2*n,2*m)
%1)1
W=eye(4)
R=(zeros(2,4))
%2)2
H=W*A_a'+A_a*W-B_a*R-R'*B_a'
lamda_W=min(eig(full(W)))
lamda_H=max(eig(H))
Epsilon1=1e-6;
Epsilon2=1e-6;
%3)3
[v_W,D] = eig( full ( W ) )
[v_H,D] = eig( full ( H ) )
cvx_begin
variables p1 p2 W(4,4) R(2,4)
if ( Epsilon1 - lamda_W )>(lamda_H+Epsilon2) CK=v_W'*W*v_W - Epsilon1*eye(2*n) ;
else CK=-Epsilon2*eye(2*n) - v_H'*H*v_H ;
end
minimize (p1+p2)
subject to
W(1,1)<=p1
W(2,2)<=p1
W(1,1)>=Epsilon1
W(2,2)>=Epsilon1
W(3,3)==W(1,1)
W(4,4)==W(2,2)
R(1,1)>=-p2
R(1,1)<=p2
R(2,3)==R(1,1)
R(1,2)>=-p2
R(1,2)<=p2
R(2,4)==R(1,2)
CK == semidefinite(2*n);
cvx_end
lamda_W = min ( eig ( full ( W ) ) )
lamda_H = max ( eig ( full ( H ) ) )
R
W=full(W)
K=R/W