Problem with the solution of an LMI (Convex Optimization Problem) - No suitable solver found.

157 views
Skip to first unread message

Abdur Rehman

unread,
Dec 31, 2017, 3:59:34 AM12/31/17
to YALMIP
Hello,

I am facing a problem with the solution of an LMI. 

Following is the LMI along with its detail.

Where, 
A(hat) = State matrix (it is of the size 6x6 in my case)
B(hat) = input matrix (it is of the size 6x2 in my case)

1. Lyapunov matrices:
       P = PT > 0  (as you can see it is symmetrical)

2. There are two slack variables:
       G and Y

3. a positive scaler:
       e(epsilon) > 0

Problem:
I tried to solve this LMI, but I think there might be a problem with my approach. I tried almost every solver i.e., sdpt3, mosek, fmincon, sedumi etc. Every time it says, "solver not applicable".

Here is my approach to solve this problem:

Code:
P=sdpvar(nx,nx,'symmetric');   %6x6
G=sdpvar(nx,nx,'full');   %6x6     Slack Variable
Y=sdpvar(nu,nx,'full');    %6x2     Slack Variable 
e=sdpvar(1);           %A scaler
%This is the LMI
F1 = [Ahat*G+G'*Ahat'+Bhat*Y+Y'*Bhat'  (P-G+e*(G'*Ahat'+Y'*Bhat'))';   
      P-G+e*(G'*Ahat'+Y'*Bhat')         -e*(G+G')];

Constraints = [e>=0.0000000001*1 F1<=.00000000001 -P<=0.000000001];       
 
options = sdpsettings('savesolveroutput',1,'verbose',1,'solver','mosek','debug',1);
optimize(Constraints,e,options);

    
I would be grateful to you, if you can identify my fault in the above approach.

Kind Regards
Abdur Rehman.

Johan Löfberg

unread,
Dec 31, 2017, 4:24:52 AM12/31/17
to YALMIP
you have a product between e and G, hence F1 is not an LMI.


and you dont want F1<=eps, you want F1 <=eps*I etc.

Johan Löfberg

unread,
Dec 31, 2017, 4:25:55 AM12/31/17
to YALMIP
and I'm just guessing it is quasi-convex. You have to prove that to use bisection. otherwise, just grid in e

Abdur Rehman

unread,
Dec 31, 2017, 5:11:07 AM12/31/17
to YALMIP
Thank you for the help.

Actually e is a scaler here. So a positive scaler thing is being multiplied by Matrix G. I think that doesn't make it Bi-linear matrix then. 

Can you please guide me, How should I define a scaler here. 

I have used sdpvar command to define this scaler. (is it the wrong way to define the scaler?)


In code:
e=sdpvar(1);           %A scaler

Moreover, I also have guessed that I need to minimize e. Actually I need slack variables i.e., G and Y for my calculations. Thats why I put e it in place of my objective.
optimize(Constraints,e,options);

Regards

Abdur Rehman

unread,
Dec 31, 2017, 5:14:11 AM12/31/17
to YALMIP
This screen shot is from the Yalmip website.


Johan Löfberg

unread,
Dec 31, 2017, 5:28:02 AM12/31/17
to YALMIP
Then you think wrong.

Johan Löfberg

unread,
Dec 31, 2017, 5:29:04 AM12/31/17
to YALMIP
I have no idea what you are trying to say with that. A matrix of size 1x1 is called a scalar, yes.

Abdur Rehman

unread,
Dec 31, 2017, 5:48:53 AM12/31/17
to YALMIP
Thank You for your help sir,

I think I got a clue.

Please see the attached research paper, page 2, Lemma 4:

I have now modified the code and set 

e=1    as a fixed value. and now its working. 


Can you please suggest me, what could be the best value for e.


Once again Thank you.

Regards.


40.pdf

Johan Löfberg

unread,
Dec 31, 2017, 6:02:05 AM12/31/17
to YALMIP
As I said, you either use bisection (if quasi-convex), or you simply grid in e and look for the smallest possible which still renders the problem feasible

Abdur Rehman

unread,
Dec 31, 2017, 6:13:49 AM12/31/17
to YALMIP
Actually I don't know how to grid in e.
How can I grid in e?

The other option of using Bisection is ruled out, since I am sure the problem is not quasi-convex.

Regards

Johan Löfberg

unread,
Dec 31, 2017, 6:46:21 AM12/31/17
to YALMIP
you simply fix e and try different values, and pick the best. 

for e = 0:0.01:10

...

end

to speed up things, you can use the optimizer command with e as a parameter
Reply all
Reply to author
Forward
0 new messages