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
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