+++ title = "Interaction Analysis" author = ["Dehaeze Thomas"] draft = false category = "Control Theory" subcategory = "Multivariable Analysis" +++ Tags : Two main ways to evaluate the interaction: - Relative Gain Array - Structured Singular Value ## Relative Gain Array {#relative-gain-array} Imagine a 2x2 plant: \\[ G(s) = \begin{bmatrix} g\_{11}(s) & g\_{12}(s)\\\ g\_{21}(s) & g\_{22}(s) \end{bmatrix} \\] Now suppose a controller \\(k\_{1}(s)\\) is closed on the first loop. The new transfer function from \\(u\_2\\) to \\(y\_2\\) (while the first loop is closed) is : \begin{equation} y\_2 = g\_{22} \left[ 1 - \underbrace{\frac{g\_{21}g\_{12}}{g\_{11}g\_{22}}}\_{\phi} \underbrace{\frac{g\_{11} k\_{11}}{1 + g\_{11}k\_{11}}}\_{T\_{11}} \right] \end{equation} \\(\phi\\) is called the **interaction index**. \\(T\_{11}\\) is the complementary sensitivity of the first loop (equal to 1 in the bandwidth of the first controller). Therefore, we want \\(\phi \approx 0\\) to have no interaction. Similarly, the **relative gain** is defined as: \\[ \Lambda = \frac{1}{1 - \phi} \\] And we want \\(\Lambda \approx 1\\) to have no interaction. Note that the scaling of inputs or outputs of the MIMO plant has no effect on \\(\phi\\) or \\(\Lambda\\). The **relative gain array** is defined as: \\[ \Lambda(G) = G \star (G^{-1})^{T} \\] where \\(\star\\) means element wise multiplication. ```matlab RGA = G.*pinv(G.') ``` ## RGA-number {#rga-number} The RGA-number is a scalar measure of how far the RGA is from the identity matrix (i.e. from a plant without interaction): \begin{equation} \text{RGA-number} = \\| \Lambda(G) - I \\|\_{\text{sum}} = \sum\_{i,j} \left| \Lambda\_{ij} - \delta\_{ij} \right| \end{equation} with \\(\delta\_{ij}\\) the Kronecker delta, and \\(\\|\cdot\\|\_{\text{sum}}\\) the sum of the absolute values of all the elements. The RGA-number should be small around the crossover frequency of the decentralized controller, as this is where the interaction matters most. ```matlab RGA = G.*pinv(G.'); RGA_number = sum(sum(abs(RGA - eye(size(RGA))))); ``` For a plant evaluated over frequency, this is computed at each frequency point of the frequency response.