Actually, I accidentally solved the problem but still I do not know what was the reason. My matrix A is full rank, the system is both controllable and observable. I made a little tweak and problem was resolved. I gave very very small values to a few zero elements of matrix A and it worked.
Get empty results from hinfsyn
47 views (last 30 days)
Show older comments
Hi all,
I have used the hinfsyn function several times before without any problem. But recently I am working on a new project that I decided to implement H∞ robust controller. For some reason, the code returns empty values of K, CL, GAM, and INFO according to the following syntax:
[K,CL,GAM,INFO] = hinfsyn(P,NMEAS,NCON,'GMIN',gamma_min);
where P is my system matrices based on hinfsyn help, NMEAS is the number of measured outputs, NCON is the number of control inputs, and gamma_min is my desired minimum gamma.
As said above, I do not know why it keeps giving me absolutely empty values without any errors or warnings!
Has anyone had similar problem before? What could potentially be wrong?
Thanks and I look forwarding to getting some help.
0 Comments
Accepted Answer
More Answers (5)
Arkadiy Turevskiy
on 15 May 2014
This seems strange. Hard to diagnose without having access to your data. Can you share it? You can also contact technical support .
0 Comments
Dominik
on 19 Sep 2014
Hey friends, I've got the same problem but can't figure out, how to solve it. I have a system matrix G with a lot of zero-entries and the non-zero entries all of the form
G(i,j) = +-k/s^2
or
G(i,j) = +-k/s^4.
The system is observable and controllable. I shift the 0-poles by -.001 in order to fulfill the necessary conditions and it works fine if I try it for single transfer functions. But as soon as I plug in my whole transfer matrix G, the code will run and afterwards return an empty controller
K = []
without any explanation or error message. What am I doing wrong? Here's some code that reproduces the problem:
s = tf('s');
% Weighting Functions
W1= 0.1 * (s+100)/(100*s+1) .* eye(6);
W2 = 10 * eye(4);
W3 = [];
% Actual System
G0 = [0,318.3/s^2,0,0;0,0,318.3/s^2,0;0,0,0,848.8/s^2;0,0,-3270/s^4,0;0,3270/s^4,0,0;-10/s^2,0,0,0];
% Tweaked System
G = [0,318.3/(s^2+0.002*s+1e-06),0,0;0,0,318.3/(s^2+0.002*s+1e-06),0;0,0,0,848.8/(s^2+0.002*s+1e-06);0,0,-3270/(s^4 + 0.004*s^3 + 6e-06*s^2 + 4e-09*s + 1e-12),0;0,3270/(s^4 + 0.004*s^3 + 6e-06*s^2 + 4e-09*s + 1e-12),0,0;-10/(s^2+0.002*s+1e-06),0,0,0];
% Mixed Sensitivity
[K,CL,GAM,INFO] = mixsyn(G, W1, W2, W3)
Any help would be greatly appreciated!
0 Comments
KARAN
on 5 Mar 2018
I faced a similar issue. Converting all subsystems that form the generalized plant to state-space representation fixed the issue. In other words, weights and plant were changed to ss from tf, before forming the GenP. Please do reply if you know why this happened.
Working code:
% begin code
s = tf('s');
P = (-s+10)/(s^2-0.5*s+1);
W1 = 0.5*(s+4.5)/(s+0.01);
W2 = 0.5*((s+10)/(s+2))^2;
W3 = [];
% Convert to ss
P = ss(P);
W1 = ss(W1);
W2 = ss(W2);
W3 = ss(W3);
[n_e_orig,n_u]=size(P); % Original plant
systemnames='P W1 W2';
inputvar = ['r(1); u(1)'];
outputvar=['[W1; W2; r-P]'];
input_to_P='[u]';
input_to_W1='[r-P]';
input_to_W2='[u]';
cleanupsysic='yes';
GenP=sysic;
[K_hinfsyn,CL,GAM,info]=hinfsyn(GenP,n_e_orig,n_u)
% end code
Problematic code:
% begin code
s = tf('s');
P = (-s+10)/(s^2-0.5*s+1);
W1 = 0.5*(s+4.5)/(s+0.01);
W2 = 0.5*((s+10)/(s+2))^2;
W3 = [];
[n_e_orig,n_u]=size(P); % Original plant
systemnames='P W1 W2';
inputvar = ['r(1); u(1)'];
outputvar=['[W1; W2; r-P]'];
input_to_P='[u]';
input_to_W1='[r-P]';
input_to_W2='[u]';
cleanupsysic='yes';
GenP=sysic;
[K_hinfsyn,CL,GAM,info]=hinfsyn(GenP,n_e_orig,n_u)
% end code
0 Comments
farid
on 7 Mar 2018
Your problem is a bit unusual, but my problem was due to the incorrect adjustment of the weights. Weights should be adjusted individually, it is the best.
0 Comments
See Also
Categories
Find more on H-Infinity Synthesis in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!