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.

 Akzeptierte Antwort

Omid
Omid am 18 Mai 2014

0 Stimmen

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.

Weitere Antworten (5)

Arkadiy Turevskiy
Arkadiy Turevskiy am 15 Mai 2014

0 Stimmen

This seems strange. Hard to diagnose without having access to your data. Can you share it? You can also contact technical support .
Dominik
Dominik am 19 Sep. 2014

0 Stimmen

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!
Mümtazcan
Mümtazcan am 19 Jul. 2016

0 Stimmen

Hello, I am having the same problem; have you ever solved it?

1 Kommentar

farid
farid am 21 Feb. 2018
hello to all friends I have the same problem.in fact, the value of gamma , k,CL, is empty matrix. the result is:gamma=[];k=[]; !!! can you help me? thanks a lot.

Melden Sie sich an, um zu kommentieren.

KARAN
KARAN am 5 Mär. 2018

0 Stimmen

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
farid
farid am 7 Mär. 2018

0 Stimmen

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.

Kategorien

Mehr zu Robust Control Toolbox finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 13 Mai 2014

Beantwortet:

am 7 Mär. 2018

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by