control with stable controllers
This short illustration shows how to use hinfstruct to enforce stability of controllers in solving an problem.
Problem borrowed from "On the Stable Controller Parameterization Under Sufficient Condition", Youngjin Choi and Wan Kyun Chung, IEEE TAC vol. 46, no. 10, 2001. See also "Remarks on Strong Stabilization and Stable H-infinity Controller Design Suat Gumussoy and Hitay Ozbay IEEE TAC, vol. 50, no. 12, 2005, for a review of different techniques.
Contents
Build standard form
s = tf('s');
G = (s^2+0.1*s+0.1)/((s-0.1)*(s-1)*(s^2+2*s+3)); ny =1; nu =1; nx = 4;
[a,b,c,d] = ssdata(G) ;
P = ss(a , [b zeros(nx,1) b], [c;zeros(1,nx);c], [0 1 0;0 0 1; 0 1 0]) ;
Compute full-order optimal controller with hinfsyn
[K,clp,gamHinfsyn] = hinfsyn(P,ny,nu) ;
Show that full-order controller is unstable
max( real(eig(K)) ) ,
ans = 0.1995
Use hinfstruct to synthesize reduced-order stable controller
Include controller stability constraints as a fictitious performance channel
k = 3 ; % prescribed controller order C0 = ltiblock.ss('C0',k,1,1); CL0 = lft(P, C0); H0 = blkdiag( CL0 , 0*C0) ; % fictitious performance channel
Solve problem with hinfstruct
[H,gam] = hinfstruct(H0) ; Css = ss(H.Blocks.C0) ;
Final: Peak gain = 16.3, Iterations = 149 Spectral abscissa -2.61e-07 is close to bound -1e-07
Check stability of reduced-order controller and achieved norm
max( real(eig(Css)) ) , norm( lft(P , Css) , inf)
ans = -2.6128e-07 ans = 16.2138
Compute stable controller of full order
C0 = ltiblock.ss('C0',order(P),1,1); CL0 = lft(P, C0); H0 = blkdiag( CL0 , 0*C0) ; % fictitious performance channel
Solve problem with hinfstruct
[H,gamHinfstruct] = hinfstruct(H0) ; Css = ss(H.Blocks.C0) ;
Final: Peak gain = 16.2, Iterations = 87 Spectral abscissa -1.08e-07 is close to bound -1e-07
Check controller stability
max( real( eig( Css ) ) ),
ans = -1.0841e-07
Compare achieved H-infinity norms with full-order unstable and stable controllers
fprintf(1,'\n\n HINFSYN: %6.2f HINFSTRUCT: %6.2f \n\n', gamHinfsyn, gamHinfstruct);
HINFSYN: 12.02 HINFSTRUCT: 16.25