This glossary contains expressions available for manipulation, functions available for evaluation, and substitution rules all prefaced by ru.
These formulas contain mixed state and dual variables (IA systems, sec 5.2):
HWUY = Hamiltonian for the system in SYSDefIA.m . HWU = HWUY/.Y->G2[x,W,U]; HWY = HWUY/.U->g[z,Y]; HW = HWY/.Y->G2[x,W,U]; These formulas contain state variables only (IA systems): sHWUY = HWUY/.ruxz; sHWU = HWU/.ruxz; sHWY = HWY/.ruxz; sHW = HW/.ruxz; These formulas contain dual variables only (IA systems): dHWUY = HWUY//.rudual; dHWU = HWU//.rudual; dHWY = HWY//.rudual; dHW = HW//.rudual; |
ricd = Riccati from bounded real lemma for SISO systems (sec 5.1) CritW[x_,z_,b_] = value of W which makes Grad[sHW,W]=0(both IA and WIA systems). sHWo = max sHW (IA systems) W sHWoWIA = max sHW (WIA systems) W CritU[x_,z_] = value of U which makes Grad[sHWU,U]=0 (IA systems). RULES FOR CRITICAL VALUES: ruCritW = {W -> tp[B1[x]] ** tp[GEx[x, z]] + tp[D21[x]] ** tp[b[z]] ** tp[GEz[x, z]]}; ruCritU = {U -> -inv[e1[x]] ** tp[B2[x]] ** tp[GEx[x, z]] - inv[e1[x]] ** tp[D12[x]] ** C1[x]} |
THE DGKF RICCATIS
IAX[x_] = XX[x] ** (A[x] - B2[x] ** inv[e1[x]] ** tp[D12[x]] ** C1[x])+
(-tp[C1[x]] ** D12[x] ** inv[e1[x]] ** tp[B2[x]] + tp[A[x]]) ** tp[XX[x]] + tp[C1[x]] ** C1[x] + XX[x] ** (B1[x] ** tp[B1[x]] - B2[x] ** inv[e1[x]] ** tp[B2[x]]) ** tp[XX[x]] - tp[C1[x]] ** D12[x] ** inv[e1[x]] ** tp[D12[x]] ** C1[x] IAYI[x_] = YYI[x] ** (A[x] - B1[x] ** tp[D21[x]] ** inv[e2[x]]**C2[x]) + (-tp[C2[x]]**inv[e2[x]]**D21[x]**tp[B1[x]] + tp[A[x]])**tp[YYI[x]] + tp[C1[x]] ** C1[x] + YYI[x] ** (B1[x]** tp[B1[x]] - B1[x]**tp[D21[x]] ** inv[e2[x]] ** D21[x] ** tp[B1[x]]) ** tp[YYI[x]] - tp[C2[x]] ** inv[e2[x]] ** C2[x] k[x_,z_] = minimum in b of sHWo evaluated at a* and c* (see [BHW]) This is the 2 variable generalization of DGKF Riccati. Hopt[x,z,a,b] = min max sHWU, where you can specify functions a[z],b[z] U W |
ruc = c[z_]:> -inv[e1[z]]**(tp[B2[z]]**XX[z] + tp[D12[z]]**C1[z]);
rua = a[z_]:> A[z] + B2[z]**c[z] - b[z]**C2[z] + (B1[z]- b[z]**D21[z])**tp[B1[z]]**XX[z]//.ruc ; rublin= the rule in the linear case for the b in the central soln to the H-infinity control problem. ruaWIA = a[z_]:> AB[z,c[z]] - b[z]**C2[z] + (B1[z]- b[z]**D21[z])**tp[B1[z]]**XX[z]; Plug rua and ruc into the main Hamiltonian sHWo to get sHWo= k[x,z] + tp[bterm]**bterm which defines bterm. |
Linear Systems
Linear systems satisfying the DGKF simplifying assumption are special cases of an IA system. To take an expression in H∞ control which has been derived for an IA system and specialize it to linear systems apply
SubSym[expr,rulinearall]
|
where rulinearall is a long list of rules for specializing IA systems formulas described below:
ruGEXY={ruGEXY1,ruGEXY2}; where ruGEXY1=tp[GEx[x_,0]]:>tp[x]**inv[YY]; ruGEXY2=tp[GEx[x_,x_]]:>tp[x]**XX; rulinearall=Union[rulinearsys,ruGE1, ruGEXY,rulinearXY]; where rulinearsys={A[x_]:>A**x, B1[x_]:>B1, B2[x_]:>B2,C1[x_]:>C1**x,C2[x_]:>C2**x, D21[x_]:>D21,D12[x_]:>D12,a[x_]:>a**x, b[x_]:>b,c[x_]:>c**x,dd[x_]:>dd, e1[x_]:>e1, e2[x_]:>e2,tp[e1]->e1,tp[e2]->e2}; rulinearXY={XX[x_]:>XX**x,YY[p_]:>p**YY, YYI[x_]:>inv[YY]**x}; ruinvYY=YYI->inv[YY]; Lin[expr_]:= SubSym[expr,rulinearall]; Energy Ansatzes which are true for linear systems: rulinearEB = sets GEx[x,z], GEz[x,z] to be linear ruGEz0=GEz[x_,x_]:>0 Ansatz in [BHW] %(5.1): ruGE1=Flatten[{ruGEz0,SubSym[{ruGEz0,ruGEx1,ruGEz1},ruXXYYI]}]; where ruGEx1=GEx[x_,z_]:>GEx[x,x]+GEx[x-z,0]-GEx[x-z,x-z]; ruGEz1=GEz[x_,z_]:>-GEx[x-z,0]+GEx[x-z,x-z]; |
Homogeneous Systems:
ruhomog = {A[0]->0, C1[0]->0, C2[0]->0, a[0]->0, c[0]->0}; |
Doyle Glover Khargonekar Francis Simplifying Assumptions:
ruDGKFNL = Apply DGKF simplifying assumptions for IA systems ruDGKFlin = Apply DGKF simplifying assumptions for linear systems ruCRcDGKF=c[z_]:>-tp[B2[z]]**tp[XX[z]]; ruCRqDGKF=q[x_,z_]:>-tp[C2[x-z]]; ruaDGKF = a[z_]:>A[z]+B1[z]**tp[B1[z]]**tp[XX[z]] - B2[z]**tp[B2[z]]**tp[XX[z]] - b[z]**C2[z]+cheat[z]; ruaDGKF2=a[z_]:> AA1[z,z]-b[z]**C2[z]; |
CHANGE OF VARIABLES: Convert energy Hamiltonians from dual or mixed state/dual to state variables only: ruxz={p->GEx[x,z], PP->GEz[x,z]}; Convert energy Hamiltonian from dual or mixed state/dual to dual variables only: rudual={rudualx,rudualz}; where rudualx = x->IGE1[p,PP]; rudualy = z->IGE2[p,PP]; CHANGE OF NOTATION: rue = {tp[D12[x_]] ** D12[x_]:> e1[x], D21[x_] ** tp[D21[x_]] :> e2[x]} rubtoq=tp[GEz[x_,z_]]**b[z_]:>q[x,z] ruXXYYI={ruGEz0,ruXX, ruYYI} where ruXX = GEx[x_,x_]:>2*XX[x] ruYYI = GEx[x_,0]:>2*YYI[x] ruIAXYI={ruIAX,ruIAYI}; where ruIAX = replace terms linear in A or tp[A] using IAX[x]=0 (see 4.4b). ruIAYI= replace terms linear in A or tp[A] using IAYI[x]=0 (see 4.4c). FOR ENERGY ANSATZ EXPERIMENTATION AS IN [BHW]: EnergyGuess[ruleGE_] = generate sHWo with the Ansatz on the energy function given by ruleGE and a, b, and c are substituted out according to the RECIPE. EnergyGuess2[ruleGE,rulea] = same but a is substituted out by the user provided rulea. EnergyGuessDGKF[ruleGE_] = same with DGKF simplifying assumptions EnergyGuess2DGKF[ruleGE,ruaDGKF] = same with DGKF simplifying assumptions |