# Talk:Beginning with CVX

(Difference between revisions)
 Revision as of 02:39, 6 February 2009 (edit)← Previous diff Revision as of 03:12, 6 February 2009 (edit) (undo)Next diff → 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. - 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? + Kwokwah That was my first idea (could be great if it works), but isn't possible to do one "if" inside the "cvx_begin - cvx_end" Because it isn't a convex problem. - I come work thinking on you idea. I think you idea it’s right and I’m making thinks wrong. + Michael Grant explains to me (I'm going to copy it's explanation): - I have a dude. + "Do make sure you understand that if-then statements are typically not + possible in CVX. In general such constraints will not be convex, and + CVX does not handle nonconvex problems. CVX requires not only that + problems be convex, but they must be constructed according to the very + specific rules outlined in the user guide. If those rules are not + satisfied then CVX rejects the model." + + I think I'm wrong with this code, I would like to put the "if" with the another constraits, inside the cxv_begin, but the CVX don't let me doing it. Some ideas? + + I think I’m making thinks wrong. I have a dude. The new code could be: The new code could be: Line 16: Line 25: 1º I calculate some variables, 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, + 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 if Line 54: Line 65: What do you think? Any idea? What do you think? Any idea? - Thanks a lot for all. + Thanks a lot for all, again. ----------------------------------------------------------------------- -----------------------------------------------------------------------

## Revision as of 03:12, 6 February 2009

```lamda_W=eig(full(W))
```

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

Kwokwah That was my first idea (could be great if it works), but isn't possible to do one "if" inside the "cvx_begin - cvx_end" Because it isn't a convex problem.

Michael Grant explains to me (I'm going to copy it's explanation):

"Do make sure you understand that if-then statements are typically not possible in CVX. In general such constraints will not be convex, and CVX does not handle nonconvex problems. CVX requires not only that problems be convex, but they must be constructed according to the very specific rules outlined in the user guide. If those rules are not satisfied then CVX rejects the model."

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

I think I’m making thinks wrong. I have a dude.

The new code could be:

```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º,
```

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)

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

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:

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

%4a)4a
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';
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

R
W=full(W)
K=R/W
```