Talk:Beginning with CVX

From Wikimization

Revision as of 15:35, 5 February 2009 by Mtxu (Talk | contribs)
Jump to: navigation, search
lamda_W=eig(full(W))

Thanks a lot for all the ideas, they all are greats.

I think I'm wrong with this code, I would like to put the if - else - end with the another constraits, inside the cxv_begin, but the CVX don't let me doing it. Some ideas?

I don't know how to initialice Epsilon1 and Epsilon2. I'm trying different values.

Thanks a lot again.

Here is the new code:

%0)Initialization
clear all;
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=11;
Epsilon2=0.1;

if(lamda_W>=Epsilon1)
    if(lamda_H<=-Epsilon2)     para=1
    else para = 0
    end
else para =0
end

%while para==0
    %3)3
    [v_W,D] = eig( full ( W ) )
    [v_H,D] = eig( full ( H ) )
    
    v_W_1 = v_W( : , 1 ) / norm ( v_W ( : , 1 ) ) ;
    v_W_2 = v_W( : , 2 ) / norm ( v_W ( : , 2 ) ) ;
    v_W_3 = v_W( : , 3 ) / norm ( v_W ( : , 3 ) ) ;
    v_W_4 = v_W( : , 4 ) / norm ( v_W ( : , 4 ) ) ;
    
    v_H_1 = v_H( : , 1 ) / norm ( v_H ( : , 1 ) ) ;
    v_H_2 = v_H( : , 2 ) / norm ( v_H ( : , 2 ) ) ;
    v_H_3 = v_H( : , 3 ) / norm ( v_H ( : , 3 ) ) ;
    v_H_4 = v_H( : , 4 ) / norm ( v_H ( : , 4 ) ) ;

    %4a)4a
if ( Epsilon1 - lamda_W )>(lamda_H+Epsilon2)
    Caso=1 %For know where am I

    cvx_begin
    variables p1 p2 W(4,4) R(2,4)
    
    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)
     
        H=W*A_a'+A_a*W-B_a*R-R'*B_a'
        
        v_W'*W*v_W - Epsilon1*eye(2*n) == semidefinite(2*n);

cvx_end

else %4b)4b

    Caso = 2
    cvx_begin
    
    variables p1 p2 W(4,4) R(2,4)
    
    minimize (p1+p2)
    
    subject to
        
        W(1,1)>=Epsilon1
        W(2,2)>=Epsilon1
        W(1,1)<=p1
        W(2,2)<=p1
        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)

        H=W*A_a'+A_a*W-B_a*R-R'*B_a'
        
        Epsilon2*eye(2*n) + v_H'*H*v_H == -semidefinite(2*n);        

cvx_end
end


R
W=full(W)
K=R/W
Personal tools