17. 離散時間系の最適レギュレータ

最適レギュレータは、制御理論において、システムの状態を効率的に制御するためのフィードバック制御法である。システムの性能指標(評価関数)を最小化しつつ、システムの安定性や性能を最適化することを目的とする。

最適レギュレータ問題

離散時間系の制御対象を$$x(k+1) =A x(k) + b u(k) \\ y(k) = c x(k)  \;\;\;\;\;\;\;\;\;\;\;\;\;\cdots \cdots(1)$$とするとき、評価関数$$J= \sum_{k=0}^\infty \left[ y^2(k) + r u^2(k) \right] \;\; \cdots(2)$$を最小化する制御入力\(u(k)\)を求める問題を最適レギュレータ問題という。 ここで、\(r\)は重み係数である。システムの平衡状態を零とすると、出力\(y(k)\)はその平衡状態からのズレである。最適レギュレータ問題では、このズレを速く平衡状態に戻すように\(u(k)\)を求めることになるが、一般に\(y(k)\)を小さくするためには、\(u(k)\)は大きくなる。従って、両方を考慮した評価関数\(J\)を考える必要がある。一般的に評価関数は、$$J = \sum_{k=0}^\infty \left[x^T(k)Qx(k) + r u^2(k) \right] \;\; \cdots(3)$$とされるが、\(Q = c c^T\)とおけば、式(2)と同じである。\(Q\)は準正定対称行列で重み行列である。

リッカチ代数方程式

次の定常状態における(時刻に依存しない)離散型リッカチ行列代数方程式$$P = A^T P A + c c^T - A^T P b (r + b^T P b)^{-1} b^T P A \;\;\cdots (4)$$を導入する。ここで、\(P\)は\(n \times n\) の行列で、\((A,b)\)が可制御、\((c,A)\)が可観測であれば、この方程式は、正定対称解\(P\)を持つ。ここで、入力\(u(k)\)のもとで、$$\lim_{k \rightarrow \infty} x(k) = 0$$が成立すると仮定する(つまり、システムが安定であるとする)。このとき、方程式(4)の正定解\(P\)に対して、$$\sum_{k=0}^\infty \Delta x^{T}(k) P x(k) = \{x^{T}(1) P x(1) - x^{T}(0) P x(0) \} + \{x^{T}(2) P x(2) - x^{T}(1) P x(1)\} \\ + \{x^{T}(3) P x(3) - x^{T}(2) P x(2)\} + \cdots = -x_0^{T} P x_0 \;\;\;\;\; \cdots (5)$$ となる。ただし、\(x_0^{T} P x_0 = x^{T}(0) P x(0)\)。$$\Delta x^{T}(k) P x(k) = x^{T}(k+1) P x(k+1) - x^{T}(k) P x(k)$$であり、これは式(1)より、$$\Delta x^{T}(k) P x(k) = [ A x(k) + b u(k)]^{T} P [A x(k) + b u(k)] - x^{T}(k) P x(k) \\ = x^{T}(k) (A^{T} P A - P)x(k) +x^{T}(k) A^{T} P b u(k) + u(k) b^{T} P A x(k) + u(k) b^{T}P b u(k)$$となる。この式の\( (A^{T} P A - P)\)に式(4)を代入すると、 $$\Delta x^{T}(k) P x(k) = x^{T}(k) \{ A^{T} P b(r + b^{T} Pb)^{-1} b^{T} P A - c c^{T}\} x(k) + 2u(k) b^{T} P A x(k) + u(k) b^{T}P b u(k) $$ ここで、\(\Theta = r + b^T P b\)とおき、\(y^2(k) = x^T(k) c c^T x(k)\)であることを考慮して、式を整理すると、$$\Delta x^{T}(k) P x(k) = -y^2(k) - r u^2(k) + [u(k) + x^T(k) A^TPb \Theta^{-1}] \Theta [u(k) + \Theta^{-1} b^T P A x(k)]$$となる。これを式(5)に代入すると、$$\sum_{k=0}^\infty [u(k) + x^T(k) A^TPb \Theta^{-1}] \Theta [u(k) + \Theta^{-1} b^T P A x(k)] - \sum_{k=0}^\infty[y^2(k) + r u^2(k)] = -x_0^T P x_0$$が得られる。よって、式(2)より、$$J = x_0^T P x_0 + \sum_{k=0}^\infty [u(k) + x^T(k) A^TPb \Theta^{-1}] \Theta [u(k) + \Theta^{-1} b^T P A x(k)] $$となる。\(P\)は正定行列なので、\(x_0^T P x_0 \gt 0\)である。従って、評価関数\(J\)を最小にする入力\(u\)は、上式の第2項を零にするものになるので、$$u(k) = -\Theta^{-1} b^T P A x(k) = -(r + b^T P b)^{-1} b^T P A x(k)$$で与えられる。つまり、最適レギュレータ問題の解\(u(k)\)は、状態フィードバックで実現できることを意味している。また、フィードバックゲインは、重み係数\(r\)、離散型リッカチ行列代数方程式の解\(P\)とで設計できることになる。なお、評価関数の最小値は、$$J_{min} = x_0^T P x_0$$である。

以上が離散時間系の最適レギュレータの設計法であるが、適切な重み係数の設定などは、シミュレーションなどを通して検討する必要がある。また、システムが複雑になると(\(A\)の次元が高い)行列計算が複雑になるので、Scilab、Matlabなどのツールを使うのが一般的である。これらのツールには、最適レギュレータの解を求める関数なども実装されているので、それらを活用するのが実践的であろう。但し、ここで解説した最適レギュレータの設計法は、一度確認しておくのが良いと思う。